X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Faccidental-placement.cc;h=cbc1478608fba2bc42ddf31c34ae5a5b59157da4;hb=e3bd073b603167e110d3ecac4bfa3e1ca75e0106;hp=f8245b0cbf08edd7bd0b00e16fd30735cd563764;hpb=d74c5951c66218f389394fe879d18f86131cf612;p=lilypond.git diff --git a/lily/accidental-placement.cc b/lily/accidental-placement.cc index f8245b0cbf..cbc1478608 100644 --- a/lily/accidental-placement.cc +++ b/lily/accidental-placement.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 2002--2006 Han-Wen Nienhuys + (c) 2002--2007 Han-Wen Nienhuys */ @@ -75,6 +75,24 @@ Accidental_placement::split_accidentals (Grob *accs, } } +vector +Accidental_placement::get_break_reminder_accidentals (vector const &elts, Grob *left) +{ + vector br; + vector ra; + vector ret; + + if (dynamic_cast (left)->break_status_dir () != RIGHT) + return vector (); + + for (vsize i = 0; i < elts.size (); i++) + { + split_accidentals (elts[i], &br, &ra); + ret.insert (ret.end (), br.begin (), br.end ()); + } + return ret; +} + /* Accidentals are special, because they appear and disappear after ties at will. @@ -340,8 +358,8 @@ Accidental_placement::calc_positioning_done (SCM smob) ape->extents_.insert (ape->extents_.end (), boxes.begin (), boxes.end ()); } - ape->left_skyline_ = Skyline (ape->extents_, Y_AXIS, LEFT); - ape->right_skyline_ = Skyline (ape->extents_, Y_AXIS, RIGHT); + ape->left_skyline_ = Skyline (ape->extents_, 0, Y_AXIS, LEFT); + ape->right_skyline_ = Skyline (ape->extents_, 0, Y_AXIS, RIGHT); } Interval total; @@ -373,14 +391,14 @@ Accidental_placement::calc_positioning_done (SCM smob) stems[i]->pure_height (common[Y_AXIS], 0, very_large))); } - head_ape->left_skyline_ = Skyline (head_extents, Y_AXIS, LEFT); + head_ape->left_skyline_ = Skyline (head_extents, 0, Y_AXIS, LEFT); head_ape->offset_ = 0.0; Real padding = robust_scm2double (me->get_property ("padding"), 0.2); Skyline left_skyline = head_ape->left_skyline_; - left_skyline.raise (-robust_scm2double (me->get_property ("right-padding"), 0)) -; + left_skyline.raise (-robust_scm2double (me->get_property ("right-padding"), 0)); + /* Add accs entries right-to-left. */ @@ -388,7 +406,7 @@ Accidental_placement::calc_positioning_done (SCM smob) { Real offset = -apes[i]->right_skyline_.distance (left_skyline); if (isinf (offset)) - offset = (i < apes.size () - 1) ? apes[i + 1]->offset_ : 0.0; + offset = (i + 1 < apes.size ()) ? apes[i + 1]->offset_ : 0.0; else offset -= padding; @@ -424,9 +442,10 @@ Accidental_placement::calc_positioning_done (SCM smob) me->flush_extent_cache (X_AXIS); me->set_property ("X-extent", scm_width); - for (vsize i = apes.size (); i--;) - delete apes[i]; + junk_pointers (apes); + delete head_ape; + return SCM_BOOL_T; }