2 vertical-align-item.cc -- implement Vertical_align_elem
4 source file of the GNU LilyPond music typesetter
6 (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
9 #include "vertical-align-elem.hh"
10 #include "interval.hh"
13 Vertical_align_element::add (Score_elem
*el_l
)
15 assert (! contains_b (el_l
));
16 elem_l_arr_
.push (el_l
);
17 add_dependency (el_l
);
21 Vertical_align_element::do_substitute_dependency (Score_elem
*o
,Score_elem
*n
)
24 while ((i
= elem_l_arr_
.find_i (o
))>=0)
32 Align elements top to bottom.
33 The first element has its top at y =0.0 afterwards
35 TODO configurable, like Horizontal_align_item
38 Vertical_align_element::do_post_processing()
41 for (int i
=0; i
< elem_l_arr_
.size(); i
++)
43 Interval y
= elem_l_arr_
[i
]->height() ;
51 for (int i
=0 ; i
< elem_l_arr_
.size(); i
++)
53 elem_l_arr_
[i
]->translate_axis (- dims
[i
][1] - where_f
, Y_AXIS
);
54 where_f
+= dims
[i
].length();
59 Vertical_align_element::contains_b (Score_elem
const *e
) const
61 return elem_l_arr_
.find_l (e
);
64 Vertical_align_element::Vertical_align_element()
66 transparent_b_
= true;
71 IMPLEMENT_IS_TYPE_B1(Vertical_align_element
, Score_elem
);