Am 10.07.2018 um 19:48 schrieb Urs Liska:
This seems to confirm that I should *not* break out of the for-each
loop that iterates over all-grobs in process-acknowledged.
Does that mean that resetting the all-grobs list in
start-translation-timestep is the right approach#
It's obviously not: while it reliably reduces processing time to what it
should be it equally reliably misses all annotations except on the very
first timestep.
What my engraver now does is:
* initialize all-grobs with #'()
* start-translation-timestep:
reset all-grobs to #'()
* acknowledgers:
prepend grob to all-grobs
* process-acknowledged
- iterate over all-grobs
- if an annotation is found, reset all-grobs to #'()
The last behaviour is necessary because process-aknowledged is called
multiple times and only in a later call the annotations are actually
attached to the grobs
I really don't see why this does not work. If the annotation is on the
first note of the score it gets caught, otherwise it's overlooked. But
debug printing indicates that in the process-acknowledged invocations
all the required grobs are present in the all-grobs list.
I have now done yet another experiment: process annotations in the
stop-translation-timestep clause, assuming that *then* all the tweaks
must have finally arrived at the grobs. This *seems* to work properly,
and expectedly it further reduces the number of times the all-grobs list
is iterated (i.e. exactly once per timestep.
From what I have now come to understand about the process this actually
seems like the right place to process the annotations. However, there's
one more thing I'd like to ask about: Processing the annotation involves
setting the grob's 'color property. In the engraver tutorial it is
stated that in this timestep one can *read* properties, "possibly" set
context properties based on them but that one must not create new grobs.
So it is not explicitly forbidden to set grob properties but the
language is pretty discouraging in that respect. OTOH I don't see how
setting a property like 'color might cause conflicts, especially not the
types of cleanup conflicts with other engravers.
Any opinions on the last question?
Thanks
Urs
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user