]> git.donarmstrong.com Git - lilypond.git/blob - lily/skyline-pair.cc
Add support for max-systems-per-page.
[lilypond.git] / lily / skyline-pair.cc
1 /* 
2   skyline-pair.cc -- implement Skyline_pair
3   
4   source file of the GNU LilyPond music typesetter
5   
6   (c) 2008 Han-Wen Nienhuys <hanwen@lilypond.org>
7   
8 */
9
10 #include "skyline-pair.hh"
11
12 #include "ly-smobs.icc"
13
14 Skyline_pair::Skyline_pair ()
15   : skylines_ (Skyline (DOWN), Skyline (UP))
16 {
17 }
18
19 Skyline_pair::Skyline_pair (vector<Box> const &boxes, Real padding, Axis a)
20   : skylines_ (Skyline (boxes, padding, a, DOWN), Skyline (boxes, padding, a, UP))
21 {
22 }
23
24 Skyline_pair::Skyline_pair (Box const &b, Real padding, Axis a)
25   : skylines_ (Skyline (b, padding, a, DOWN), Skyline (b, padding, a, UP))
26 {
27 }
28
29 void
30 Skyline_pair::raise (Real r)
31 {
32   skylines_[UP].raise (r);
33   skylines_[DOWN].raise (r);
34 }
35
36 void
37 Skyline_pair::shift (Real r)
38 {
39   skylines_[UP].shift (r);
40   skylines_[DOWN].shift (r);
41 }
42
43 void
44 Skyline_pair::insert (Box const &b, Real padding, Axis a)
45 {
46   skylines_[UP].insert (b, padding, a);
47   skylines_[DOWN].insert (b, padding, a);
48 }
49
50 void
51 Skyline_pair::merge (Skyline_pair const &other)
52 {
53   skylines_[UP].merge (other[UP]);
54   skylines_[DOWN].merge (other[DOWN]);
55 }
56
57 void
58 Skyline_pair::print () const
59 {
60   skylines_[UP].print ();
61   skylines_[DOWN].print ();
62 }
63
64 void
65 Skyline_pair::print_points () const
66 {
67   skylines_[UP].print ();
68   skylines_[DOWN].print ();
69 }
70
71
72 bool
73 Skyline_pair::is_empty () const
74 {
75   return skylines_[UP].is_empty ()
76     && skylines_[DOWN].is_empty ();
77 }
78
79 Skyline&
80 Skyline_pair::operator [] (Direction d)
81 {
82   return skylines_[d];
83 }
84
85 Skyline const&
86 Skyline_pair::operator [] (Direction d) const
87 {
88   return skylines_[d];
89 }
90
91 IMPLEMENT_SIMPLE_SMOBS (Skyline_pair);
92 IMPLEMENT_TYPE_P (Skyline_pair, "ly:skyline-pair?");
93 IMPLEMENT_DEFAULT_EQUAL_P (Skyline_pair);
94
95 SCM
96 Skyline_pair::mark_smob (SCM)
97 {
98   return SCM_EOL;
99 }
100
101 int
102 Skyline_pair::print_smob (SCM s, SCM port, scm_print_state *)
103 {
104   Skyline_pair *r = (Skyline_pair *) SCM_CELL_WORD_1 (s);
105   (void) r;
106
107   scm_puts ("#<Skyline-pair>", port);
108   return 1;
109 }