/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 1996--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ Copyright (C) 1996--2015 Han-Wen Nienhuys <hanwen@xs4all.nl>
Jan Nieuwenhuizen <janneke@gnu.org>
TODO: This is way too hairy
Real
Stem::chord_start_y (Grob *me)
{
- Interval hp = head_positions (me);
- if (!hp.is_empty ())
- return hp[get_grob_direction (me)] * Staff_symbol_referencer::staff_space (me)
- * 0.5;
+ if (head_count (me))
+ return Staff_symbol_referencer::get_position (last_head (me))
+ * Staff_symbol_referencer::staff_space (me) * 0.5;
+
return 0;
}
bool is_harmonic_centered = false;
for (vsize i = 0; i < heads.size (); i++)
is_harmonic_centered = is_harmonic_centered
- || heads[i]->get_property ("style") == ly_symbol2scm ("harmonic");
+ || scm_is_eq (heads[i]->get_property ("style"),
+ ly_symbol2scm ("harmonic"));
is_harmonic_centered = is_harmonic_centered && is_invisible (me);
Real w = hed->extent (hed, X_AXIS)[dir];
Direction dir = CENTER;
int staff_center = 0;
- Interval hp = head_positions (me);
- if (!hp.is_empty ())
+ if (head_count (me))
{
+ Interval hp = head_positions (me);
int udistance = (int) (UP * hp[UP] - staff_center);
int ddistance = (int) (DOWN * hp[DOWN] - staff_center);
Stem::get_beam (Grob *me)
{
SCM b = me->get_object ("beam");
- return dynamic_cast<Spanner *> (Grob::unsmob (b));
+ return Spanner::unsmob (b);
}
Stem_info