]> git.donarmstrong.com Git - lilypond.git/blobdiff - mf/feta-accordion.mf
Fix regression with page-spacing-tall-headfoot.ly.
[lilypond.git] / mf / feta-accordion.mf
index a91b035f03763912c1a67099fd67f2aa39876f8f..3920e36c4d4458fd2c526b41738cc53b062b919c 100644 (file)
@@ -1,9 +1,20 @@
+% Feta (not the Font-En-Tja) music font -- draw accordion symbols
+% This file is part of LilyPond, the GNU music typesetter.
 %
-% feta-accordion.mf -- draw accordion symbols
+% Copyright (C) 1998--2010 Han-Wen Nienhuys <hanwen@xs4all.nl>
 %
-% source file of the GNU LilyPond music typesetter
+% LilyPond is free software: you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation, either version 3 of the License, or
+% (at your option) any later version.
 %
-% (c) 1998--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
+% LilyPond is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 
 fet_begingroup ("accordion");
 
@@ -19,7 +30,7 @@ accreg_lh# := 1.0 staff_space#;
 define_pixels (accreg_dot_size, accreg_linethickness, accreg_lh);
 
 
-fet_beginchar ("accDiscant", "accDiscant")
+fet_beginchar ("accordion register discant", "discant")
        save r, pat, lh, lt;
        path pat;
 
@@ -90,7 +101,7 @@ fet_beginchar ("accDiscant", "accDiscant")
 fet_endchar;
 
 
-fet_beginchar ("accDot", "accDot")
+fet_beginchar ("accordion register dot", "dot")
        set_char_box (accreg_dot_size# / 2, accreg_dot_size# / 2,
                      accreg_dot_size# / 2, accreg_dot_size# / 2);
 
@@ -103,7 +114,7 @@ fet_beginchar ("accDot", "accDot")
 fet_endchar;
 
 
-fet_beginchar ("accFreebase", "accFreebase")
+fet_beginchar ("accordion register freebass", "freebass")
        save r, lh, lt;
 
        r# = accreg_lh#;
@@ -160,7 +171,7 @@ fet_beginchar ("accFreebase", "accFreebase")
 fet_endchar;
 
 
-fet_beginchar ("accStdbase", "accStdbase")
+fet_beginchar ("accordion register stdbass", "stdbass")
        save r, p, lh, lt;
        path pat;
 
@@ -233,7 +244,7 @@ fet_beginchar ("accStdbase", "accStdbase")
 fet_endchar;
 
 
-fet_beginchar ("accBayanbase", "accBayanbase")
+fet_beginchar ("accordion register bayanbass", "bayanbass")
        save lh, lt;
 
        lh = vround accreg_lh;
@@ -361,7 +372,7 @@ def def_some_vars =
 enddef;
 
 
-fet_beginchar ("accOldEE", "accOldEE")
+fet_beginchar ("accordion oldEE", "oldEE")
        save r, pp, ir, lh, lt, stroke_width;
 
        r# = staff_space#;
@@ -441,5 +452,97 @@ fet_beginchar ("accOldEE", "accOldEE")
        fi;
 fet_endchar;
 
+fet_beginchar ("accordion push", "push");
+       save width, height;
+
+       height# := 2.0 staff_space# + 3.0 stafflinethickness#;
+       width# := 0.4 height#;
+
+       define_pixels(height, width);
+
+       save linewidth;
+
+       linewidth# := stafflinethickness# + .05 staff_space#;
+       define_whole_blacker_pixels (linewidth);
+
+       set_char_box (width#, 0,
+                     0, height#);
+
+       pickup pencircle scaled linewidth;
+
+       lft x1 = -width;
+       top y1 = height;
+
+       rt x2 = 0;
+       y2 = 0.5 * (y1+y3);
+
+       x3= x1;
+       bot y3 = 0;
+
+       save pat;
+
+       path pat;
+
+       pat = z1 -- z2 -- z3;
+
+       draw pat;
+
+fet_endchar;
+
+fet_beginchar ("accordion pull", "pull");
+       save width, height;
+
+       height# := 2.0 staff_space# + 3.0 stafflinethickness#;
+       width# := 0.4 height#;
+
+       define_pixels(height, width);
+
+       save linewidth;
+
+       linewidth# := stafflinethickness# + .05 staff_space#;
+       define_whole_blacker_pixels (linewidth);
+
+       set_char_box (width# - linewidth#, linewidth#,
+                     0, height#);
+
+       pickup pencircle scaled linewidth;
+
+       save penradius;
+       penradius := linewidth / 2;
+
+       rt x1 = linewidth;
+       bot y1 = 0;
+
+        x2 = x1;
+       top y2 = height;
+
+       lft x3= -width + linewidth;
+       y3 = y2;
+
+       x4 = x3;
+       y4 = y2 - linewidth;
+
+       x5 = x1;
+       y5 = y4;
+
+       save pat;
+
+       path pat;
+
+       pat = z1 + penradius * right {up} --
+             z2 + penradius * right {up} ..
+             z2 + penradius * up {left} --
+             z3 + penradius * up {left} ..
+             z3 + penradius * left {down} --
+             z4 + penradius * left {down} ..
+             z4 + penradius * down {right} --
+             z5 + penradius * (down + left) --
+             z1 + penradius * left {down} ..
+             z1 + penradius * down {right} ..
+             cycle;
+
+       fill pat;
+
+fet_endchar;
 
 fet_endgroup ("accordion");