source file of the GNU LilyPond music typesetter
- (c) 1996--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ (c) 1996--2002 Han-Wen Nienhuys <hanwen@cs.uu.nl>
Jan Nieuwenhuizen <janneke@gnu.org>
TODO: This is way too hairy
Real pos;
if (!gh_number_p (p))
{
-
pos = get_default_stem_end_position (me);
me->set_grob_property ("stem-end-position", gh_double2scm (pos));
}
if (Note_head::has_interface (n))
{
- Pointer_group_interface::add_element (me, ly_symbol2scm ("heads"), n);
+ Pointer_group_interface::add_grob (me, ly_symbol2scm ("heads"), n);
}
else
{
return;
Link_array<Grob> heads =
- Pointer_group_interface__extract_elements (me, (Grob*)0, "heads");
+ Pointer_group_interface__extract_grobs (me, (Grob*)0, "heads");
heads.sort (compare_position);
Direction dir =get_direction (me);
// suicide ();
}
- set_spacing_hints (me);
return SCM_UNSPECIFIED;
}
-
/*
ugh.
When in a beam with tuplet brackets, brew_mol is called early,
}
-/**
- set stem directions for hinting the optical spacing correction.
-
- Modifies DIR_LIST property of the Stem's Paper_column
-
- TODO: more advanced: supply height of noteheads as well, for more advanced spacing possibilities
- */
-void
-Stem::set_spacing_hints (Grob*me)
-{
- if (!invisible_b (me))
- {
- SCM scmdir = gh_int2scm (get_direction (me));
-
- Item* item = dynamic_cast<Item*> (me);
- Item * col = item->column_l ();
- SCM dirlist =col->get_grob_property ("dir-list");
- if (scm_c_memq (scmdir, dirlist) == SCM_BOOL_F)
- {
- dirlist = gh_cons (scmdir, dirlist);
- col->set_grob_property ("dir-list", dirlist);
- }
- }
-}
-
Molecule
Stem::flag (Grob*me)
{
// dy?
Real dy = Staff_symbol_referencer::staff_space (me) * 0.5;
-
+
if (Grob *hed = support_head (me))
{
/*
Real y_attach = Note_head::stem_attachment_coordinate ( hed, Y_AXIS);
y_attach = head_height.linear_combination (y_attach);
- stem_y[Direction (-d)] += d * 2*y_attach;
+ stem_y[Direction (-d)] += d * y_attach/dy;
}
if (!invisible_b (me))