On Oct 26, 2013, at 10:51 AM, Bric <address@hidden> wrote:
can someone help scope out the task of adding semantically sound unique
identifiers to the svg elements?
Such that the id bears info on, at least, the staff, (maybe bar), and
note/chord index (consecutive integer index, for instance)
the "output-svg.scm" script has various routines to build the svg
elements/tags/attributes, and these are implemented by other scm scripts (e.g.,
"round-filled-box")...
Before I spend hours (days?) trying to figure out the precise subroutine
chain/tree , perhaps someone can lead me directly to the top-level code that
feeds lilypond info into these scripts? And whereby one can feed staff/movement
info, along with note index down to the final svg output?
And is this a realistic goal, I wonder? I think even just identifying CLASS information in the
"id=..." attribute might help. Just to set the stem "rect" apart from the staff line
"rect", for instance, would already be an improvement; but, of course, I prefer even more
specifics, as I described above.
thanks.
There is a grob property that is called "id" that is called far downstream
(right when the backends are getting the last information about the grobs before drawing
them). That means that, if you create a callback for this property, you can feed it all
sorts of info. The resulting SVG object will be wrapped in a group with this id.
For example…
\version "2.17.30"
#(define (note-number grob)
(string-concatenate
(list
"NoteHead/"
(number->string
(ly:pitch-semitones
(ly:event-property (ly:grob-property grob 'cause) 'pitch))))))
\relative c' {
\override NoteHead.id = #note-number
a
}
Then
lilypond -dbackend=svg yourfilename.ly
Then open the SVG and look for id="NoteHead/-3"
Cheers,
MS