2 align-interface.hh -- declare Align_interface
4 source file of the GNU LilyPond music typesetter
6 (c) 2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
10 #ifndef ALIGN_INTERFACE_HH
11 #define ALIGN_INTERFACE_HH
14 #include "lily-proto.hh"
17 Order elements top to bottom/left to right/right to left etc.
24 stacking-dir -- stack contents of elements in which direction ?
26 align-dir -- Which side to align? -1: left side, 0: centered (around
27 center_l_ if not nil, or around center of width), 1: right side
29 threshold -- (cons MIN MAX), where MIN and MAX are dimensions in
32 alignment-done -- boolean to administrate whether we've done the alignment already (to ensure that the process is done only once)
34 center-element -- element which will be at the center of the group
35 after aligning (when using
36 Align_interface::center_on_element). The center element should
37 have this object as a reference point.
39 elements -- to be aligned elements
41 axes -- list of axis numbers. Should contain only one number.
45 Reads the following from its elements
48 minimum-space -- (cons LEFT RIGHT)
50 extra-space -- (cons LEFT RIGHT)
53 struct Align_interface {
54 static Real alignment_callback (Score_element *,Axis);
55 static void do_side_processing (Score_element*,Axis a);
56 static void set_axis (Score_element*,Axis);
57 static Axis axis (Score_element*) ;
58 static void add_element (Score_element*,Score_element*);
59 static int get_count (Score_element*,Score_element*);
60 static void set_interface (Score_element*);
61 static bool has_interface (Score_element*);
62 static Real center_on_element (Score_element *c, Axis);
65 #endif /* ALIGN_INTERFACE_HH */