]> git.donarmstrong.com Git - lilypond.git/commitdiff
Fix cut&paste code in Phrasing_slur_engraver:: and Slur_engraver::, and fix a bug...
authorErlend Aasland <erlenda@gmail.com>
Wed, 19 Apr 2006 07:24:42 +0000 (07:24 +0000)
committerErlend Aasland <erlenda@gmail.com>
Wed, 19 Apr 2006 07:24:42 +0000 (07:24 +0000)
ChangeLog
lily/include/slur.hh
lily/phrasing-slur-engraver.cc
lily/slur-engraver.cc
lily/slur.cc
ps/music-drawing-routines.ps

index c26f44a258670181bc4f6c1b3f9242d6da89b7b0..b24cb06d20439b63b8028c1c6746a01b842a2694 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2006-04-19  Erlend Aasland <erlenda@gmail.com>
+
+       * lily/include/slur.hh:
+       * lily/slur.cc:
+       * lily/phrasing-slur-engraver.cc:
+       * lily/slur-engraver.cc: Fix 'cut & paste' code by merging
+       acknowledge_extra_object () from Phrasing_slur_engraver:: and
+       Slur_engraver:: and putting it in
+       Slur::auxiliary_acknowledge_extra_object ().
+
+       * ps/music-drawing-routines.ps (draw_dashed_slur): fix another bug
+
 2006-04-18  Heikki Junes  <hjunes@cc.hut.fi>
 
        * stepmake/bin/add-html-footer.py: fix footer position in
@@ -16,8 +28,8 @@
        * lily/stem-tremolo.cc: move rotated_box () to Lookup:: and update
        callers.
 
-       * lily/lookup.cc: add rotated_box ()
-       * lily/include/lookup.hh:
+       * lily/lookup.cc:
+       * lily/include/lookup.hh: add rotated_box ()
 
 2006-04-18  Heikki Junes  <hjunes@cc.hut.fi>
 
index 390bde5c6f27975aa16250f49760c30fa6c78f96..2c797239ce2876acf221f692dbe492ded0970657 100644 (file)
@@ -9,14 +9,17 @@
 #ifndef SLUR_HH
 #define SLUR_HH
 
+#include "grob-info.hh"
 #include "lily-proto.hh"
 #include "lily-guile.hh"
