lilypond-1.1.21
[lilypond.git] / lily / dot-column.cc
blob97afd43bf25f747d247ff003a26598cc76e40616
1 /*
2 dot-column.cc -- implement Dot_column
4 source file of the GNU LilyPond music typesetter
6 (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7 */
9 #include "dots.hh"
10 #include "dot-column.hh"
11 #include "rhythmic-head.hh"
13 void
14 Dot_column::add_dots (Dots *d)
16 dot_l_arr_.push (d);
17 add_dependency (d);
18 add_element (d);
21 void
22 Dot_column::add_head (Rhythmic_head *r)
24 if (!r->dots_l_)
25 return ;
27 head_l_arr_.push (r);
28 add_dependency (r);
29 add_dots (r->dots_l_);
32 void
33 Dot_column::do_substitute_dependency (Score_element*o,Score_element*n)
35 Item *oi =dynamic_cast <Item *> (o);
37 if (oi && dynamic_cast<Rhythmic_head *> (oi))
38 head_l_arr_.substitute (dynamic_cast<Rhythmic_head*> (oi),
39 dynamic_cast<Rhythmic_head*>(n));
40 else if (oi && dynamic_cast<Dots *> (oi))
41 dot_l_arr_.substitute (dynamic_cast<Dots*> (oi),
42 dynamic_cast<Dots*> (n));
45 void
46 Dot_column::do_pre_processing ()
48 Interval w;
49 for (int i=0; i < head_l_arr_.size (); i++)
50 w.unite (head_l_arr_[i]->width ());
52 if (!w.empty_b ())
53 translate_axis (w[RIGHT] - width() [LEFT],X_AXIS);