X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fitem.cc;h=9941bc13c2abf79bc36fd25f952a084633d6e635;hb=63218958ad166437d2b2ddb33857ab23336b43ba;hp=6ea5643a5445e7d791a119479e73d54a5fe7aead;hpb=072d33dbc1f31fafa96c24ac579b1ba4422d2eee;p=lilypond.git diff --git a/lily/item.cc b/lily/item.cc index 6ea5643a54..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,14 +113,12 @@ 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; } @@ -202,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; } @@ -241,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);