source file of the GNU LilyPond music typesetter
- (c) 1998--2005 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ (c) 1998--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
*/
#include "separating-group-spanner.hh"
void
Separating_group_spanner::find_rods (Item *r,
- Link_array<Grob> const &separators,
- int idx,
+ vector<Grob*> const &separators,
+ vsize idx,
Real padding)
{
most cases, the interesting L will just be the first entry of
NEXT, making it linear in most of the cases.
*/
- for (; idx >= 0; idx--)
+ for (; idx != VPOS; idx--)
{
Item *l = dynamic_cast<Item *> (separators[idx]);
Item *lb = l->find_prebroken_piece (RIGHT);
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 (Drul_array<Item*> (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;
- }
+ if (Separation_item::set_distance (Drul_array<Item *> (l, r), padding))
+ break;
/*
this grob doesn't cause a constraint. We look further until we
Real padding = robust_scm2double (me->get_property ("padding"), 0.1);
extract_grob_set (me, "elements", elts);
- for (int i = elts.size ();
- i-- > 1;)
+ for (vsize i = elts.size (); i-- > 1;)
{
Item *r = dynamic_cast<Item *> (elts[i]);
if (!r)
void
Separating_group_spanner::add_spacing_unit (Grob *me, Item *i)
{
- Pointer_group_interface::add_grob (me, ly_symbol2scm ("elements"), i);
+ Pointer_group_interface::add_unordered_grob (me, ly_symbol2scm ("elements"), i);
}
-ADD_INTERFACE (Separating_group_spanner, "separation-spanner-interface",
+ADD_INTERFACE (Separating_group_spanner,
"A spanner that calculates spacing constraints (\"rods\") "
"using the @code{separation-item-interface} grobs in @code{elements}.",
/* properties */
"elements "
- "padding");
+ "padding ");