2 do calculations for breaking problem
7 #include "linespace.hh"
9 #include "scoreline.hh"
14 return all breakable columns
17 Break_algorithm::find_breaks() const
20 for (iter_top(pscore_.cols,c); c.ok(); c++)
27 // construct an appropriate Spacing_problem and solve it.
29 Break_algorithm::solve_line(Line_of_cols curline) const
33 sp.add_column(curline[0], true, 0.0);
34 for (int i=1; i< curline.size()-1; i++)
35 sp.add_column(curline[i]);
36 sp.add_column(curline.last(), true, linelength);
38 // misschien moeven uit Spacing_problem?
39 for (iter_top(pscore_.suz,i); i.ok(); i++) {
42 Array<Real> the_sol=sp.solve();
46 Break_algorithm::Break_algorithm(PScore&s)
49 linelength = s.paper_l_->linewidth;
53 Break_algorithm::feasible(Line_of_cols curline) const
56 for (int i=0; i < curline.size(); i++)
57 l +=curline[i]->width().length();
58 return l < linelength;
62 Break_algorithm::problem_OK() const
64 if (!pscore_.cols.size())
65 error("Score does not have any columns");
67 iter_top(pscore_.cols,start);
68 PCursor<PCol *> end (pscore_.cols.bottom());
70 assert(start->breakable());
71 assert(end->breakable());
77 Col_configuration::Col_configuration()
83 Col_configuration::add( PCol*c)
89 Col_configuration::setsol(Array<Real> sol)
92 energy = config.last();
97 Col_configuration::print() const
100 mtor << "energy : " << energy << '\n';
101 mtor << "line of " << config.size() << " cols\n";
105 Col_configuration::OK()const
108 assert(config.size() == cols.size());