if (!loose_col_count)
return;
+ for (int i = 0; i < loose_col_count; i++)
+ dynamic_cast<Paper_column *> (posns->loose_cols_[i])->set_system (which);
+
for (int i = 0; i < loose_col_count; i++)
{
int divide_over = 1;
Item *loose = dynamic_cast<Item *> (posns->loose_cols_[i]);
- Paper_column *col = dynamic_cast<Paper_column *> (loose);
-
- if (col->get_system ())
- continue;
Item *left = 0;
Item *right = 0;
if (!scm_is_pair (between))
break;
- Item *le = dynamic_cast<Item *> (unsmob_grob (scm_car (between)));
- Item *re = dynamic_cast<Item *> (unsmob_grob (scm_cdr (between)));
+ /* If the line was broken at one of the loose columns, split
+ the clique at that column. */
+ if (!loose->get_system ())
+ break;
+
+ Paper_column *le = dynamic_cast<Paper_column *> (unsmob_grob (scm_car (between)));
+ Paper_column *re = dynamic_cast<Paper_column *> (unsmob_grob (scm_cdr (between)));
if (! (le && re))
break;
loose = right = re->get_column ();
}
+ if (!right)
+ {
+ programming_error ("Can't attach loose column sensibly. Attaching to end of system.");
+ right = which->get_bound (RIGHT);
+ }
+
if (right->get_system ())
; /* do nothing */
else if (right->find_prebroken_piece (LEFT)
&& right->find_prebroken_piece (LEFT)->get_system () == which)
right = right->find_prebroken_piece (LEFT);
else if (Paper_column::get_rank (which->get_bound (RIGHT)) < Paper_column::get_rank (right))
-
right = which->get_bound (RIGHT);
else
{
}
}
-
- if (!right)
- {
- programming_error ("Can't attach loose column sensibly. Attaching to end of system.");
- right = which->get_bound (RIGHT);
- }
Grob *common = right->common_refpoint (left, X_AXIS);
clique.push_back (right);
Real my_offset = right_point - distance_to_next;
- clique_col->set_system (which);
clique_col->translate_axis (my_offset - clique_col->relative_coordinate (common, X_AXIS), X_AXIS);
finished_right_column = clique_col;
}
-
}
}
for (vsize j = 0; j < c.size (); j++)
{
c[j]->translate_axis (breaking[i].config_[j], X_AXIS);
- dynamic_cast<Paper_column *> (c[j])->system_ = system;
+ dynamic_cast<Paper_column *> (c[j])->set_system (system);
/* collect the column labels */
SCM col_labels = c[j]->get_property ("labels");
if (scm_is_pair (col_labels))
ga = unsmob_grob_array (scm_ga);
}
- p->rank_ = ga->size ();
+ p->set_rank (ga->size ());
ga->add (p);
Axis_group_interface::add_element (this, p);
&& Paper_column::get_rank (cols[i]) < end_rank)
{
Paper_column *c = dynamic_cast<Paper_column *> (cols[i]);
- if (Paper_column::is_breakable (c) && !c->system_)
+ if (Paper_column::is_breakable (c) && !c->get_system ())
ret.push_back (c);
i++;
}