]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/dynamic-text-spanner.cc
use classnames for interface naming; remove inclusion of
[lilypond.git] / lily / dynamic-text-spanner.cc
index 79dca98426466be35b4374e78389481690098574..ff6eac541e4dd76e1833b57c715a337dbd09acca 100644 (file)
@@ -22,7 +22,7 @@ class Dynamic_text_spanner
 {
 public:
   DECLARE_SCHEME_CALLBACK (print, (SCM));
-  static bool has_interface (Grob *);
+  DECLARE_GROB_INTERFACE();
 };
 
 /*
@@ -51,7 +51,8 @@ Dynamic_text_spanner::print (SCM smob)
   Grob *me = unsmob_grob (smob);
   Spanner *spanner = dynamic_cast<Spanner *> (me);
 
-  Grob *common = spanner->get_bound (LEFT)->common_refpoint (spanner->get_bound (RIGHT), X_AXIS);
+  Grob *common = spanner->get_bound (LEFT)
+    ->common_refpoint (spanner->get_bound (RIGHT), X_AXIS);
   Output_def *layout = me->layout ();
 
   Interval span_points;
@@ -79,6 +80,23 @@ Dynamic_text_spanner::print (SCM smob)
              encl = -d;
            }
 
+         /*
+           ugh - a special case.
+
+           FIXME: this fixed an issue, but need to have this issue in
+           the issue tracker.
+
+           This fix doesn't quite work: it should only do this if the
+           right bound has a trill too.
+          */
+#if 0
+         if (d == RIGHT && me->get_property ("style") == ly_symbol2scm ("trill"))
+           {
+             pad = 2.0;
+             encl = LEFT;
+           }
+#endif
+         
          Interval ext = b->extent (common, X_AXIS);
          span_points[d] = -d * pad
            + robust_relative_extent (b, common, X_AXIS)
@@ -87,7 +105,6 @@ Dynamic_text_spanner::print (SCM smob)
     }
   while (flip (&d) != LEFT);
 
-  Stencil m;
   SCM properties = Font_interface::text_font_alist_chain (me);
   SCM edge_text = me->get_property ("edge-text");
   Drul_array<Stencil> edge;
@@ -110,6 +127,7 @@ Dynamic_text_spanner::print (SCM smob)
       while (flip (&d) != LEFT);
     }
 
+  Stencil m;
   do
     {
       Interval ext = edge[d].extent (X_AXIS);
@@ -123,7 +141,8 @@ Dynamic_text_spanner::print (SCM smob)
     }
   while (flip (&d) != LEFT);
 
-  if (!span_points.is_empty ())
+  if (!span_points.is_empty ()
+      && span_points.length () > robust_scm2double (me->get_property ("dash-period"), 0.0))
     {
       Stencil l = Line_spanner::line_stencil (me,
                                              Offset (span_points[LEFT], 0),
@@ -135,7 +154,6 @@ Dynamic_text_spanner::print (SCM smob)
 }
 
 ADD_INTERFACE (Dynamic_text_spanner,
-              "dynamic-text-spanner-interface",
               "A text spanner for crescendo texts",
               
               "bound-padding "