]> git.donarmstrong.com Git - lilypond.git/blob - lily/elem-group.cc
e4a012d3f3cab6bd921e26384cf9ab7d2d550d9f
[lilypond.git] / lily / elem-group.cc
1 /*
2   elem-group.cc -- implement Element_group
3
4   source file of the GNU LilyPond music typesetter
5
6   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
7 */
8
9 #include "elem-group.hh"
10 #include "interval.hh"
11 #include "item.hh"
12 #include "debug.hh"
13
14 Interval
15 Element_group::do_height()const 
16 {
17     Interval r;
18     for (int i=0; i < elem_l_arr_.size(); i++) 
19         r.unite(elem_l_arr_[i]->height());
20     return r;
21 }
22
23 Interval
24 Element_group::do_width()const 
25 {
26     Interval r;
27     for (int i=0; i < elem_l_arr_.size(); i++) 
28         if (elem_l_arr_[i]->item()) // makes no at preprocessing for spanners. 
29             r.unite(elem_l_arr_[i]->width());
30     return r;
31 }
32
33 void
34 Element_group::add_element(Score_elem*i_l)
35 {
36     i_l->group_element_i_ ++;
37     
38     assert(! elem_l_arr_.find_l(i_l));
39     elem_l_arr_.push(i_l);
40     add_dependency(i_l);
41 }
42
43 void
44 Element_group::translate(Offset o)
45 {
46     for (int i=0; i < elem_l_arr_.size(); i++) 
47         elem_l_arr_[i]->translate(o);
48 }
49
50 IMPLEMENT_STATIC_NAME(Element_group);
51
52 void
53 Element_group::do_print() const
54 {
55 #ifndef NPRINT
56     for (int i=0; i < elem_l_arr_.size(); i++) 
57         mtor << elem_l_arr_[i]->name() << ' ';
58 #endif
59 }
60
61 void
62 Element_group::do_substitute_dependency(Score_elem* old, Score_elem *new_l)
63 {
64     int i;
65
66     while ((i=elem_l_arr_.find_i(old))>=0) {
67         
68         old->group_element_i_--;
69         if (new_l){ 
70             new_l->group_element_i_ ++;
71             elem_l_arr_[i] = new_l;
72         }else {     
73             elem_l_arr_.del(i);
74         }
75     }
76
77 }
78
79 String
80 Element_group::TeX_string()const
81 {
82     return "";
83 }
84
85 Element_group::Element_group(Element_group const&s)
86     :elem_l_arr_(s.elem_l_arr_)
87 {
88    for (int i=0; i < elem_l_arr_.size(); i++) 
89         elem_l_arr_[i]->group_element_i_ ++;   
90 }
91
92 Element_group::Element_group()
93 {}