Drul_array<Item *> item_drul_;
Real distance_;
- /**
- translate the rod so as to refer to Paper_columns
- */
void columnize ();
-
void add_to_cols ();
-
Rod ();
};
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 *);
};
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
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.