/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 2001--2011 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ Copyright (C) 2001--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
LilyPond is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include "separation-item.hh"
#include "spacing-interface.hh"
#include "staff-spacing.hh"
+#include "staff-symbol-referencer.hh"
#include "stem.hh"
#include "warn.hh"
Interval bar_xextent;
Interval bar_yextent;
- Direction d = LEFT;
-
bool acc_right = false;
Grob *bar = Spacing_interface::extremal_break_aligned_grob (me, RIGHT,
if (bar && dynamic_cast<Item *> (bar)->get_column () == rcolumn)
bar_yextent = Staff_spacing::bar_y_positions (bar);
- do
+ for (LEFT_and_RIGHT (d))
{
vector<Grob *> const &items (ly_scm2link_array (props [d]));
for (vsize i = 0; i < items.size (); i++)
Interval hp = Stem::head_positions (stem);
if (!hp.is_empty ())
{
- Real chord_start = hp[stem_dir];
-
- /*
- can't look at stem-end-position, since that triggers
- beam slope computations.
- */
- Real stem_end = hp[stem_dir]
- + stem_dir * robust_scm2double (stem->get_property ("length"), 7);
-
- stem_posns[d] = Interval (min (chord_start, stem_end),
- max (chord_start, stem_end));
+ Real ss = Staff_symbol_referencer::staff_space (stem);
+ stem_posns[d] = stem->pure_height (stem, 0, INT_MAX) * (2 / ss);
head_posns[d].unite (hp);
}
}
}
- while (flip (&d) != LEFT);
Real correction = 0.0;
if (beams_drul[LEFT] && beams_drul[LEFT] == beams_drul[RIGHT])
{
correction = knee_correction (me, stems_drul[RIGHT], increment);
- *fixed += correction;
}
else
{
&& !acc_right)
correction = same_direction_correction (me, head_posns);
+ *fixed += correction;
*space += correction;
/* there used to be a correction for bar_xextent () here, but