X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fside-position-interface.hh;h=ea3a0a969778d4c6a09b74d25c847c9b907c3b5c;hb=2745cbd907f8216a4cc1fc5f488ae19efdfdbd10;hp=839c088c2cf7d00b15ee271449f8a832af3cea54;hpb=ee513a2f7d18fc8d43e1c291350ed81856b0192d;p=lilypond.git diff --git a/lily/include/side-position-interface.hh b/lily/include/side-position-interface.hh index 839c088c2c..ea3a0a9697 100644 --- a/lily/include/side-position-interface.hh +++ b/lily/include/side-position-interface.hh @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1999--2000 Han-Wen Nienhuys + (c) 1999--2003 Han-Wen Nienhuys */ @@ -13,53 +13,37 @@ #include "spanner.hh" #include "item.hh" +/* + TODO: move out unrelated callbacks. -/** - Position victim object (ELT_L_) next to other objects (the support). - - side-support -- list of score elements - - direction -- where to put the victim object (left or right?) - - side-relative-direction -- if set: get the direction from a different object, and multiply by this. - - direction-source -- in case side-relative-direction is set, where - to get the direction - - minimum-space -- minimum distance that the victim should move - (after padding) - - padding -- add this much extra space between victim and support - - TODO: move out unrelated callbacks. - - */ + TODO: reduce number of methods. +*/ struct Side_position_interface { - Score_element * elt_l_; public: - Side_position_interface (Score_element const*); - static Real side_position (Dimension_cache const *); - static Real aligned_on_self (Dimension_cache const *); - static Real aligned_side (Dimension_cache const *); - static Real quantised_position (Dimension_cache const*); - static Real centered_on_parent (Dimension_cache const*); - void set_axis (Axis); - void set_minimum_space (Real); - void set_padding (Real); - void set_quantised (Axis); - Axis get_axis () const; + DECLARE_SCHEME_CALLBACK (aligned_on_support_extents, (SCM element, SCM axis)); + DECLARE_SCHEME_CALLBACK (aligned_on_support_refpoints, (SCM element, SCM axis)); - bool supported_b () const; - bool has_interface_b () const; - void add_support (Score_element*); - - void add_staff_support (); - Direction get_direction () const; - void set_direction (Direction); + DECLARE_SCHEME_CALLBACK (aligned_side, (SCM element, SCM axis)); + + DECLARE_SCHEME_CALLBACK (out_of_staff, (SCM element, SCM axis)); + + DECLARE_SCHEME_CALLBACK (quantised_position, (SCM element, SCM axis)); + + static SCM general_side_position (Grob*, Axis, bool); + static void set_axis (Grob*,Axis); + static void set_minimum_space (Grob*,Real); + static void set_padding (Grob*,Real); + static Axis get_axis (Grob*) ; + static bool supported_b (Grob*) ; + static bool has_interface (Grob*) ; + static void add_support (Grob*,Grob*); + static void add_staff_support (Grob*); + static Direction get_direction (Grob*); + static void set_direction (Grob*,Direction); }; -Side_position_interface side_position (Score_element*); + #endif /* SIDE_POSITION_INTERFACE_HH */