]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/include/side-position-interface.hh
release: 1.3.92
[lilypond.git] / lily / include / side-position-interface.hh
index 12495db3afc9d2ca9dedfac0b62ec4c9c2c8faaa..a4f8e903566e25ad8c39391f1d6d8fee8478503d 100644 (file)
 #include "spanner.hh"
 #include "item.hh"
 
-struct Side_position_interface
+
+/**
+   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
+
+   self-alignment-X -- real number: -1 = left aligned, 0 = center, 1
+     right-aligned in X direction.
+
+     Set to an element pointer, if you want that element to be the center. 
+     
+   self-alignment-Y -- like self-alignment-X but for Y axis
+   
+   TODO: move  out unrelated callbacks.
+
+   TODO: reduce number of methods.
+
+*/
+struct Side_position
 {
-  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;
-  
-  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);
+  static Real side_position (Score_element *, Axis);
+  static Real aligned_on_self (Score_element *, Axis);
+  static Real aligned_side (Score_element *, Axis);  
+  static Real quantised_position (Score_element *, Axis);
+  static Real centered_on_parent (Score_element *, Axis);
+  static void set_axis (Score_element*,Axis);
+  static void set_minimum_space (Score_element*,Real);
+  static void set_padding (Score_element*,Real);
+  static Axis get_axis (Score_element*) ;
+  static bool supported_b (Score_element*) ;
+  static bool has_interface (Score_element*) ;
+  static void add_support (Score_element*,Score_element*);
+  static void add_staff_support (Score_element*);
+  static Direction get_direction (Score_element*);
+  static void set_direction (Score_element*,Direction);
 };
 
-Side_position_interface side_position (Score_element*);
 
 #endif /* SIDE_POSITION_INTERFACE_HH */