]> git.donarmstrong.com Git - lilypond.git/commitdiff
lily/hairpin.cc: use 'broken-bound-padding for broken hairpins
authorKeith OHara <k-ohara5a5a@oco.net>
Mon, 12 Dec 2011 06:11:54 +0000 (22:11 -0800)
committerKeith OHara <k-ohara5a5a@oco.net>
Sat, 24 Dec 2011 22:19:24 +0000 (14:19 -0800)
lily/hairpin.cc
scm/define-grob-properties.scm

index 7d31712df4c4ac45d3ea83f45de958ab293754d9..9f8c706893d6a5cf4fc2725d0b8e9e723594fff5 100644 (file)
@@ -103,7 +103,8 @@ Hairpin::broken_bound_padding (SCM smob)
   if (span_bars[DOWN] != span_bars[UP])
     return scm_from_double (0.0);
 
-  return scm_from_double (0.6);
+  return scm_from_double (robust_scm2double (me->get_property ("bound-padding"), 0.5)
+                          / 2.0);
 }
 
 MAKE_SCHEME_CALLBACK (Hairpin, print, 1);
@@ -164,17 +165,33 @@ Hairpin::print (SCM smob)
   do
     {
       Item *b = bounds[d];
+      Interval e = (Axis_group_interface::has_interface (b)
+                    ? Axis_group_interface::generic_bound_extent (b, common, X_AXIS)
+                    : robust_relative_extent (b, common, X_AXIS));
+
       x_points[d] = b->relative_coordinate (common, X_AXIS);
       if (broken [d])
         {
           if (d == LEFT)
-            x_points[d] = b->extent (common, X_AXIS)[RIGHT];
+            x_points[d] = e[-d];
+          else
+            {
+              Real broken_bound_padding = 0.0;
+              extract_grob_set (me, "concurrent-hairpins", chp);
+              for (vsize i = 0; i < chp.size (); i++)
+                {
+                  Spanner *span_elt = dynamic_cast<Spanner *> (chp[i]);
+                  if (span_elt->get_bound (RIGHT)->break_status_dir () == LEFT)
+                    broken_bound_padding = max (broken_bound_padding,
+                                                robust_scm2double (span_elt->get_property ("broken-bound-padding"), 0.0));
+                }
+              x_points[d] -= d * broken_bound_padding;
+            }
         }
       else
         {
           if (Text_interface::has_interface (b))
             {
-              Interval e = b->extent (common, X_AXIS);
               if (!e.is_empty ())
                 x_points[d] = e[-d] - d * padding;
             }
@@ -200,9 +217,6 @@ Hairpin::print (SCM smob)
                     }
                 }
 
-              Interval e = (Axis_group_interface::has_interface (b)
-                            ? Axis_group_interface::generic_bound_extent (b, common, X_AXIS)
-                            : robust_relative_extent (b, common, X_AXIS));
               if (neighbor_found)
                 {
                   if (Hairpin::has_interface (adjacent))
@@ -232,31 +246,15 @@ Hairpin::print (SCM smob)
                     x_points[d] = e[-d];
                   else
                     x_points[d] = e[d];
+
+                  if (Item::is_non_musical (b))
+                    x_points[d] -= d * padding;
                 }
             }
         }
     }
   while (flip (&d) != LEFT);
 
-  // here, add padding for barlines that are not at the end of a staff
-  if (Item::is_non_musical (bounds[RIGHT]) && bounds[RIGHT]->break_status_dir () == 0)
-    x_points[RIGHT] -= padding;
-
-  // here, add padding for barlines that are at the end of a staff
-  Real broken_bound_padding = 0.0;
-  if (bounds[RIGHT]->break_status_dir () == -1)
-    {
-      extract_grob_set (me, "concurrent-hairpins", chp);
-      for (vsize i = 0; i < chp.size (); i++)
-        {
-          Spanner *span_elt = dynamic_cast<Spanner *> (chp[i]);
-          if (span_elt->get_bound (RIGHT)->break_status_dir () == -1)
-            broken_bound_padding = max (broken_bound_padding,
-                                         robust_scm2double (span_elt->get_property ("broken-bound-padding"), 0.0));
-        }
-    }
-  x_points[RIGHT] -= broken_bound_padding;
-
   Real width = x_points[RIGHT] - x_points[LEFT];
 
   if (width < 0)
index 2391c4e6f0ea279d206daa464f1f793e3829a586..b8c4ecc900d1f4485d39e12b96e6e1aa6fcf81b7 100644 (file)
@@ -163,7 +163,7 @@ stick out of its bounds?")
 @code{#t} means visible, @code{#f} means killed.")
      (breakable ,boolean? "Allow breaks here.")
      (broken-bound-padding ,number? "The amount of padding to insert
-around spanner bounds at a line break.")
+when a spanner is broken at a line break.")
 
 ;;
 ;; c