+#include "std-vector.hh"
 
 class Slur
 {
 public:
   static void add_column (Grob *me, Grob *col);
   static void add_extra_encompass (Grob *me, Grob *col);
+  static void auxiliary_acknowledge_extra_object (Grob_info, vector<Grob*>&, vector<Grob*>&);
   DECLARE_SCHEME_CALLBACK (print, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_control_points, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_direction, (SCM));
index c7571f118cacc109b02a1a12f27c455c5c2caaaf..b3b9abbe0067947f7a9ec47ed51c986327c029d4 100644 (file)
@@ -14,7 +14,6 @@
 #include "note-column.hh"
 #include "slur.hh"
 #include "spanner.hh"
-#include "tie.hh"
 #include "warn.hh"
 
 /*
@@ -92,33 +91,10 @@ Phrasing_slur_engraver::acknowledge_note_column (Grob_info info)
     Slur::add_column (end_slurs_[i], e);
 }
 
-/* FIXME: cut + paste job from Slur:: */
 void
 Phrasing_slur_engraver::acknowledge_extra_object (Grob_info info)
 {
-  Grob *e = info.grob ();
-  SCM avoid = e->get_property ("avoid-slur");
-  if (Tie::has_interface (e)
-      || avoid == ly_symbol2scm ("inside"))
-    {
-      for (vsize i = slurs_.size (); i--;)
-       Slur::add_extra_encompass (slurs_[i], e);
-      for (vsize i = end_slurs_.size (); i--;)
-       Slur::add_extra_encompass (end_slurs_[i], e);
-    }
-  else if (avoid == ly_symbol2scm ("outside")
-          || avoid == ly_symbol2scm ("around"))
-    {
-      Grob *slur = slurs_.size () ? slurs_[0] : 0;
-      slur = (end_slurs_.size () && !slur)
-       ? end_slurs_[0] : slur;
-
-      if (slur)
-       {
-         chain_offset_callback (e, Slur::outside_slur_callback_proc, Y_AXIS);
-         e->set_object ("slur", slur->self_scm ());
-       }
-    }
+  Slur::auxiliary_acknowledge_extra_object (info, slurs_, end_slurs_);
 }
 
 void
index 8b6cd4b414bcfa955430dfac4874bf53dd203c5b..0e649fe566165944aad7131a8f9edb4eacff558a 100644 (file)
@@ -14,7 +14,6 @@
 #include "note-column.hh"
 #include "slur.hh"
 #include "spanner.hh"
-#include "tie.hh"
 #include "warn.hh"
 
 /*
@@ -95,34 +94,7 @@ Slur_engraver::acknowledge_note_column (Grob_info info)
 void
 Slur_engraver::acknowledge_extra_object (Grob_info info)
 {
-  if (slurs_.empty () && end_slurs_.empty ())
-    return ;
-  
-  Grob *e = info.grob ();
-  SCM avoid = e->get_property ("avoid-slur");
-  if (Tie::has_interface (e)
-      || avoid == ly_symbol2scm ("inside"))
-    {
-      for (vsize i = slurs_.size (); i--;)
-       Slur::add_extra_encompass (slurs_[i], e);
-      for (vsize i = end_slurs_.size (); i--;)
-       Slur::add_extra_encompass (end_slurs_[i], e);
-    }
-  else if (avoid == ly_symbol2scm ("outside")
-          || avoid == ly_symbol2scm ("around"))
-    {
-      Grob *slur = slurs_.size () ? slurs_[0] : 0;
-      slur = (end_slurs_.size () && !slur)
-       ? end_slurs_[0] : slur;
-
-      if (slur)
-       {
-         chain_offset_callback (e, Slur::outside_slur_callback_proc, Y_AXIS);
-         e->set_object ("slur", slur->self_scm ());
-       }
-    }
-  else
-    e->warning ("Ignoring grob for slur. avoid-slur not set?");
+  Slur::auxiliary_acknowledge_extra_object (info, slurs_, end_slurs_);
 }
 
 void
index 16b63bef8dd9d51014a74e2eea969b74b620326e..92610d47e7db7f4866b49015bbfaa1df36b4e495 100644 (file)
@@ -24,6 +24,7 @@
 #include "staff-symbol.hh"
 #include "stem.hh"
 #include "text-interface.hh"
+#include "tie.hh"
 #include "warn.hh"
 #include "slur-scoring.hh"
 
@@ -231,6 +232,44 @@ Slur::outside_slur_callback (SCM grob, SCM offset_scm)
   return scm_from_double (scm_to_double (offset_scm) + avoidance_offset);
 }
 
+/*
+ * Used by Slur_engraver:: and Phrasing_slur_engraver::
+ */
+void
+Slur::auxiliary_acknowledge_extra_object (Grob_info info,
+  vector<Grob*>& slurs, vector<Grob*>& end_slurs)
+{
+  if (slurs.empty () && end_slurs.empty ())
+    return;
+  
+  Grob *e = info.grob ();
+  SCM avoid = e->get_property ("avoid-slur");
+  if (Tie::has_interface (e)
+      || avoid == ly_symbol2scm ("inside"))
+    {
+      for (vsize i = slurs.size (); i--;)
+       add_extra_encompass (slurs[i], e);
+      for (vsize i = end_slurs.size (); i--;)
+       add_extra_encompass (end_slurs[i], e);
+    }
+  else if (avoid == ly_symbol2scm ("outside")
+          || avoid == ly_symbol2scm ("around"))
+    {
+      Grob *slur;
+      if (end_slurs.size () && !slurs.size ())
+       slur = end_slurs[0];
+      else
+       slur = slurs[0];
+
+      if (slur)
+       {
+         chain_offset_callback (e, outside_slur_callback_proc, Y_AXIS);
+         e->set_object ("slur", slur->self_scm ());
+       }
+    }
+  else
+    e->warning ("Ignoring grob for slur. avoid-slur not set?");
+}
 
 
 ADD_INTERFACE (Slur, "slur-interface",
index c3ebbaa60a95b3f26247ee6a67aeefd6e55e91d3..e0f28e82a6a21e9b9918409a81bd5c0c255858af 100644 (file)
@@ -242,6 +242,7 @@ gsave
        1 setlinejoin
        setdash
        setlinewidth
+       8 2 roll
        moveto
        curveto
        stroke