]> git.donarmstrong.com Git - lilypond.git/commitdiff
Clean up the Align_interface API.
authorJoe Neeman <joeneeman@gmail.com>
Mon, 25 Oct 2010 02:30:29 +0000 (19:30 -0700)
committerJoe Neeman <joeneeman@gmail.com>
Mon, 25 Oct 2010 04:23:33 +0000 (21:23 -0700)
lily/align-interface.cc
lily/include/align-interface.hh
lily/page-layout-problem.cc
lily/system.cc

index d985a869c51673bc15329bf1d4e0428fc26a820b..44b3fc7085da0a4a8306ebb8b721a1603576ae5b 100644 (file)
@@ -143,6 +143,30 @@ get_skylines (Grob *me,
   reverse (*ret);
 }
 
+vector<Real>
+Align_interface::get_minimum_translations (Grob *me,
+                                          vector<Grob*> const &all_grobs,
+                                          Axis a)
+{
+  return internal_get_minimum_translations (me, all_grobs, a, true, false, 0, 0);
+}
+
+vector<Real>
+Align_interface::get_pure_minimum_translations (Grob *me,
+                                               vector<Grob*> const &all_grobs,
+                                               Axis a, int start, int end)
+{
+  return internal_get_minimum_translations (me, all_grobs, a, true, true, start, end);
+}
+
+vector<Real>
+Align_interface::get_minimum_translations_without_min_dist (Grob *me,
+                                                           vector<Grob*> const &all_grobs,
+                                                           Axis a)
+{
+  return internal_get_minimum_translations (me, all_grobs, a, false, false, 0, 0);
+}
+
 // If include_fixed_spacing is true, the manually fixed spacings
 // induced by stretchable=0 or alignment-distances are included
 // in the minimum translations here.  If you want to find the minimum
@@ -150,11 +174,11 @@ get_skylines (Grob *me,
 // want to actually lay out the page, then it should be false (or
 // else centered dynamics will break when there is a fixed alignment).
 vector<Real>
-Align_interface::get_minimum_translations (Grob *me,
-                                          vector<Grob*> const &all_grobs,
-                                          Axis a,
-                                          bool include_fixed_spacing,
-                                          bool pure, int start, int end)
+Align_interface::internal_get_minimum_translations (Grob *me,
+                                                   vector<Grob*> const &all_grobs,
+                                                   Axis a,
+                                                   bool include_fixed_spacing,
+                                                   bool pure, int start, int end)
 {
   if (!pure && a == Y_AXIS && dynamic_cast<Spanner*> (me) && !me->get_system ())
     me->programming_error ("vertical alignment called before line-breaking");
@@ -270,7 +294,7 @@ Align_interface::align_elements_to_minimum_distances (Grob *me, Axis a)
 {
   extract_grob_set (me, "elements", all_grobs);
 
-  vector<Real> translates = get_minimum_translations (me, all_grobs, a, true, false, 0, 0);
+  vector<Real> translates = get_minimum_translations (me, all_grobs, a);
   if (translates.size ())
     for (vsize j = 0; j < all_grobs.size (); j++)
       all_grobs[j]->translate_axis (translates[j], a);
@@ -280,7 +304,7 @@ Real
 Align_interface::get_pure_child_y_translation (Grob *me, Grob *ch, int start, int end)
 {
   extract_grob_set (me, "elements", all_grobs);
-  vector<Real> translates = get_minimum_translations (me, all_grobs, Y_AXIS, true, true, start, end);
+  vector<Real> translates = get_pure_minimum_translations (me, all_grobs, Y_AXIS, start, end);
 
   if (translates.size ())
     {
index 3cc04272a824a51b946665d2c1858faf2d8342ac..45963a7a00f6d5f946153f98b38602db4e017701 100644 (file)
 #include "std-vector.hh"
 #include "grob-interface.hh"
 
-struct Align_interface
+class Align_interface
 {
+public:
   DECLARE_SCHEME_CALLBACK (align_to_minimum_distances, (SCM));
   DECLARE_SCHEME_CALLBACK (align_to_ideal_distances, (SCM));
   static void align_elements_to_minimum_distances(Grob *, Axis a);
   static void align_elements_to_ideal_distances(Grob *);
-  static vector<Real> get_minimum_translations (Grob *, vector<Grob*> const&,
-                                               Axis a,
-                                               bool include_fixed_spacing,
-                                               bool pure, int start, int end);
+  static vector<Real> get_minimum_translations (Grob *, vector<Grob*> const&, Axis a);
+  static vector<Real> get_minimum_translations_without_min_dist (Grob *, vector<Grob*> const&, Axis a);
+  static vector<Real> get_pure_minimum_translations (Grob *, vector<Grob*> const&,
+                                                    Axis a, int start, int end);
   static void set_ordered (Grob *);
   static Axis axis (Grob *);
   static void add_element (Grob *, Grob *);
@@ -42,6 +43,12 @@ struct Align_interface
   DECLARE_GROB_INTERFACE();
 
   static Real get_pure_child_y_translation (Grob *, Grob *child, int start, int end);
+
+protected:
+  static vector<Real> internal_get_minimum_translations (Grob *, vector<Grob*> const&,
+                                                        Axis a,
+                                                        bool include_fixed_spacing,
+                                                        bool pure, int start, int end);
 };
 
 #endif /* ALIGN_INTERFACE_HH */
index 7292126ddcf52ee2d3f9030304792824cc36064d..d2859996726fc1ac5eb58b4ea0c33b629f0c2abe 100644 (file)
@@ -190,8 +190,7 @@ Page_layout_problem::append_system (System *sys, Spring const& spring, Real padd
 
   extract_grob_set (align, "elements", all_elts);
   vector<Grob*> elts = filter_dead_elements (all_elts);
-  vector<Real> minimum_offsets = Align_interface::get_minimum_translations (align, elts, Y_AXIS, false,
-                                                                           false, 0, 0);
+  vector<Real> minimum_offsets = Align_interface::get_minimum_translations_without_min_dist (align, elts, Y_AXIS);
 
   Skyline up_skyline (UP);
   Skyline down_skyline (DOWN);
index dd3a46011f9b9cba38aba9e0a9524e4c991c93d0..9e33cc52b8c02163fb3dbb860c163a4016051553 100644 (file)
@@ -581,7 +581,7 @@ System::pure_refpoint_extent (vsize start, vsize end)
     return Interval ();
 
   extract_grob_set (alignment, "elements", staves);
-  vector<Real> offsets = Align_interface::get_minimum_translations (alignment, staves, Y_AXIS, true, true, start, end);
+  vector<Real> offsets = Align_interface::get_pure_minimum_translations (alignment, staves, Y_AXIS, start, end);
 
   for (vsize i = 0; i < offsets.size (); ++i)
     if (Page_layout_problem::is_spaceable (staves[i]))
@@ -608,7 +608,7 @@ System::part_of_line_pure_height (vsize start, vsize end, bool begin)
     return Interval ();
 
   extract_grob_set (alignment, "elements", staves);
-  vector<Real> offsets = Align_interface::get_minimum_translations (alignment, staves, Y_AXIS, true, true, start, end);
+  vector<Real> offsets = Align_interface::get_pure_minimum_translations (alignment, staves, Y_AXIS, start, end);
 
   Interval ret;
   for (vsize i = 0; i < staves.size (); ++i)