1 // the breaking problem for a score.
11 /// all stuff which goes onto paper
13 Paperdef *paper_; // indirection.
15 /// the columns, ordered left to right
16 PointerList<PCol *> cols;
18 /// the idealspacings, no particular order
19 PointerList<Idealspacing*> suz;
21 /// the staffs ordered top to bottom
22 PointerList<PStaff*> staffs;
24 /// all symbols in score. No particular order.
25 PointerList<Item*> its;
27 /// if broken, the different lines
28 PointerList<Line_of_score*> lines;
30 /// crescs etc; no particular order
31 PointerList<Spanner *> spanners;
33 /****************************************************************/
35 svec<Item*> select_items(PStaff*, PCol*);
37 /// before calc_breaking
42 calculate where the lines are to be broken.
46 lines contain the broken lines.
49 /// after calc_breaking
52 /// search all pcols which are breakable.
53 svec<const PCol *> find_breaks() const;
55 /// add a line to the broken stuff. Positions given in #config#
56 void add_line(svec<const PCol *> curline, svec<Real> config);
58 /// helper: solve for the columns in #curline#.
59 svec<Real> solve_line(svec<const PCol *> curline) const;
63 void typeset_item(Item *, PCol *,PStaff*,int=1);
64 /// add to bottom of pcols
69 void output(Tex_stream &ts);
71 Idealspacing* get_spacing(PCol *, PCol *);
73 get the spacing between c1 and c2, create one if necessary.
77 PCursor<PCol *> find_col(PCol *);
79 void problem_OK()const ;
84 /** notes, signs, symbols in a score can be grouped in two ways:
85 horizontally (staffwise), and vertically (columns). #PScore#
86 contains the items, the columns and the staffs.