2 p-score.hh -- declare PScore
4 source file of the GNU LilyPond music typesetter
6 (c) 1996,1997 Han-Wen Nienhuys <hanwen@stack.nl>
15 #include "lily-proto.hh"
18 /** all stuff which goes onto paper. notes, signs, symbols in a score
19 #PScore# contains the items, the columns.
27 /// the columns, ordered left to right
28 Pointer_list<PCol *> cols;
30 /// the idealspacings, no particular order
31 Pointer_list<Idealspacing*> suz;
33 /// crescs etc; no particular order
34 Pointer_list<Spanner *> spanners;
37 Pointer_list<Score_elem*> elem_p_list_;
39 Super_elem *super_elem_l_;
45 /// add a line to the broken stuff. Positions given in #config#
46 void set_breaking(Array<Col_hpositions> const &);
49 add the item in specified containers. If breakstatus is set
50 properly, add it to the {pre,post}break of the pcol.
52 void typeset_item(Item *item_p, PCol *pcol_l,int breakstatus=0);
54 /// add to bottom of pcols
58 @return argument as a cursor of the list
60 PCursor<PCol *> find_col(PCol const *)const;
62 Link_array<PCol> col_range(PCol *left_l, PCol *right_l) const;
63 Link_array<PCol> breakable_col_range(PCol*,PCol*) const;
64 Link_array<PCol> broken_col_range(PCol*,PCol*) const;
69 /// last deed of this struct
70 void output(Tex_stream &ts);
72 /* UTILITY ROUTINES */
74 /// get the spacing between c1 and c2, create one if necessary.
75 Idealspacing* get_spacing(PCol *c1, PCol *c2);
78 void do_connect(PCol *c1, PCol *c2, Real distance_f, Real strength_f);
80 /// connect c1 and c2 and any children of c1 and c2
81 void connect(PCol* c1, PCol *c2, Real distance_f,Real strength_f= 1.0);
83 /* STANDARD ROUTINES */
87 void typeset_element(Score_elem*);
88 void typeset_broken_spanner(Spanner*);
90 void typeset_unbroken_spanner(Spanner*);
94 /// before calc_breaking
97 /// calculate where the lines are to be broken, and use results
100 /// after calc_breaking
103 /// delete unused columns