Hi Everyone,

I am trying add a feature to Lilypond but I have looked through the code a
fair amount and really have no idea what is going on. I'm hoping someone may
be able to give me some pointers (no pun intended).

I am hoping to modify Lilypond so that a 'named destiation' pdfmark may be
included in the postscript ouptut for each bar number. The aim is to be able
to jump to any place in the music according to bar number. ie. going to the
named destination 'bar.12' would move the music to the twelth bar.

>From my very limited understanding of Lilypond and postscript I think I
would need to write out a pdfmark line to the postscript on the correct
page, and in that line I would need to include the bar number and it's x and
y coordinates.

Could someone maybe suggest which areas of the code I would need to
understand to achieve this, and how I might go about it?

I have been unable to find a good description of how lilypond works
internally (at least in terms of laying out the music in postscript).

Any help would be appreciated, thanks.

Amiel

----------------------
Below is a few notes about what I have seen and have been trying so far.

I have been reading about pdfmarks and have added a new postscript function
to create the required pdfmark in music-drawing-routines.ps  (based on the
mark_URI entry).
---------------
/mark_DEST_xy
{   /name exch def
    /left exch def
    /top exch def
    [ /Dest name
      /View [ /XYZ x y NULL ]
    /DEST pdfmark
} bind def
----------------

I see that a mark_URI line is created in ouput-ps.scm like:
----------------
          (ly:format "~4f ~4f ~4f ~4f (textedit://~a:~a:~a:~a) mark_URI\n"
                 (+ (car offset) (car x-ext))
                 (+ (cdr offset) (car y-ext))
                 (+ (car offset) (cdr x-ext))
                 (+ (cdr offset) (cdr y-ext))

                 ;; Backslashes are not valid
                 ;; file URI path separators.
                 (ly:string-percent-encode
                   (ly:string-substitute "\\" "/" file))

                 (cadr location)
                 (caddr location)
                 (cadddr location))
-----------------
So from that I figure I will probably need to have some code in
output-ps.scm
to create the pdfmark in the ps file such as:

   (ly:format "~4f ~4f bar.~l mark_DEST_xy\n"
                 (<top>)
                 (<left>)
                 (<current bar number>))

where the <vars> are replaced by scheme which returns the relevent values.

I have no idea how to get these required values, or where to put this code
snippet.
_______________________________________________
lilypond-devel mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/lilypond-devel

Reply via email to