--- /dev/null
+%!PS-Adobe-1.0: lily.ps
+%
+staffrulethickness /stafflinethickness exch def
+%
+% round cappings
+1 setlinecap
+%
+/draw_beam % width slope thick
+{
+ 2 div /beam_thick exch def
+ /beam_slope exch def
+ /beam_wd exch def
+ beam_slope beam_wd mul /beam_ht exch def
+ 0 beam_thick neg moveto
+ beam_wd beam_ht rlineto
+ 0 beam_thick 2 mul rlineto
+ 0 beam_thick lineto
+ closepath fill
+} bind def
+%
+/draw_decresc
+{
+ stafflinethickness setlinewidth
+ /cresc_cont exch def
+ /cresc_ht exch def
+ /cresc_wd exch def
+%
+ cresc_wd cresc_cont moveto
+ 0 cresc_ht lineto
+ stroke
+ cresc_wd cresc_cont neg moveto
+ 0 cresc_ht neg lineto
+ stroke
+} bind def
+%
+/draw_cresc
+{
+ stafflinethickness setlinewidth
+ /cresc_cont exch def
+ /cresc_ht exch def
+ /cresc_wd exch def
+%
+ 0 cresc_cont moveto
+ cresc_wd cresc_ht lineto
+ stroke
+ 0 cresc_cont neg moveto
+ cresc_wd cresc_ht neg lineto
+ stroke
+} bind def
+%
+/lily_distance
+{
+ 1 copy mul exch 1 copy mul add sqrt
+} bind def
+%
+stafflinethickness 1.2 mul /plet_t exch def
+/draw_plet
+{
+ plet_t setlinewidth
+% urg: the only Level-2 PS, check effect in print
+% true setstrokeadjust
+ 1 setlinecap
+ 1 setlinejoin
+ /dir exch def
+ /plet_dy exch def
+ /plet_dx exch def
+ staffheight 2 div /plet_gapx exch def
+ plet_dy plet_dx div plet_gapx mul /plet_gapy exch def
+ staffheight 4 div dir mul /plet_h exch def
+%
+ 0 0 moveto
+ 0 plet_h lineto
+ plet_dx plet_gapx sub 2 div
+ plet_dy plet_gapy sub 2 div plet_h add lineto
+ plet_dx plet_gapx add 2 div
+ plet_dy plet_gapy add 2 div plet_h add moveto
+ plet_dx plet_dy plet_h add lineto
+ plet_dx plet_dy lineto
+ stroke
+} bind def
+%
+/draw_slur
+{
+ stafflinethickness setlinewidth
+ moveto
+ curveto
+ lineto
+ curveto
+ gsave
+ fill
+ grestore
+ stroke
+} bind def
+%
+/draw_dashed_slur
+{
+ 1 setlinecap
+ 1 setlinejoin
+ setdash
+ setlinewidth
+ moveto
+ curveto
+ stroke
+} bind def
+%
+staffheight 4 div /interline exch def
+%
+/bracket_traject
+{
+ /traject_ds exch def
+ /traject_alpha exch def
+ traject_ds traject_alpha sin mul add
+ exch
+ traject_ds traject_alpha cos mul add
+ exch
+} bind def
+%
+interline 3 div /bracket_b exch def
+interline 2 mul /bracket_w exch def
+stafflinethickness 2 mul /bracket_t exch def
+interline 1.5 mul /bracket_v exch def
+bracket_v /bracket_u exch def
+50 /bracket_alpha exch def
+%
+/half_bracket
+{
+%6
+ 0 0
+%5a
+ bracket_b bracket_v add bracket_h bracket_t sub bracket_u add
+ bracket_alpha bracket_v -0.15 mul bracket_traject
+%5b
+ 1 bracket_h
+ 0 bracket_v 0.5 mul bracket_traject
+%5c
+ 0 bracket_h
+%4a
+ bracket_b bracket_h bracket_t sub
+ 0 bracket_v 0.4 mul bracket_traject
+%4b
+ bracket_b bracket_v add bracket_h bracket_t sub bracket_u add
+ bracket_alpha bracket_v -0.25 mul bracket_traject
+%4c
+ bracket_b bracket_v add bracket_h bracket_t sub bracket_u add
+%3
+ bracket_b bracket_h bracket_t sub
+%2
+ bracket_b 0
+%1
+ 0 0
+} bind def
+%
+/draw_half_bracket {
+ moveto
+ lineto
+ lineto
+ curveto
+ curveto
+ lineto
+ gsave
+ fill
+ grestore
+} bind def
+%
+/draw_bracket % height
+{
+ 2 div bracket_b add /bracket_h exch def
+ bracket_t setlinewidth
+% urg: the only Level-2 PS, check effect in print
+% true setstrokeadjust
+ 1 setlinecap
+ 1 setlinejoin
+ half_bracket
+ 20 copy
+ 1 -1 scale
+ draw_half_bracket
+ stroke
+ 1 -1 scale
+% ugh, ugh:
+ 0.05 0 translate
+ draw_half_bracket
+ stroke
+} bind def
+%
% transformed into \par
%
-%
-% Should put in a lily-ps.ps header?
-%
-%
-
%
% header info (macros/defs, etc) should go into a \special{! ... },
% note the ! sign. See dvips.info for details.
% ``compiles'' operatorname binding in the body of foo, making
% the code faster, and more reliable (less flexible)
-
% transplant a TeX dimension into the PS output.
\def\PSsetTeXdimen#1{\expandafter\special{! /#1 (\the\csname #1\endcsname) deftexdimen}}
\def\turnOnPostScript{%
-\def\embeddedps##1{%
- % This sets CTM so that you get to the currentpoint
- % by executing a 0 0 moveto
- \special{ps: @beginspecial @setspecial ##1 @endspecial}
-}
-%
-% width, slope, height
-%
-\special{! % round cappings
-1 setlinecap
-/draw_beam
-{
- 2 div /beam_thick exch def
- /beam_slope exch def
- /beam_wd exch def
- beam_slope beam_wd mul /beam_ht exch def
- 0 beam_thick neg moveto
- beam_wd beam_ht rlineto
- 0 beam_thick 2 mul rlineto
- 0 beam_thick lineto
- closepath fill
-} bind def
+\special{!
% PS helper: convert (0.2pt) to the token 0.2
-/settexdimen { /thestring exch def
+/settexdimen
+{
+ /thestring exch def
thestring 0 thestring length 2 sub
getinterval
token
- pop exch pop }
-def
+ pop exch pop
+} def
%
-/deftexdimen {
+/deftexdimen
+{
settexdimen
def
} def
}
-%
\PSsetTeXdimen{staffrulethickness}
\PSsetTeXdimen{staffheight}
-\special{! %
-/draw_decresc
- {
- staffrulethickness setlinewidth
- /cresc_cont exch def
- /cresc_ht exch def
- /cresc_wd exch def
-%
- cresc_wd cresc_cont moveto
- 0 cresc_ht lineto
- stroke
- cresc_wd cresc_cont neg moveto
- 0 cresc_ht neg lineto
- stroke
- }
- bind def
- /draw_cresc
- {
- staffrulethickness setlinewidth
- /cresc_cont exch def
- /cresc_ht exch def
- /cresc_wd exch def
-%
- 0 cresc_cont moveto
- cresc_wd cresc_ht lineto
- stroke
- 0 cresc_cont neg moveto
- cresc_wd cresc_ht neg lineto
- stroke
- }
- bind def
- /lily_distance {
- 1 copy mul exch 1 copy mul add sqrt
- } bind def
-staffrulethickness 1.2 mul /plet_t exch def
-/draw_plet
+% urg, no dvips.info over here...
+%\special{! \input lily.ps }
+\special{!
+(lily.ps) findlibfile
{
- plet_t setlinewidth
- true setstrokeadjust
- 1 setlinecap
- 1 setlinejoin
- /dir exch def
- /plet_dy exch def
- /plet_dx exch def
- staffheight 2 div /plet_gapx exch def
- plet_dy plet_dx div plet_gapx mul /plet_gapy exch def
- staffheight 4 div dir mul /plet_h exch def
-%
- 0 0 moveto
- 0 plet_h lineto
- plet_dx plet_gapx sub 2 div
- plet_dy plet_gapy sub 2 div plet_h add lineto
- plet_dx plet_gapx add 2 div
- plet_dy plet_gapy add 2 div plet_h add moveto
- plet_dx plet_dy plet_h add lineto
- plet_dx plet_dy lineto
- stroke
-} bind def
-%
-/draw_slur
-{
- staffrulethickness setlinewidth
- moveto
- curveto
- lineto
- curveto
- gsave
- fill
- grestore
- stroke
-} bind def
-%
-/draw_dashed_slur
-{
- 1 setlinecap
- 1 setlinejoin
- setdash
- setlinewidth
- moveto
- curveto
- stroke
-} bind def
-%
-staffheight 4 div /interline exch def
-%
-/bracket_traject
-{
- /traject_ds exch def
- /traject_alpha exch def
- traject_ds traject_alpha sin mul add
- exch
- traject_ds traject_alpha cos mul add
- exch
-} bind def
-%
-% too fat for 20pt
-% interline 2 div /bracket_b exch def
-interline 3 div /bracket_b exch def
-interline 2 mul /bracket_w exch def
-staffrulethickness /stafflinethickness exch def
-stafflinethickness 2 mul /bracket_t exch def
-interline 1.5 mul /bracket_v exch def
-bracket_v /bracket_u exch def
-50 /bracket_alpha exch def
+ exch pop //systemdict /run get exec
+}
+{
+ /undefinedfilename signalerror
+} ifelse
+}
%
-/half_bracket
-{
-%6
- 0 0
-%5a
- bracket_b bracket_v add bracket_h bracket_t sub bracket_u add
- bracket_alpha bracket_v -0.15 mul bracket_traject
-%5b
- 1 bracket_h
- 0 bracket_v 0.5 mul bracket_traject
-%5c
- 0 bracket_h
-%4a
- bracket_b bracket_h bracket_t sub
- 0 bracket_v 0.4 mul bracket_traject
-%4b
- bracket_b bracket_v add bracket_h bracket_t sub bracket_u add
- bracket_alpha bracket_v -0.25 mul bracket_traject
-%4c
- bracket_b bracket_v add bracket_h bracket_t sub bracket_u add
-%3
- bracket_b bracket_h bracket_t sub
-%2
- bracket_b 0
-%1
- 0 0
-} bind def
+\def\embeddedps##1{%
+ % This sets CTM so that you get to the currentpoint
+ % by executing a 0 0 moveto
+ \special{ps: @beginspecial @setspecial ##1 @endspecial}
+}
%
-/draw_half_bracket {
- moveto
- lineto
- lineto
- curveto
- curveto
- lineto
- gsave
- fill
- grestore
-} bind def
%
-/draw_bracket
-{
- 2 div bracket_b add /bracket_h exch def
- bracket_t setlinewidth
- true setstrokeadjust
- 1 setlinecap
- 1 setlinejoin
- half_bracket
- 20 copy
- 1 -1 scale
- draw_half_bracket
- stroke
- 1 -1 scale
-% ugh, ugh:
- 0.05 0 translate
- draw_half_bracket
- stroke
-} bind def
-}}
+%\PSsetTeXdimen{staffrulethickness}
+%\PSsetTeXdimen{staffheight}
+}
\def\turnOnExperimentalFeatures{%
-% draw a slur in embedded postscript
\special{ps:
}}