From: Han-Wen Nienhuys <hanwen@xs4all.nl> Date: Thu, 30 Nov 2006 16:48:04 +0000 (+0100) Subject: put rod distance function in separate function. X-Git-Tag: release/2.11.1-1~29 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=95e2d8f397c7552dd6fa6ef5b498af7d8aee4cee;p=lilypond.git put rod distance function in separate function. --- diff --git a/lily/include/rod.hh b/lily/include/rod.hh index 163ae847d5..7bf58538de 100644 --- a/lily/include/rod.hh +++ b/lily/include/rod.hh @@ -17,13 +17,8 @@ struct Rod Drul_array<Item *> item_drul_; Real distance_; - /** - translate the rod so as to refer to Paper_columns - */ void columnize (); - void add_to_cols (); - Rod (); }; diff --git a/lily/include/separation-item.hh b/lily/include/separation-item.hh index 1c2ae7ef95..92620565af 100644 --- a/lily/include/separation-item.hh +++ b/lily/include/separation-item.hh @@ -23,6 +23,7 @@ struct Separation_item static Interval width (Grob *); static Interval relative_width (Grob *, Grob *); static Grob *extremal_break_aligned_grob (Grob *, Direction, Interval *); + static void set_distance (Item *, Item *, Real); static void add_item (Grob *, Item *); static void add_conditional_item (Grob *, Grob *); }; diff --git a/lily/separating-group-spanner.cc b/lily/separating-group-spanner.cc index d2bc23a6d3..8c07d8e65d 100644 --- a/lily/separating-group-spanner.cc +++ b/lily/separating-group-spanner.cc @@ -34,35 +34,10 @@ Separating_group_spanner::find_rods (Item *r, if (lb) { - Interval li (Separation_item::width (lb)); - Interval ri (Separation_item::conditional_width (r, lb)); - if (!li.is_empty () && !ri.is_empty ()) - { - Rod rod; - - rod.item_drul_[LEFT] = lb; - rod.item_drul_[RIGHT] = r; - - rod.distance_ = li[RIGHT] - ri[LEFT] + padding; - rod.add_to_cols (); - } + Separation_item::set_distance (lb, r, padding); } - Interval li (Separation_item::width (l)); - Interval ri (Separation_item::conditional_width (r, l)); - if (!li.is_empty () && !ri.is_empty ()) - { - Rod rod; - - rod.item_drul_[LEFT] = l; - rod.item_drul_[RIGHT] = r; - - rod.distance_ = li[RIGHT] - ri[LEFT] + padding; - - if (rod.distance_ > 0.0) - rod.add_to_cols (); - break; - } + Separation_item::set_distance (l, r, padding); /* this grob doesn't cause a constraint. We look further until we diff --git a/lily/separation-item.cc b/lily/separation-item.cc index 535edcac67..cd73e38a9d 100644 --- a/lily/separation-item.cc +++ b/lily/separation-item.cc @@ -27,6 +27,26 @@ Separation_item::add_conditional_item (Grob *me, Grob *e) Pointer_group_interface::add_grob (me, ly_symbol2scm ("conditional-elements"), e); } +void +Separation_item::set_distance (Item *l, Item *r, + Real padding) +{ + Interval li (Separation_item::width (l)); + Interval ri (Separation_item::conditional_width (r, l)); + if (!li.is_empty () && !ri.is_empty ()) + { + Rod rod; + + rod.item_drul_[LEFT] = l; + rod.item_drul_[RIGHT] = r; + + rod.distance_ = li[RIGHT] - ri[LEFT] + padding; + + if (rod.distance_ > 0) + rod.add_to_cols (); + } +} + /* Return the width of ME given that we are considering the object on the LEFT.