]> git.donarmstrong.com Git - lilypond.git/commitdiff
* scm/define-grob-properties.scm (avoid-slur): New property.
authorjanneke <janneke>
Thu, 18 Aug 2005 09:26:26 +0000 (09:26 +0000)
committerjanneke <janneke>
Thu, 18 Aug 2005 09:26:26 +0000 (09:26 +0000)
* lily/phrasing-slur-engraver.cc (acknowledge_extra_object):
* lily/slur-engraver.cc (acknowledge_extra_object): Invoke
outside_slur_callback if avoid-slur != #'inside.

* scm/define-grobs.scm (Fingering, Textscript): No
inside-slur/outside-slur preference.
(DynamicLineSpanner): Always outside slur.

* input/regression/slur-script.ly: More tests.

ChangeLog
Documentation/topdocs/NEWS.tely
input/regression/slur-script.ly
lily/phrasing-slur-engraver.cc
lily/side-position-interface.cc
lily/slur-engraver.cc
lily/slur.cc
scm/define-grob-properties.scm
scm/define-grobs.scm

index bc9950f1462f5ce91eeafbb1ef7672124fb3109c..0217a72a03c2be9f591f111db2b1fbbc2c058cf8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2005-08-18  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+       * scm/define-grob-properties.scm (avoid-slur): New property.
+
+       * lily/phrasing-slur-engraver.cc (acknowledge_extra_object):
+       * lily/slur-engraver.cc (acknowledge_extra_object): Invoke
+       outside_slur_callback if avoid-slur != #'inside.
+
+       * scm/define-grobs.scm (Fingering, Textscript): No
+       inside-slur/outside-slur preference.
+       (DynamicLineSpanner): Always outside slur.
+
+       * input/regression/slur-script.ly: More tests.
+
 2005-08-17  Graham Percival  <gpermus@gmail.com>
 
        * Documentation/user/lilypond-book: fix notime entry.
 
        * lily/rest-collision.cc (do_shift): spello.
 
-       * input/proportional.ly: use #'used property. Set break-overshoot property.
+       * input/proportional.ly: use #'used property. Set break-overshoot
+       property.
 
        * mf/feta-arrow.mf: center on arrow tip center, iso. tip edge.
 
index fbf15849810afcdd038728025af8545bdb77c246..ce1b7c309a4b4a0163f4b39a846ff07d07fefc6b 100644 (file)
@@ -50,13 +50,13 @@ This feature was sponsored by Yoshinobu Ishizaki
                   
 @item
 Text scripts such as fingering instructions and dynamics avoid
