X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=tex%2Flily-ps-defs.tex;h=4a05f9d46fba820359d498e7d56eb8a9f41f3cef;hb=5b4b0d6e9a197e8f9eb085b7c2ad78b8be3e5cfc;hp=f93da7cfd26a34051d2853e4484248434230b2c1;hpb=5e47fbe9f5a8e10458a9d737d1c35cff2eae6791;p=lilypond.git diff --git a/tex/lily-ps-defs.tex b/tex/lily-ps-defs.tex index f93da7cfd2..4a05f9d46f 100644 --- a/tex/lily-ps-defs.tex +++ b/tex/lily-ps-defs.tex @@ -1,168 +1,43 @@ -% -% WARNING: don't leave blank lines in the PS-code; they are -% 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. -% - -% Use of -% /foo { operatorname } bind def -% -% ``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 -% PS helper: convert (0.2pt) to the token 0.2 -/settexdimen { /thestring exch def - thestring 0 thestring length 2 sub - getinterval - token - pop exch pop } -def -% -/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 - { - /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 - /draw_plet - { - staffrulethickness setlinewidth - /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 - 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}} - - - - -\def\turnOnExperimentalFeatures{ -% draw a slur in embedded postscript -\special{ps: -}} +%% lily-ps-defs.tex +%% +\edef\lilypsdefsELC{\the\endlinechar}% +\endlinechar -1\relax + +%% Header info (macros/defs, etc) should go into a \special{! ... }; +%% note the ! sign. See dvips.info for details. +%% +%% We protect punctuation characters with \string to avoid problems with +%% language specific shorthands (e.g. `:' for French, `"' for German, etc.). + +\gdef\lilypondsetdimen#1{ + \expandafter\gdef\csname #1ps\endcsname{} + \special{ + \string! + /#1 (\csname #1\endcsname) set_tex_dimen}} + +\gdef\lilypondspace{ } + +\gdef\lilypondpostscript{ + %% A document processed with lilypond-book can contain music fragments in + %% different sizes. To reduce overhead, we define `lyscaleXXX' PS macros + %% only once. + \lilypondifundefined{lyscale\lilypondpaperoutputscale} + {\expandafter\gdef\csname lyscale\lilypondpaperoutputscale\endcsname{} + %% This sets CTM so that you get to the currentpoint + %% by executing a 0 0 moveto + \special{ + \string! + /lyscale\lilypondpaperoutputscale + {\lilypondpaperoutputscale\lilypondspace\scaletounit % + dup scale} def}} + {} + + \def\embeddedps##1{ + \special{ + \string" + lyscale\lilypondpaperoutputscale\lilypondspace ##1}}} + +\endlinechar \lilypsdefsELC +\endinput + +%% end lily-ps-defs.tex