X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=lily%2Finclude%2Falign-interface.hh;h=54005bd986ef9216cafbdd9a8f2b613073a0a53a;hb=66adac8fa4ba5126100ff8748a2576c6983637c5;hp=3eb8b9e972066614ad08d986b8c94c6d8a508875;hpb=7181c77e5d46a271f5f76e99bee7f844611e23e4;p=lilypond.git diff --git a/lily/include/align-interface.hh b/lily/include/align-interface.hh index 3eb8b9e972..54005bd986 100644 --- a/lily/include/align-interface.hh +++ b/lily/include/align-interface.hh @@ -1,66 +1,38 @@ /* align-interface.hh -- declare Align_interface - + source file of the GNU LilyPond music typesetter - - (c) 2000 Han-Wen Nienhuys - - */ + + (c) 2000--2006 Han-Wen Nienhuys +*/ #ifndef ALIGN_INTERFACE_HH #define ALIGN_INTERFACE_HH -#include "axes.hh" #include "lily-proto.hh" - -/* - Order elements top to bottom/left to right/right to left etc. - - - ******* - - element properties - - stacking-dir -- stack contents of elements in which direction ? - - align-dir -- Which side to align? -1: left side, 0: centered (around - center_l_ if not nil, or around center of width), 1: right side - - threshold -- (cons MIN MAX), where MIN and MAX are dimensions in - staffspace - - alignment-done -- boolean to administrate whether we've done the alignment already (to ensure that the process is done only once) - - center-element -- element which will be at the center of the group - after aligning (when using - Align_interface::center_on_element). The center element should - have this object as a reference point. - - elements -- to be aligned elements - - axes -- list of axis numbers. Should contain only one number. - - ******* - - Reads the following from its elements - - - minimum-space -- (cons LEFT RIGHT) - - extra-space -- (cons LEFT RIGHT) - -*/ -struct Align_interface { - static Real alignment_callback (Score_element *,Axis); - static void do_side_processing (Score_element*,Axis a); - static void set_axis (Score_element*,Axis); - static Axis axis (Score_element*) ; - static void add_element (Score_element*,Score_element*); - static int get_count (Score_element*,Score_element*); - static void set_interface (Score_element*); - static bool has_interface (Score_element*); - static Real center_on_element (Score_element *c, Axis); +#include "std-vector.hh" +#include "grob-interface.hh" + +struct Align_interface +{ + DECLARE_SCHEME_CALLBACK (calc_positioning_done, (SCM)); + DECLARE_SCHEME_CALLBACK (stretch_after_break, (SCM element)); + static void align_to_fixed_distance (Grob *, Axis a); + static void align_elements_to_extents (Grob *, Axis a); + static vector get_extents_aligned_translates (Grob *, vector const&, + Axis a, + bool safe, int start, int end); + static void set_ordered (Grob *); + static Axis axis (Grob *); + static void add_element (Grob *, Grob *); + static int get_count (Grob *, Grob *); + + DECLARE_GROB_INTERFACE(); + + static Real get_pure_child_y_translation (Grob *, Grob *child, int start, int end); }; +Grob *find_fixed_alignment_parent (Grob *g); + #endif /* ALIGN_INTERFACE_HH */