*/
#include "line-of-score.hh"
-#include "dimension.hh"
#include "spanner.hh"
#include "atom.hh"
#include "paper-def.hh"
return cols.find_l ((Paper_column*)c);
}
-void
-Line_of_score::set_breaking (Array<Column_x_positions> const &breaking)
+Line_of_score*
+Line_of_score::set_breaking (Array<Column_x_positions> const &breaking, int j) const
{
- for (int j=0; j < breaking.size(); j++)
- {
- const Array<Paper_column*> &curline (breaking[j].cols);
- const Array<Paper_column*> &errors (breaking[j].error_col_l_arr_);
- const Array<Real> &config (breaking[j].config);
+ const Array<Paper_column*> &curline (breaking[j].cols);
+ const Array<Paper_column*> &errors (breaking[j].error_col_l_arr_);
+ const Array<Real> &config (breaking[j].config);
- for (int i=0; i < errors.size(); i++)
- errors[i]->error_mark_b_ = true;
+ for (int i=0; i < errors.size(); i++)
+ errors[i]->error_mark_b_ = true;
- Line_of_score *line_l=0;
- Line_of_score *line_p =0;
+ Line_of_score *line_l=0;
- if (breaking.size() >1)
- {
- line_p = (Line_of_score*)clone()->access_Spanner ();
- line_l = line_p;
- }
- else
- line_l = this;
+ if (breaking.size() >1)
+ {
+ line_l = dynamic_cast <Line_of_score*> (clone());
+ }
+ else
+ line_l = (Line_of_score*) this;
- ((Array<Paper_column*> &)line_l->cols) = curline;
- line_l->set_bounds(LEFT,curline[0]);
+ ((Array<Paper_column*> &)line_l->cols) = curline;
+ line_l->set_bounds(LEFT,curline[0]);
- line_l->set_bounds(RIGHT,curline.top());
+ line_l->set_bounds(RIGHT,curline.top());
- if (line_p)
- {
- pscore_l_->typeset_broken_spanner (line_p);
- broken_into_l_arr_.push (line_p);
- }
-
- for (int i=0; i < curline.size(); i++)
- {
- curline[i]->translate_axis (config[i],X_AXIS);
- curline[i]->line_l_ = (Line_of_score*)line_l;
- }
+ for (int i=0; i < curline.size(); i++)
+ {
+ curline[i]->translate_axis (config[i],X_AXIS);
+ curline[i]->line_l_ = (Line_of_score*)line_l;
}
-}
-
-void
-Line_of_score::break_into_pieces (bool)
-{
-
+ return line_l;
}
-Link_array<Line_of_score>
-Line_of_score::get_lines() const
-{
- Link_array<Line_of_score> ret;
- if (broken_into_l_arr_.size())
- for (int i=0; i < broken_into_l_arr_.size(); i++)
- {
- ret.push ((Line_of_score*)broken_into_l_arr_[i]);
- }
- else
- ret.push ((Line_of_score*)this); // ugh
-
- return ret;
-}
+
void
Line_of_score::do_print() const