% transplant a TeX dimension into the PS output.
\def\PSsetTeXdimen#1{\expandafter\special{! /#1 (\the\csname #1\endcsname) deftexdimen}}
-\def\turnOnPostScript{
+\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
%
def
} def
}
-
-
+%
\PSsetTeXdimen{staffrulethickness}
\PSsetTeXdimen{staffheight}
\special{! %
bind def
/draw_cresc
{
+ staffrulethickness setlinewidth
/cresc_cont exch def
/cresc_ht exch def
/cresc_wd exch def
/lily_distance {
1 copy mul exch 1 copy mul add sqrt
} bind def
- staffheight 2 div
- /slurhtlimit exch def
- /slurratio 0.3333 def
- %
- % (b*ratio)/(1 + b / htlimit)
- /getslurcontrol
- {
- slurhtlimit 90 div /slur_alpha exch def
- slurratio 60 div slur_alpha div /slur_beta exch def
- slur_beta mul 1 atan slur_alpha mul
- } bind def
- staffrulethickness 1.5 mul /slur_thick exch def
- /draw_slur
- {
- staffrulethickness setlinewidth
- 0 0 moveto
- /slur_dir exch def
- /slur_dy exch def
- /slur_dx exch def
- slur_dy slur_dx lily_distance /slur_b exch def
- slur_b getslurcontrol
- slur_dir mul /slur_ht exch def
- slur_b getslurcontrol /slur_indent exch def
-%
- slur_dy slur_dx atan rotate
- slur_indent slur_ht
- slur_b slur_indent sub slur_ht
- slur_b 0
- rcurveto
- %
- slur_indent neg slur_ht slur_dir slur_thick mul sub
- slur_indent slur_b sub slur_ht slur_dir slur_thick mul sub
- slur_b neg 0
- rcurveto
- %
- gsave
- fill
- grestore
- stroke
- } bind def}}
-
-
-
+staffrulethickness 1.2 mul /plet_t exch def
+/draw_plet
+{
+ 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
+%
+/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
+{
+ 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
+}}
-\def\turnOnExperimentalFeatures{
+\def\turnOnExperimentalFeatures{%
% draw a slur in embedded postscript
\special{ps:
}}
+