]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/align-interface.cc
Imported sources
[lilypond.git] / lily / align-interface.cc
index 5f7306d2b1340ac8aee0099221be2a2c811ba20e..255e4efcf98070006cba73d9cbf91f823d41a6cc 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 2000--2003 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 2000--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
@@ -21,7 +21,7 @@ Align_interface::alignment_callback (SCM element_smob, SCM axis)
   Grob * me = unsmob_grob (element_smob);
   Axis ax = (Axis)gh_scm2int (axis);
   Grob * par = me->get_parent (ax);
-  if (par && !to_boolean (par->get_grob_property ("alignment-done")))
+  if (par && !to_boolean (par->get_grob_property ("positioning-done")))
     {
       Align_interface::align_elements_to_extents (par, ax);
     }
@@ -35,7 +35,7 @@ Align_interface::fixed_distance_alignment_callback (SCM element_smob, SCM axis)
   Grob * me = unsmob_grob (element_smob);
   Axis ax = (Axis)gh_scm2int (axis);
   Grob * par = me->get_parent (ax);
-  if (par && !to_boolean (par->get_grob_property ("alignment-done")))
+  if (par && !to_boolean (par->get_grob_property ("positioning-done")))
     {
       Align_interface::align_to_fixed_distance (par, ax);
     }
@@ -48,7 +48,7 @@ Align_interface::fixed_distance_alignment_callback (SCM element_smob, SCM axis)
 void
 Align_interface::align_to_fixed_distance (Grob *me , Axis a)
 {
-  me->set_grob_property ("alignment-done", SCM_BOOL_T);
+  me->set_grob_property ("positioning-done", SCM_BOOL_T);
   
   SCM d =   me->get_grob_property ("stacking-dir");
   
@@ -56,13 +56,7 @@ Align_interface::align_to_fixed_distance (Grob *me , Axis a)
   if (!stacking_dir)
     stacking_dir = DOWN;
 
-  SCM force = me->get_grob_property ("forced-distance");
-
-  Real dy = 0.0;
-  if (gh_number_p (force))
-    {
-      dy = gh_scm2double (force);
-    }
+  Real dy = robust_scm2double (me->get_grob_property ("forced-distance"),0.0);
   
   Link_array<Grob> elems
     = Pointer_group_interface__extract_grobs (me, (Grob*) 0, "elements");
@@ -126,7 +120,7 @@ Align_interface::align_to_fixed_distance (Grob *me , Axis a)
 void
 Align_interface::align_elements_to_extents (Grob * me, Axis a)
 {
-  me->set_grob_property ("alignment-done", SCM_BOOL_T);
+  me->set_grob_property ("positioning-done", SCM_BOOL_T);
   
   SCM d =   me->get_grob_property ("stacking-dir");
   
@@ -134,14 +128,7 @@ Align_interface::align_elements_to_extents (Grob * me, Axis a)
   if (!stacking_dir)
     stacking_dir = DOWN;
   
-  Interval threshold = Interval (0, Interval::infinity ());
-  SCM thr = me->get_grob_property ("threshold");
-  if (gh_pair_p (thr))
-    {
-      threshold[SMALLER] = gh_scm2double (ly_car (thr));
-      threshold[BIGGER] = gh_scm2double (ly_cdr (thr));      
-    }
-
+  Interval threshold  = robust_scm2interval ( me->get_grob_property ("threshold"), Interval (0, Interval::infinity ()));
   
   Array<Interval> dims;
 
@@ -151,7 +138,7 @@ Align_interface::align_elements_to_extents (Grob * me, Axis a)
   for (int i=0; i < all_grobs.size (); i++) 
     {
       Interval y = all_grobs[i]->extent (me, a);
-      if (!y.empty_b ())
+      if (!y.is_empty ())
        {
          Grob *e =dynamic_cast<Grob*> (all_grobs[i]);
 
@@ -286,7 +273,7 @@ find_fixed_alignment_parent  (Grob *g)
 
 ADD_INTERFACE (Align_interface, "align-interface",
   " Order grobs top to bottom/left to right/right to left etc.",
-  "forced-distance stacking-dir align-dir threshold alignment-done center-element elements axes");
+  "forced-distance stacking-dir align-dir threshold positioning-done center-element elements axes");
 
 
 struct Foobar