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;
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);
fet_endchar;
-fet_beginchar ("accFreebase", "accFreebase")
+fet_beginchar ("accordion register freebass", "freebass")
save r, lh, lt;
r# = accreg_lh#;
fet_endchar;
-fet_beginchar ("accStdbase", "accStdbase")
+fet_beginchar ("accordion register stdbass", "stdbass")
save r, p, lh, lt;
path pat;
fet_endchar;
-fet_beginchar ("accBayanbase", "accBayanbase")
+fet_beginchar ("accordion register bayanbass", "bayanbass")
save lh, lt;
lh = vround accreg_lh;
enddef;
-fet_beginchar ("accOldEE", "accOldEE")
+fet_beginchar ("accordion oldEE", "oldEE")
save r, pp, ir, lh, lt, stroke_width;
r# = staff_space#;
fi;
fet_endchar;
-fet_beginchar ("Accordion push", "push");
+
+fet_beginchar ("accordion push", "push");
save width, height;
height# := 2.0 staff_space# + 3.0 stafflinethickness#;
top y1 = height;
rt x2 = 0;
- y2 = 0.5 * (y1+y3);
+ y2 = 0.5 * (y1 + y3);
- x3= x1;
+ x3 = x1;
bot y3 = 0;
- save pat;
-
- path pat;
-
- pat = z1 -- z2 -- z3;
-
- draw pat;
-
+ save nw_offset, ne_offset;
+ pair nw_offset, ne_offset;
+ save sw_offset, se_offset, line_radius;
+ pair sw_offset, se_offset;
+
+ line_radius := linewidth / 2;
+ nw_offset := line_radius * unitvector (z1 - z2);
+ ne_offset := nw_offset rotated -90;
+ sw_offset := line_radius * unitvector (z3 - z2);
+ se_offset := sw_offset rotated 90;
+
+ z4 = ((z1 - ne_offset)
+ -- (z2 - ne_offset))
+ intersectionpoint
+ ((z2 - se_offset)
+ -- (z3 - se_offset));
+
+ fill z1 + ne_offset
+ -- z2 + ne_offset
+ .. rt z2 {down}
+ .. z2 + se_offset
+ -- z3 + se_offset
+ .. z3 + sw_offset {- se_offset}
+ .. z3 - se_offset
+ -- z4
+ -- z1 - ne_offset
+ .. z1 + nw_offset {ne_offset}
+ .. cycle;
fet_endchar;
-fet_beginchar ("Accordion pull", "pull");
+
+fet_beginchar ("accordion pull", "pull");
save width, height;
height# := 2.0 staff_space# + 3.0 stafflinethickness#;
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;
-
+ fill 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;
fet_endchar;
fet_endgroup ("accordion");