]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/align-element.hh
release: 1.3.15
[lilypond.git] / lily / include / align-element.hh
1 /*
2   align-item.hh -- declare Align_elem
3
4   source file of the GNU LilyPond music typesetter
5
6   (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7 */
8
9
10 #ifndef VERTICAL_ALIGN_ITEM_HH
11 #define VERTICAL_ALIGN_ITEM_HH
12
13 #include "axis-group-element.hh"
14 #include "interval.hh"
15 #include "direction.hh"
16 #include "axes.hh"
17 #include "hash-table.hh"
18
19 /**
20   Order elements top to bottom/left to right/right to left etc..
21
22   TODO: implement padding.
23
24   document usage of this.
25  */
26 class Align_element : public virtual Axis_group_element {
27 public:
28   Interval threshold_interval_ ;
29
30   /**
31      Should high priorities be first or last?
32    */
33     
34   Direction stacking_dir_;
35
36   /**
37      Which side to align?  -1: left side, 0: centered (around
38      center_l_ if not nil, or around center of width), 1: right side
39
40      URG. Unintuitive if stacking_dir_ == -1 
41   */
42
43   Direction align_dir_;
44   
45   Axis axis () const;
46   
47   Align_element ();
48   void set_axis (Axis);
49   int get_count (Score_element*)const;
50 protected:
51   virtual void do_post_processing() ;
52   virtual void do_pre_processing ();
53   virtual void do_side_processing ();
54 };
55 #endif // VERTICAL_ALIGN_ITEM_HH