X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fnote-spacing.cc;h=1d0d21fbbb502e5ae977c0e90781cfe63233aca2;hb=a9bb3b4c5d19638083d833cd084280c73e095c16;hp=9a71c00a598b9bee8aa42cf8de12769fb6d0470e;hpb=ce0bb5d14e583790b8557523feaf848fdfb4f88a;p=lilypond.git diff --git a/lily/note-spacing.cc b/lily/note-spacing.cc index 9a71c00a59..1d0d21fbbb 100644 --- a/lily/note-spacing.cc +++ b/lily/note-spacing.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2001--2011 Han-Wen Nienhuys + Copyright (C) 2001--2012 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -31,6 +31,7 @@ #include "separation-item.hh" #include "spacing-interface.hh" #include "staff-spacing.hh" +#include "staff-symbol-referencer.hh" #include "stem.hh" #include "warn.hh" @@ -78,7 +79,7 @@ Note_spacing::get_spacing (Grob *me, Item *right_col, adjust things so there are no collisions. */ Drul_array skys = Spacing_interface::skylines (me, right_col); - Real distance = skys[LEFT].distance (skys[RIGHT]); + Real distance = skys[LEFT].distance (skys[RIGHT], robust_scm2double (right_col->get_property ("skyline-vertical-padding"), 0.0)); Real min_dist = max (0.0, distance); Real min_desired_space = left_head_end + (min_dist - left_head_end + base_space - increment) / 2; Real ideal = base_space - increment + left_head_end; @@ -221,8 +222,6 @@ Note_spacing::stem_dir_correction (Grob *me, Item *rcolumn, Interval bar_xextent; Interval bar_yextent; - Direction d = LEFT; - bool acc_right = false; Grob *bar = Spacing_interface::extremal_break_aligned_grob (me, RIGHT, @@ -231,7 +230,7 @@ Note_spacing::stem_dir_correction (Grob *me, Item *rcolumn, if (bar && dynamic_cast (bar)->get_column () == rcolumn) bar_yextent = Staff_spacing::bar_y_positions (bar); - do + for (LEFT_and_RIGHT (d)) { vector const &items (ly_scm2link_array (props [d])); for (vsize i = 0; i < items.size (); i++) @@ -273,22 +272,12 @@ Note_spacing::stem_dir_correction (Grob *me, Item *rcolumn, 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;