2 align-item.hh -- declare Align_elem
4 source file of the GNU LilyPond music typesetter
6 (c) 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
10 #ifndef VERTICAL_ALIGN_ITEM_HH
11 #define VERTICAL_ALIGN_ITEM_HH
13 #include "axis-group-element.hh"
14 #include "interval.hh"
15 #include "direction.hh"
17 #include "hash-table.hh"
20 Order elements top to bottom/left to right/right to left etc..
22 TODO: implement padding.
24 document usage of this.
26 class Align_element : public virtual Axis_group_element {
32 Hash_table<Score_element*,int> priority_i_hash_;
34 Interval threshold_interval_ ;
37 Should high priorities be first or last?
40 Direction stacking_dir_;
43 Which side to align? -1: left side, 0: centered (around
44 center_l_ if not nil, or around center of width), 1: right side
46 URG. Unintuitive if stacking_dir_ == -1
52 Score_element * center_l_;
56 void add_element (Score_element*);
57 void add_element_priority (Score_element*, int);
58 bool contains_b (Score_element const*) const;
60 Score_element *get_elt_by_priority (int) const;
61 int get_priority (Score_element const*) const;
63 void sort_elements ();
64 virtual void do_print() const;
65 virtual void do_substitute_element_pointer (Score_element*,Score_element*);
66 virtual void do_post_processing() ;
67 virtual void do_pre_processing ();
68 virtual void do_side_processing ();
70 #endif // VERTICAL_ALIGN_ITEM_HH