-collisions with Slurs
+collisions with slurs
 
 @lilypond[fragment,relative=1]
 {
-  b_1( b <b d f>_1_3_5)
+  b_1( f'_1_2_3 c_3_4_5 a)
+  b( f'\p b,)
   c-2_\markup { \italic {"cresc."}}( f c)
-  c-3( c\f c)
 }
 @end lilypond
 
index 04f0b3f64788962c61679e52f691645b85bf422a..bf3162ec2c4694472885cf86a5a0310f83b754a6 100644 (file)
@@ -1,12 +1,13 @@
 
 \header {
 
-    texidoc = "A slur avoids collisions with scripts.  Only articulations
-    go inside the slur, dynamic markings, fingerings texts etc. go outside
-    of slur.
+    texidoc = "A slur avoids collisions with scripts.  Articulations
+    go inside the slur, dynamic markings go outside the slur.
+    Fingerings and texts are placed either inside or outside.
 
-    For different configurations, the scripts can be moved manually."
-    }
+    For different configurations, the defaults can be changed, and
+    scripts can be moved manually."
+  }
 
 \version "2.6.0"
 \layout {
     b4-.( b-. b-.)
     b(-.  d-.)
 
-    b_1( b b_1_2_3)
-    %% Allow Fingering to go inside slur.
-    \override Fingering #'inside-slur = ##t
-    b( d_1 b)
-    c_\markup { \italic {"cresc."}}( f c)
-    c( c\f c)
+    b_1( f'_1_2_3 c_3_4_5 a)
+    b( f'\p b,)
+    
+    %% Do not force dynamics outside slur, only avoid collisions.
+    \override DynamicLineSpanner #'avoid-slur = #'()
+    \override DynamicLineSpanner #'padding = #0.3
+    b( e\p e\f b)
+    
+    c_\markup { \italic {"cresc."}}( c c)
     \once \override Script #'padding = #1.2
     b-.( b-.
     \once \override Script #'padding = #1.2
index 72b900c804e53bd8ae86db8a5d882872d89fa833..2be42433a2e6ebf579aa570034d0471e7535651c 100644 (file)
@@ -94,16 +94,16 @@ void
 Phrasing_slur_engraver::acknowledge_extra_object (Grob_info info)
 {
   Grob *e = info.grob ();
-  SCM inside = e->get_property ("inside-slur");
+  SCM avoid = e->get_property ("avoid-slur");
   if (Tie::has_interface (e)
-      || to_boolean (inside))
+      || avoid == ly_symbol2scm ("inside"))
     {
       for (int i = slurs_.size (); i--;)
        Slur::add_extra_encompass (slurs_[i], e);
       for (int i = end_slurs_.size (); i--;)
        Slur::add_extra_encompass (end_slurs_[i], e);
     }
-  else if (inside == SCM_BOOL_F
+  else if (avoid != ly_symbol2scm ("inside")
           && e->name () != "DynamicText")
     {
       Grob *slur = slurs_.size () ? slurs_[0] : 0;
index 0acb79da215d8626140a98c025950967928e6f3c..97790b3830dd5c3395808485e78d6af77326b5fb 100644 (file)
@@ -263,4 +263,5 @@ ADD_INTERFACE (Side_position_interface, "side-position-interface",
               "side-relative-direction "
               "side-support-elements "
               "slur-padding "
-              "staff-padding ");
+              "staff-padding "
+              );
index 58b71d4aa2aa6696aef1e0bee557eabe7ac3689c..6f76ed297f8c2e6cf7ebe1d2570faed2462e7304 100644 (file)
@@ -93,16 +93,16 @@ void
 Slur_engraver::acknowledge_extra_object (Grob_info info)
 {
   Grob *e = info.grob ();
-  SCM inside = e->get_property ("inside-slur");
+  SCM avoid = e->get_property ("avoid-slur");
   if (Tie::has_interface (e)
-      || to_boolean (inside))
+      || avoid == ly_symbol2scm ("inside"))
     {
       for (int i = slurs_.size (); i--;)
        Slur::add_extra_encompass (slurs_[i], e);
       for (int i = end_slurs_.size (); i--;)
        Slur::add_extra_encompass (end_slurs_[i], e);
     }
-  else if (inside == SCM_BOOL_F
+  else if (avoid != ly_symbol2scm ("inside")
           && e->name () != "DynamicText")
     {
       Grob *slur = slurs_.size () ? slurs_[0] : 0;
index 9956bea2316de0af0923038725b78e58176c33fa..bdf75392418e40f7c6029052853fcc16847e1169 100644 (file)
@@ -184,6 +184,7 @@ Slur::outside_slur_callback (SCM grob, SCM axis)
   bool consider[] = { false, false, false };
   Real ys[] = {0, 0, 0};
   bool do_shift = false;
+  SCM avoid = script->get_property ("avoid-slur");
 
   for (int d = LEFT, k = 0; d <= RIGHT; d++, k++)
     {
@@ -201,8 +202,10 @@ Slur::outside_slur_callback (SCM grob, SCM axis)
          consider[k] = true;
 
          /* Request shift if slur is contained script's Y, or if
-            script is fully inside slur.  */
-         if (yext.contains (ys[k]) || dir * ys[k] > dir * yext[-dir])
+            script is inside slur and avoid == outside.  */
+         if (yext.contains (ys[k])
+             || (avoid == ly_symbol2scm ("outside")
+                 && dir * ys[k] > dir * yext[-dir]))
            do_shift = true;
        }
     }
index b6a8dde3e3f3afdf6fd0326423b2e5e5eea10455..8a477c570be47ed0b2d47c7ddd4744724072911a 100644 (file)
@@ -276,9 +276,9 @@ slur, the closer it is to this height.")
      (horizontal-shift ,integer? "An integer that identifies ranking
 of note-column for horizontal shifting. This is used by
 @internalsref{note-collision-interface}.")
-     (inside-slur ,boolean? "If set, this script should be inside the
-slur. If set to false, the script places itself around the slur. If
-unset, script and slur ignore each other ")
+     (avoid-slur ,symbol? "Method of handling slur collisions.
+Choices are @{around}, @{ignore}, @{inside}, @{outside}.  If
+unset, script and slur ignore eachother.")
      (inspect-quants ,number-pair? "If debugging is set,
 set beam quant to this position, and print the respective scores.")
 
index af885796625d195ea13f3e169f10edd2411a8ce4..2aa0c7dc4f86594c8bbd0bfd3334019268564f23 100644 (file)
@@ -20,7 +20,7 @@
     (Accidental
      . (
        (print-function . ,Accidental_interface::print)
-       (inside-slur . #t)
+       (avoid-slur . inside)
        (cautionary-style . parentheses)
        (after-line-breaking-callback . ,Accidental_interface::after_line_breaking)
        (meta . ((class . Item)
        (Y-offset-callbacks . (,Side_position_interface::aligned_side))
        (staff-padding . 0.1)
        (padding . 0.6)
-       (inside-slur . #f)
+       (avoid-slur . outside)
        (slur-padding . 0.3)
        (minimum-space . 1.2)
        (direction . -1)
        ;; sync with TextScript (?)
 
        (padding . 0.5)
-       (inside-slur . #f)
        (slur-padding . 0.2)
        (staff-padding . 0.5)
        (self-alignment-X . 0)
        (padding . 0.5)
        (staff-padding . 0.5)
        (before-line-breaking-callback . ,Script_interface::before_line_breaking)
-       (inside-slur . #f)
        (slur-padding . 0.5)
        (script-priority . 200)
        ;; todo: add X self alignment?