2 % WARNING: don't leave blank lines in the PS-code; they are
3 % transformed into \par
7 % Should put in a lily-ps.ps header?
12 % header info (macros/defs, etc) should go into a \special{! ... },
13 % note the ! sign. See dvips.info for details.
17 % /foo { operatorname } bind def
19 % ``compiles'' operatorname binding in the body of foo, making
20 % the code faster, and more reliable (less flexible)
23 % transplant a TeX dimension into the PS output.
24 \def\PSsetTeXdimen#1{\expandafter\special{! /#1 (\the\csname #1\endcsname) deftexdimen}}
26 \def\turnOnPostScript{%
28 % This sets CTM so that you get to the currentpoint
29 % by executing a 0 0 moveto
30 \special{ps: @beginspecial @setspecial ##1 @endspecial}
33 % width, slope, height
35 \special{! % round cappings
39 2 div /beam_thick exch def
42 beam_slope beam_wd mul /beam_ht exch def
43 0 beam_thick neg moveto
44 beam_wd beam_ht rlineto
45 0 beam_thick 2 mul rlineto
49 % PS helper: convert (0.2pt) to the token 0.2
50 /settexdimen { /thestring exch def
51 thestring 0 thestring length 2 sub
63 \PSsetTeXdimen{staffrulethickness}
64 \PSsetTeXdimen{staffheight}
68 staffrulethickness setlinewidth
73 cresc_wd cresc_cont moveto
76 cresc_wd cresc_cont neg moveto
83 staffrulethickness setlinewidth
89 cresc_wd cresc_ht lineto
91 0 cresc_cont neg moveto
92 cresc_wd cresc_ht neg lineto
97 1 copy mul exch 1 copy mul add sqrt
101 staffrulethickness setlinewidth
105 staffheight 2 div /plet_gapx exch def
106 plet_dy plet_dx div plet_gapx mul /plet_gapy exch def
107 staffheight 4 div dir mul /plet_h exch def
111 plet_dx plet_gapx sub 2 div
112 plet_dy plet_gapy sub 2 div plet_h add lineto
113 plet_dx plet_gapx add 2 div
114 plet_dy plet_gapy add 2 div plet_h add moveto
115 plet_dx plet_dy plet_h add lineto
116 plet_dx plet_dy lineto
120 staffheight 2 div /slurhtlimit exch def
123 staffrulethickness setlinewidth
134 \def\turnOnExperimentalFeatures{%
135 % draw a slur in embedded postscript