X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=ps%2Fmusic-drawing-routines.ps;h=ccaf6b3dcc55195fcfe5fc0172f3300801108653;hb=9f4fbf7379baa8c96b9d7029338f19bfc2286038;hp=1807e47dc45514148d3c2dc349e55a52bf9f75f1;hpb=c96dc4cfcb9ca9be790b4cca05f70538bbab9b05;p=lilypond.git diff --git a/ps/music-drawing-routines.ps b/ps/music-drawing-routines.ps index 1807e47dc4..ccaf6b3dcc 100644 --- a/ps/music-drawing-routines.ps +++ b/ps/music-drawing-routines.ps @@ -35,7 +35,7 @@ } bind def -% from adobe tech note 5002. +% from adobe tech note 5002. /BeginEPSF { %def /b4_Inc_state save def % Save state for cleanup /dict_count countdictstack def % Count objects on dict stack @@ -57,7 +57,7 @@ bind def count op_count sub {pop} repeat % Clean up stacks countdictstack dict_count sub {end} repeat b4_Inc_state restore -} bind def +} bind def /stroke_and_fill { gsave @@ -103,7 +103,7 @@ bind def def rmoveto % x(0) y(0) { polygon_x polygon_y vector_add lineto } repeat % n times - closepath + closepath { %fill? stroke_and_fill }{ @@ -126,7 +126,7 @@ bind def % this is for drawing slurs and barre-indicators. /draw_bezier_sandwich % x5 y5 x6 y6 x7 y7 % x4 y4 - % x1 y1 x2 y2 x3 y3 + % x1 y1 x2 y2 x3 y3 % x0 y0 % linewidth draw_bezier_sandwich { @@ -159,7 +159,7 @@ bind def 3 2 roll % f? x0 y0 r dup 0 rmoveto 0 360 arc closepath - { stroke_and_fill } + { stroke_and_fill } { stroke } ifelse } bind def @@ -192,6 +192,46 @@ bind def ifelse } bind def +/draw_partial_ellipse % filled connect x-radius y-radius startangle endangle thickness draw_partial_ellipse +% Note that filled is not boolean to permit for different graylevels (ie for trill keys) +{ + gsave + currentpoint translate + /thickness exch def + /endangle exch def + /startangle exch def + /y_radius exch def + /x_radius exch def + /endrad x_radius y_radius mul + x_radius x_radius mul + endangle cos endangle cos mul mul + y_radius y_radius mul + endangle sin endangle sin mul mul add sqrt div def + /endangle endangle sin endrad mul y_radius div + endangle cos endrad mul x_radius div atan def + /startrad x_radius y_radius mul + x_radius x_radius mul + startangle cos startangle cos mul mul + y_radius y_radius mul + startangle sin startangle sin mul mul add sqrt div def + /startangle startangle sin startrad mul y_radius div + startangle cos startrad mul x_radius div atan def + /connect exch def + /filled exch def + /savematrix matrix currentmatrix def + thickness setlinewidth + x_radius y_radius scale + startangle cos startangle sin moveto + 0 0 1 startangle + startangle endangle eq { endangle 360 add } { endangle } ifelse + arc + connect { + startangle cos startangle sin moveto endangle cos endangle sin lineto } + if + savematrix setmatrix filled { stroke_and_fill } { stroke } ifelse + grestore +} bind def + /draw_line % dx dy x1 y1 thickness draw_line { setlinewidth % dx dy x1 y1 @@ -228,14 +268,16 @@ gsave grestore } bind def -/print_glyphs % dx dy glyph print_glyphs +/print_glyphs % w dx dy glyph print_glyphs { { - currentpoint %dx dy glyph x0 y0 - 3 2 roll %dx dy x0 y0 glyph - glyphshow % dx dy x0 y0 - moveto % dx dy - rmoveto + currentpoint %w dx dy glyph x0 y0 + 5 2 roll %w x0 y0 dx dy glyph + 3 1 roll %w x0 y0 glyph dx dy + rmoveto %w x0 y0 glyph + glyphshow %w x0 y0 + moveto %w + 0 rmoveto }repeat }bind def %end music-drawing-routines.ps