]> git.donarmstrong.com Git - lilypond.git/blob - lily/axis-group.cc
release: 0.1.12
[lilypond.git] / lily / axis-group.cc
1 /*
2   axis-group.cc -- implement Axis_group_administration
3
4   source file of the GNU LilyPond music typesetter
5
6   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
7 */
8 #include "interval.hh"
9 #include "axis-group.hh"
10 #include "score-elem.hh"
11 #include "debug.hh"
12
13 /** don't copy anything: an element can only be in one
14   Axis_group_element at one time.  */
15 Axis_group_administration::Axis_group_administration (Axis_group_administration const&)
16 {
17 }
18
19 bool 
20 Axis_group_administration::contains_b (Score_elem const *e) const
21 {
22   return elem_l_arr_.find_l (e);
23 }
24
25 Interval
26 Axis_group_administration::extent (Axis axis) const
27 {
28   Interval r;
29   for (int i=0; i < elem_l_arr_.size(); i++) 
30     r.unite (elem_l_arr_[i]->extent (axis));
31   return r;
32 }
33
34 void
35 Axis_group_administration::add_element (Score_elem*e,
36                                         Axis_group_element*g, Axis a1, Axis a2)
37 {
38   assert (! e->axis_group_l_a_[a1] && !e->axis_group_l_a_[a2]);
39   e->axis_group_l_a_[a1] = g;
40   e->axis_group_l_a_[a2] = g;    
41   elem_l_arr_.push (e);
42 }
43
44
45
46 void
47 Axis_group_administration::remove_element (Score_elem*e, Axis a1, Axis a2)
48 {
49   assert (contains_b (e));
50   elem_l_arr_.unordered_substitute (e,0);
51   
52   e->axis_group_l_a_[a1] = 0;
53   e->axis_group_l_a_[a2] = 0;    
54 }
55
56 void
57 Axis_group_administration::remove_all (Axis a1, Axis a2)
58 {
59   for (int i=0; i < elem_l_arr_.size(); i++) 
60     {
61       Score_elem*e=elem_l_arr_[i];
62       e->axis_group_l_a_[a1] = 0;
63       e->axis_group_l_a_[a2] = 0;  
64     }
65   elem_l_arr_.clear();
66 }
67
68
69 void    
70 Axis_group_administration::print() const
71 {
72 #ifndef NPRINT
73   for (int i=0; i < elem_l_arr_.size(); i++) 
74     DOUT << elem_l_arr_[i]->name() << ' ';
75 #endif
76 }