On Oct 26, 2013, at 10:51 AM, Bric <[email protected]> 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
_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to