]> git.donarmstrong.com Git - lilypond.git/blob - lily/skyline-pair.cc
Move Skyline_pair and Paper_system bindings into their own files.
[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
58 bool
59 Skyline_pair::is_empty () const
60 {
61   return skylines_[UP].is_empty ()
62     && skylines_[DOWN].is_empty ();
63 }
64
65 Skyline&
66 Skyline_pair::operator [] (Direction d)
67 {
68   return skylines_[d];
69 }
70
71 Skyline const&
72 Skyline_pair::operator [] (Direction d) const
73 {
74   return skylines_[d];
75 }
76
77 IMPLEMENT_SIMPLE_SMOBS (Skyline_pair);
78 IMPLEMENT_TYPE_P (Skyline_pair, "ly:skyline-pair?");
79 IMPLEMENT_DEFAULT_EQUAL_P (Skyline_pair);
80
81
82
83 SCM
84 Skyline_pair::mark_smob (SCM)
85 {
86   return SCM_EOL;
87 }
88
89 int
90 Skyline_pair::print_smob (SCM s, SCM port, scm_print_state *)
91 {
92   Skyline_pair *r = (Skyline_pair *) SCM_CELL_WORD_1 (s);
93   (void) r;
94
95   scm_puts ("#<Skyline-pair>", port);
96   return 1;
97 }