#include "all-font-metrics.hh"
Line_of_score::Line_of_score()
+ : Spanner (SCM_EOL)
{
set_elt_pointer ("columns", SCM_EOL);
set_elt_pointer ("all-elements", SCM_EOL);
typeset_element (p);
}
-Link_array<Paper_column>
-Line_of_score::column_l_arr ()const
-{
- Link_array<Paper_column> acs
- = Pointer_group_interface__extract_elements (this, (Paper_column*) 0, "columns");
- bool bfound = false;
- for (int i= acs.size (); i -- ; )
- {
- bool brb = acs[i]->breakable_b();
- bfound = bfound || brb;
-
- /*
- the last column should be breakable. Weed out any columns that
- seem empty. We need to retain breakable columns, in case
- someone forced a breakpoint.
- */
- if (!bfound || !acs[i]->used_b ())
- acs.del (i);
- }
- return acs;
-}
void
fixup_refpoints (SCM s)
r = r->column_l ();
SCM s = get_elt_pointer ("columns");
- while (gh_car (s) != r->self_scm_)
+ while (gh_pair_p (s) && gh_car (s) != r->self_scm_)
s = gh_cdr (s);
-
- s = gh_cdr (s);
+ if (gh_pair_p (s))
+ s = gh_cdr (s);
- while (gh_car (s) != l->self_scm_)
+ while (gh_pair_p (s) && gh_car (s) != l->self_scm_)
{
Paper_column *c
= dynamic_cast<Paper_column*> (unsmob_element (gh_car (s)));
return ret;
}
+/**
+ Return all columns, but filter out any unused columns , since they might
+ disrupt the spacing problem.
+ */
+Link_array<Paper_column>
+Line_of_score::column_l_arr ()const
+{
+ Link_array<Paper_column> acs
+ = Pointer_group_interface__extract_elements (this, (Paper_column*) 0, "columns");
+ bool bfound = false;
+ for (int i= acs.size (); i -- ; )
+ {
+ bool brb = acs[i]->breakable_b();
+ bfound = bfound || brb;
-
+ /*
+ the last column should be breakable. Weed out any columns that
+ seem empty. We need to retain breakable columns, in case
+ someone forced a breakpoint.
+ */
+ if (!bfound || !acs[i]->used_b ())
+ acs.del (i);
+ }
+ return acs;
+}