1 // the breaking problem for a score.
11 /// all stuff which goes onto paper
15 /// the columns, ordered left to right
16 IPointerList<PCol *> cols;
18 /// the idealspacings, no particular order
19 IPointerList<Idealspacing*> suz;
21 /// the staffs ordered top to bottom
22 IPointerList<PStaff*> staffs;
24 /// all symbols in score. No particular order.
25 IPointerList<Item*> its;
27 /// if broken, the different lines
28 IPointerList<Line_of_score*> lines;
30 /// crescs etc; no particular order
31 IPointerList<Spanner *> spanners;
34 IPointerList<Spanner*> broken_spans;
40 /// add a line to the broken stuff. Positions given in #config#
41 void set_breaking(Array<Col_configuration>);
46 void typeset_item(Item *, PCol *,PStaff*,int=1);
49 void typeset_spanner(Spanner*, PStaff*);
51 /// add to bottom of pcols
53 void add_broken(Spanner*);
56 Array<Item*> select_items(PStaff*, PCol*);
58 /// return argument as a cursor.
59 PCursor<PCol *> find_col(const PCol *)const;
64 /// last deed of this struct
65 void output(Tex_stream &ts);
67 /* UTILITY ROUTINES */
69 /// get the spacing between c1 and c2, create one if necessary.
70 Idealspacing* get_spacing(PCol *c1, PCol *c2);
73 void do_connect(PCol *c1, PCol *c2, Real distance_f, Real strength_f);
75 /// connect c1 and c2 and any children of c1 and c2
76 void connect(PCol* c1, PCol *c2, Real distance_f,Real strength_f= 1.0);
78 /* STANDARD ROUTINES */
82 /// before calc_breaking
85 /// calculate where the lines are to be broken, and use results
88 /// after calc_breaking
91 /// delete unused columns
94 /** notes, signs, symbols in a score can be grouped in two ways:
95 horizontally (staffwise), and vertically (columns). #PScore#
96 contains the items, the columns and the staffs.