]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/slur.cc
Merge commit '052a546' into original
[lilypond.git] / lily / slur.cc
index 22535ef7658c2c9ef8f8d65a96ff4c289ac4d6cd..2e573ebf7c44749e201b72a29a03d4ac92e94bcd 100644 (file)
@@ -14,6 +14,7 @@
 #include "bezier.hh"
 #include "directional-element-interface.hh"
 #include "font-interface.hh"
+#include "item.hh"
 #include "pointer-group-interface.hh"
 #include "lookup.hh"
 #include "main.hh"             // DEBUG_SLUR_SCORING
@@ -97,9 +98,6 @@ Slur::height (SCM smob)
     : ly_interval2scm (Interval ());
 }
 
-/*
-  Ugh should have dash-length + dash-period
-*/
 MAKE_SCHEME_CALLBACK (Slur, print, 1);
 SCM
 Slur::print (SCM smob)
@@ -121,9 +119,6 @@ Slur::print (SCM smob)
   Bezier one = get_curve (me);
   Stencil a;
 
-  /*
-    TODO: replace dashed with generic property.
-  */
   SCM p = me->get_property ("dash-period");
   SCM f = me->get_property ("dash-fraction");
   if (scm_is_number (p) && scm_is_number (f))
@@ -135,23 +130,26 @@ Slur::print (SCM smob)
                      line_thick);
 
 #if DEBUG_SLUR_SCORING
-  SCM quant_score = me->get_property ("quant-score");
-
-  if (to_boolean (me->layout ()
-                 ->lookup_variable (ly_symbol2scm ("debug-slur-scoring")))
-      && scm_is_string (quant_score))
+  SCM annotation = me->get_property ("annotation");
+  if (!scm_is_string (annotation))
+    {
+      SCM debug = me->layout ()->lookup_variable (ly_symbol2scm ("debug-slur-scoring"));
+      if (to_boolean (debug))
+       annotation = me->get_property ("quant-score");
+    }
+  
+  if (scm_is_string (annotation))
     {
       string str;
       SCM properties = Font_interface::text_font_alist_chain (me);
 
-
       if (!scm_is_number (me->get_property ("font-size")))
        properties = scm_cons (scm_acons (ly_symbol2scm ("font-size"), scm_from_int (-6), SCM_EOL),
                             properties);
       
       Stencil tm = *unsmob_stencil (Text_interface::interpret_markup
                                    (me->layout ()->self_scm (), properties,
-                                    quant_score));
+                                    annotation));
       a.add_at_edge (Y_AXIS, get_grob_direction (me), tm, 1.0);
     }
 #endif
@@ -368,6 +366,13 @@ Slur::calc_cross_staff (SCM smob)
   extract_grob_set (me, "note-columns", cols);
   extract_grob_set (me, "encompass-objects", extras);
 
+  for (vsize i = 0; i < cols.size (); i++)
+    {
+      if (Grob *s = Note_column::get_stem (cols[i]))
+       if (to_boolean (s->get_property ("cross-staff")))
+         return SCM_BOOL_T;
+    }
+
   /* the separation items are dealt with in replace_breakable_encompass_objects
      so we can ignore them here */
   vector<Grob*> non_sep_extras;
@@ -386,6 +391,7 @@ ADD_INTERFACE (Slur,
               "A slur",
               
               /* properties */
+              "annotation "
               "avoid-slur "    /* UGH. */
               "control-points "
               "dash-fraction "