]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/paper-column.hh
release: 1.3.69
[lilypond.git] / lily / include / paper-column.hh
1 /*
2   paper-column.hh -- declare  Paper_column
3
4   source file of the GNU LilyPond music typesetter
5
6   (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7 */
8
9
10 #ifndef P_COL_HH
11 #define P_COL_HH
12
13 #include "item.hh"
14 #include "rod.hh"
15 #include "spring.hh"
16
17 /**
18    stuff grouped vertically.
19     This is a class to address items vertically. It contains the data for:
20     \begin{itemize}
21     \item
22     unbroken score
23     \item
24     broken score
25     \item
26     the linespacing problem
27     \end{itemize}
28   */
29
30 class Paper_column : public Item
31
32 public:
33   VIRTUAL_COPY_CONS(Score_element);
34
35   /*
36     ugh.
37
38     TODO:
39     
40     * junk these after spacing is done.
41
42     * Put these in Scheme.
43    */
44
45
46   Array<Column_rod>  minimal_dists_;
47   Array<Column_spring > springs_;
48
49
50   /*
51     Not (yet) in scm, because of messy effects when a column commits suicide.
52    */
53   int  rank_i_;
54   /// set a minimum distance
55   void add_rod (Paper_column * to, Real distance);
56   void add_spring (Paper_column * to, Real dist, Real strength);
57
58   virtual Paper_column *column_l () const;
59   virtual Line_of_score *line_l () const;
60
61   /// if lines are broken then this column is in #line#
62   Line_of_score *line_l_;
63
64   /// which  one (left =0)
65   static int rank_i(Score_element*);
66
67   Paper_column (SCM);
68   Moment when_mom ()const;
69
70   bool musical_b () const;
71   bool used_b () const;
72   void set_rank (int);
73 };
74      
75 #endif // P_COL_HH
76