]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/column-description.hh
Run grand-replace for 2012
[lilypond.git] / lily / include / column-description.hh
1 /*
2   This file is part of LilyPond, the GNU music typesetter.
3
4   Copyright (C) 2011--2012 Mike Solomon <mike@apollinemike.com>
5
6   LilyPond is free software: you can redistribute it and/or modify
7   it under the terms of the GNU General Public License as published by
8   the Free Software Foundation, either version 3 of the License, or
9   (at your option) any later version.
10
11   LilyPond is distributed in the hope that it will be useful,
12   but WITHOUT ANY WARRANTY; without even the implied warranty of
13   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   GNU General Public License for more details.
15
16   You should have received a copy of the GNU General Public License
17   along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
18 */
19
20 #ifndef COLUMN_DESCRIPTION_HH
21 #define COLUMN_DESCRIPTION_HH
22
23 #include "lily-proto.hh"
24 #include "smobs.hh"
25 #include "spring.hh"
26
27 struct Rod_description
28 {
29   vsize r_;
30   Real dist_;
31
32   bool operator < (const Rod_description r)
33   {
34     return r_ < r.r_;
35   }
36
37   Rod_description ()
38   {
39     r_ = 0;
40     dist_ = 0;
41   }
42
43   Rod_description (vsize r, Real d)
44   {
45     r_ = r;
46     dist_ = d;
47   }
48 };
49
50 struct Column_description
51 {
52   vector<Rod_description> rods_;
53   vector<Rod_description> end_rods_;   /* use these if they end at the last column of the line */
54   Spring spring_;
55   Spring end_spring_;
56
57   SCM break_permission_;
58   Interval keep_inside_line_;
59
60   Column_description ()
61   {
62     break_permission_ = SCM_EOL;
63   }
64   static Column_description get_column_description (vector<Grob *> const &cols, vsize col_index, bool line_starter);
65 };
66
67 #endif /* COLUMN_DESCRIPTION_HH */