source file of the GNU LilyPond music typesetter
- (c) 1996--2002 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ (c) 1996--2003 Han-Wen Nienhuys <hanwen@cs.uu.nl>
Jan Nieuwenhuizen <janneke@gnu.org>
TODO: This is way too hairy
bool invisible = invisible_b (me);
- Real thick = 0.0;
- if (invisible)
- thick = gh_scm2double (me->get_grob_property ("thickness"))
- * me->get_paper ()->get_var ("linethickness");
+ Real thick = gh_scm2double (me->get_grob_property ("thickness"))
+ * me->get_paper ()->get_var ("linethickness");
Grob *hed = support_head (me);
Real l = Note_head::head_extent (heads[i], X_AXIS).length ();
Direction d = get_direction (me);
- heads[i]->translate_axis (l * d, X_AXIS);
+ /* reversed head should be shifted l-thickness, but this looks
+ too crowded, so we only shift l-0.5*thickness.
+ Notice that this leads to assymetry: Normal heads overlap
+ the stem 100% whereas reversed heads only overlaps the stem
+ 50% */
+ #define magic 0.5
+ heads[i]->translate_axis ((l-thick*magic) * d, X_AXIS);
if (invisible_b(me))
- heads[i]->translate_axis (-thick *2* d , X_AXIS);
+ heads[i]->translate_axis (-thick*(2-magic) * d , X_AXIS);
/* TODO:
ADD_INTERFACE (Stem,"stem-interface",
"A stem",
- "up-to-staff avoid-note-head adjust-if-on-staffline thickness stem-info beamed-lengths beamed-minimum-free-lengths beamed-extreme-minimum-free-lengths lengths beam stem-shorten duration-log beaming neutral-direction stem-end-position support-head note-heads direction length flag-style no-stem-extend stroke-style");
+ "french-beaming up-to-staff avoid-note-head adjust-if-on-staffline thickness stem-info beamed-lengths beamed-minimum-free-lengths beamed-extreme-minimum-free-lengths lengths beam stem-shorten duration-log beaming neutral-direction stem-end-position support-head note-heads direction length flag-style no-stem-extend stroke-style");