X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=ps%2Fmusic-drawing-routines.ps;fp=ps%2Fmusic-drawing-routines.ps;h=09ac055f46cfd216624c33ae825337353db4e7c9;hb=e90f0536f9be39ada0bef0aeb0d275dec3b2fb5b;hp=9f28bf95f13f7997a3aaba873f698d799f4105ec;hpb=a8c9e8a7ca320ab0df5fd32e717fd62cd7635ce6;p=lilypond.git diff --git a/ps/music-drawing-routines.ps b/ps/music-drawing-routines.ps index 9f28bf95f1..09ac055f46 100644 --- a/ps/music-drawing-routines.ps +++ b/ps/music-drawing-routines.ps @@ -35,7 +35,25 @@ } bind def -% from adobe tech note 5002. +% llx lly urx ury page +/mark_page_link +{ + /page exch def + /ury exch def + /urx exch def + /lly exch def + /llx exch def + [ + /Rect [ llx lly urx ury ] + /Border [ 0 0 0 ] + /Page page + /Subtype /Link + /ANN + pdfmark +} +bind def + +% 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 +75,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 +121,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 }{ @@ -124,12 +142,16 @@ bind def } bind def % this is for drawing slurs and barre-indicators. -/draw_bezier_sandwich % thickness controls +/draw_bezier_sandwich % x5 y5 x6 y6 x7 y7 + % x4 y4 + % x1 y1 x2 y2 x3 y3 + % x0 y0 + % linewidth draw_bezier_sandwich { gsave currentpoint translate - % round ending and round beginning - 1 setlinejoin 1 setlinecap + % round ending and round beginning + 1 setlinejoin 1 setlinecap setlinewidth moveto curveto @@ -155,7 +177,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 @@ -188,6 +210,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