X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fitem.cc;h=9941bc13c2abf79bc36fd25f952a084633d6e635;hb=f3b6285af7a9e414b12d2d61ada30aef695bd72f;hp=ff77f5feacc5995286bdb154c6a929ef471c871d;hpb=08560a1b8076630c4fc6cb9b902614d8b74fd6fc;p=lilypond.git diff --git a/lily/item.cc b/lily/item.cc index ff77f5feac..9941bc13c2 100644 --- a/lily/item.cc +++ b/lily/item.cc @@ -77,15 +77,13 @@ void Item::copy_breakable_items () { Drul_array new_copies; - Direction i = LEFT; - do + for (LEFT_and_RIGHT (d)) { Grob *dolly = clone (); Item *item = dynamic_cast (dolly); get_root_system (this)->typeset_grob (item); - new_copies[i] = item; + new_copies[d] = item; } - while (flip (&i) != LEFT); broken_to_drul_ = new_copies; } @@ -115,27 +113,16 @@ Item::find_broken_piece (System *l) const if (get_system () == l) return (Item *) (this); - Direction d = LEFT; - do + for (LEFT_and_RIGHT (d)) { Grob *s = broken_to_drul_[d]; if (s && s->get_system () == l) return s; } - while (flip (&d) != LEFT); return 0; } -Item * -Item::maybe_find_prebroken_piece (Item *g, Direction d) -{ - Item *ret = g->find_prebroken_piece (d); - if (ret) - return ret; - return g; -} - Item * Item::find_prebroken_piece (Direction d) const { @@ -211,21 +198,18 @@ spanned_time_interval (Item *l, Item *r) Drul_array bounds (l, r); Interval_t iv; - Direction d = LEFT; - do + for (LEFT_and_RIGHT (d)) { if (bounds[d] && bounds[d]->get_column ()) iv[d] = robust_scm2moment (bounds[d]->get_column ()->get_property ("when"), iv[d]); } - while (flip (&d) != LEFT); - do + for (LEFT_and_RIGHT (d)) { if (!bounds[d] || !bounds[d]->get_column ()) iv[d] = iv[-d]; } - while (flip (&d) != LEFT); return iv; } @@ -250,6 +234,10 @@ Item::pure_height (Grob *g, int start, int end) { if (cached_pure_height_valid_) return cached_pure_height_ + pure_relative_y_coordinate (g, start, end); + /* Note: cached_pure_height_ does not notice if start changes, implicitly + assuming that Items' pure_heights do not depend on 'start' or 'end'. + Accidental_interface::pure_height(), however, does depend on 'start'. + */ cache_pure_height (Grob::pure_height (this, start, end)); return cached_pure_height_ + pure_relative_y_coordinate (g, start, end);