]> git.donarmstrong.com Git - lilypond.git/commitdiff
* lily/slur-configuration.cc (fit_factor): more robust check for
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Fri, 23 Dec 2005 13:03:36 +0000 (13:03 +0000)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Fri, 23 Dec 2005 13:03:36 +0000 (13:03 +0000)
point in curve X-extent.

* lily/slur.cc (outside_slur_callback): return offset_scm, not 0.
(outside_slur_callback): check for 'outside avoidance.

* lily/slur-configuration.cc (score_extra_encompass): don't use
bound->column() == avoid->column() for checking extents, as this
doesn't work for accidentals.

* lily/slur-engraver.cc (acknowledge_extra_object): remove
DynamicText hardcoding.

ChangeLog
lily/slur-configuration.cc
lily/slur.cc

index ae9f2b229e128d3440007fc5e6bfaa5e45daa534..3ce49ae40bd596055e8cb2dc250fe532067602dd 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2005-12-23  Han-Wen Nienhuys  <hanwen@xs4all.nl>
 
+       * lily/slur-configuration.cc (fit_factor): more robust check for
+       point in curve X-extent.
+
+       * lily/slur.cc (outside_slur_callback): return offset_scm, not 0.
+       (outside_slur_callback): check for 'outside avoidance.
+
        * lily/slur-configuration.cc (score_extra_encompass): don't use
        bound->column() == avoid->column() for checking extents, as this
        doesn't work for accidentals. 
index 4d32a9a545b2d213a3bbceca77127c6045516506..cdd1d56736a6b8d2db8bbc43e05a0fad05c9b562 100644 (file)
@@ -81,7 +81,11 @@ fit_factor (Offset dz_unit, Offset dz_perp,
       Offset z = (avoid[i] - x0);
       Offset p (dot_product (z, dz_unit),
                d * dot_product (z, dz_perp));
-      if (!curve_xext.contains (p[X_AXIS]))
+
+      Real eps = 0.01;
+      Interval pext = eps * Interval (-1,1) + p[X_AXIS];
+      pext.intersect (curve_xext);
+      if (pext.is_empty () || pext.length () <= 2.1* eps)
        continue;
 
       Real y = curve.get_other_coordinate (X_AXIS, p[X_AXIS]);
index 1672032d40a672810645494410523c533813230c..82f0e050c5b121b87a7fd8251f757ff55fb68df7 100644 (file)
@@ -152,14 +152,15 @@ SCM
 Slur::outside_slur_callback (SCM grob, SCM offset_scm)
 {
   Grob *script = unsmob_grob (grob);
-  Grob *slur = unsmob_grob (script->get_object ("slur"));
+  Grob *slur = unsmob_grob (script->get_object ("slur")); 
 
   if (!slur)
     return offset_scm;
 
   SCM avoid = script->get_property ("avoid-slur");
-  if (avoid != ly_symbol2scm ("outside"))
-    return scm_from_int (0);
+  if (avoid != ly_symbol2scm ("outside")
+      && avoid != ly_symbol2scm ("around"))
+    return offset_scm;
   
   Direction dir = get_grob_direction (script);
   if (dir == CENTER)
@@ -208,7 +209,7 @@ Slur::outside_slur_callback (SCM grob, SCM offset_scm)
          /* Request shift if slur is contained script's Y, or if
             script is inside slur and avoid == outside.  */
          if (yext.contains (ys[k])
-             || dir * ys[k] > dir * yext[-dir])
+             || (dir * ys[k] > dir * yext[-dir] && avoid == ly_symbol2scm ("outside")))
            do_shift = true;
        }
     }