lilypond-0.1.57
[lilypond.git] / lily / dot-column.cc
blob58a16c1ce5d0956fcc6c7ef0ddfcc937be2096fd
1 /*
2 dot-column.cc -- implement Dot_column
4 source file of the GNU LilyPond music typesetter
6 (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
7 */
9 #include "dots.hh"
10 #include "dot-column.hh"
11 #include "rhythmic-head.hh"
13 void
14 Dot_column::add (Dots *d)
16 dot_l_arr_.push (d);
17 add_dependency (d);
18 add_element (d);
21 void
22 Dot_column::add (Rhythmic_head *r)
24 if (!r->dots_l_)
25 return ;
27 head_l_arr_.push (r);
28 add_dependency (r);
29 add (r->dots_l_);
32 void
33 Dot_column::do_substitute_dependency (Score_elem*o,Score_elem*n)
35 Item *oi =o->item ();
36 Item *ni = n?n->item ():0;
38 if (oi&&oi->is_type_b (Rhythmic_head::static_name ()))
39 head_l_arr_.substitute ((Rhythmic_head*)oi, (Rhythmic_head*)ni);
40 else if (oi && oi->is_type_b (Dots::static_name ()))
41 dot_l_arr_.substitute ((Dots*) oi, (Dots*) ni);
44 void
45 Dot_column::do_pre_processing ()
47 Interval w;
48 for (int i=0; i < head_l_arr_.size (); i++)
49 w.unite (head_l_arr_[i]->width ());
51 if (!w.empty_b ())
52 translate_axis (w[RIGHT] - width() [LEFT],X_AXIS);
55 IMPLEMENT_IS_TYPE_B1(Dot_column, Horizontal_group_item);