]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/line-of-score.hh
2856aa04c5c574834a74c5f8b5e1594d09ddf519
[lilypond.git] / lily / include / line-of-score.hh
1 /*
2   line-of-score.hh -- part of GNU LilyPond
3
4   (c) 1996--2000 Han-Wen Nienhuys
5 */
6
7 #ifndef SCORELINE_HH
8 #define SCORELINE_HH
9
10 #include "protected-scm.hh" 
11 #include "column-x-positions.hh"
12 #include "spanner.hh"
13
14 /**
15    The columns of a score that form one line.  The toplevel element.
16    Any element has a Line_of_score as both X and Y reference
17    point. The Paper_score contains one element of this type. Control
18    enters the Score_element dependency calculation from this single
19    Line_of_score object.
20    
21    
22   properties:
23
24     all-elements -- list of all score elements in this line. Needed
25       for protecting elements from GC.
26
27     columns -- list of all paper columns
28
29   */
30 class Line_of_score : public Spanner
31 {
32 public:
33
34   
35   void post_processing();
36
37   /// -> SCM
38   int rank_i_;
39
40   Protected_scm output_;
41   Line_of_score();
42     
43   /// is #c# contained in #*this#?
44   bool contains_b (Paper_column const *c) const;
45   int element_count () const;
46
47   void break_into_pieces (Array<Column_x_positions> const&);
48   void output_lines ();
49
50   Link_array<Item> broken_col_range (Item const*, Item const*) const;
51   Link_array<Paper_column> column_l_arr () const;
52   
53   void add_column (Paper_column*);
54   void typeset_element (Score_element*);
55   void output_molecule (SCM, Offset);
56   void output_scheme (SCM);
57   void pre_processing ();
58 protected:
59   VIRTUAL_COPY_CONS(Score_element);
60 };
61
62 #endif
63