2 p-score.hh -- declare Paper_score
4 source file of the GNU LilyPond music typesetter
6 (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
15 #include "lily-proto.hh"
17 #include "music-output.hh"
19 /** all stuff which goes onto paper. notes, signs, symbols in a score
20 #Paper_score# contains the items, the columns.
24 class Paper_score : public Music_output
29 /// the columns, ordered left to right
30 Link_list<Paper_column *> col_p_list_;
32 /// crescs etc; no particular order
33 Pointer_list<Spanner *> span_p_list_;
36 Pointer_list<Score_element*> elem_p_list_;
38 Paper_outputter *outputter_l_;
39 Line_of_score * line_l_;
43 virtual ~Paper_score();
45 String base_output_str () const;
46 virtual Paper_outputter* paper_outputter_p (Paper_stream*) const = 0;
47 virtual Paper_stream* paper_stream_p () const = 0;
49 /// add to bottom of pcols
50 void add_column (Paper_column*);
53 @return argument as a cursor of the list
55 PCursor<Paper_column *> find_col (Paper_column const *) const;
57 Link_array<Paper_column> col_range (Paper_column *left_l, Paper_column *right_l) const;
58 Link_array<Paper_column> breakable_col_range (Paper_column*,Paper_column*) const;
59 Link_array<Item> broken_col_range (Item const*,Item const*) const;
62 /* STANDARD ROUTINES */
65 void typeset_element (Score_element*);
66 void typeset_broken_spanner (Spanner*);
68 void typeset_unbroken_spanner (Spanner*);
74 virtual void process();
75 // can't instantiate template with cygnus' gcc...
76 // virtual ~Paper_score();
80 void remove_line (Line_of_score*);
81 /// before calc_breaking
84 void calc_idealspacing();
85 /// calculate where the lines are to be broken, and use results
86 Array<Column_x_positions> calc_breaking();
88 /// after calc_breaking
91 /// delete unused columns