]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/line-spanner.cc
* lily/text-spanner.cc: add bound-padding.
[lilypond.git] / lily / line-spanner.cc
index c7b2677f5d478ddda5d0d7e0cd2b8ad4e50e5dcc..900505642907eb38764f45475d6295c9b90e35fd 100644 (file)
@@ -34,9 +34,9 @@ zigzag_stencil (Grob *me,
 
   Real staff_space = Staff_symbol_referencer::staff_space (me);
 
-  double w = robust_scm2double (me->get_property ("zigzag-width"), 1)*staff_space;
-  double l = robust_scm2double (me->get_property ("zigzag-length"), 1)* w;
-  double h = l > w / 2 ? sqrt (l*l - w*w / 4) : 0;
+  double w = robust_scm2double (me->get_property ("zigzag-width"), 1) * staff_space;
+  double l = robust_scm2double (me->get_property ("zigzag-length"), 1) * w;
+  double h = l > w / 2 ? sqrt (l * l - w * w / 4) : 0;
 
   SCM list = scm_list_n (ly_symbol2scm ("zigzag-line"),
                         ly_bool2scm (true),
@@ -84,7 +84,6 @@ Line_spanner::after_line_breaking (SCM g)
        Can't do suicide, since this mucks up finding the trend.
       */
       me->set_property ("print-function", SCM_EOL);
-
     }
   return SCM_EOL;
 }
@@ -96,6 +95,9 @@ Line_spanner::line_stencil (Grob *me,
 {
   Offset dz = to -from;
   SCM type = me->get_property ("style");
+
+  Stencil line;
+  
   if (scm_is_symbol (type)
       && (type == ly_symbol2scm ("line")
          || type == ly_symbol2scm ("dashed-line")
@@ -103,7 +105,7 @@ Line_spanner::line_stencil (Grob *me,
          || type == ly_symbol2scm ("zigzag")
          || (type == ly_symbol2scm ("trill") && dz[Y_AXIS] != 0)))
     {
-      return (type == ly_symbol2scm ("zigzag"))
+      line = (type == ly_symbol2scm ("zigzag"))
        ? zigzag_stencil (me, from, to)
        : Line_interface::line (me, from, to);
     }
@@ -125,7 +127,8 @@ Line_spanner::line_stencil (Grob *me,
        mol.add_at_edge (X_AXIS, RIGHT, m, 0, 0);
       while (m.extent (X_AXIS).length ()
             && mol.extent (X_AXIS).length ()
-            + m.extent (X_AXIS).length () < dz[X_AXIS]);
+            + m.extent (X_AXIS).length () < dz[X_AXIS])
+       ;
 
       /*
        FIXME: should center element on x/y
@@ -135,9 +138,13 @@ Line_spanner::line_stencil (Grob *me,
                             + mol.extent (Y_AXIS).length ()) / 2, Y_AXIS);
 
       mol.translate (from);
-      return mol;
+      line = mol;
     }
-  return Stencil ();
+
+  if (to_boolean (me->get_property ("arrow")))
+    line.add_stencil (Line_interface::arrows (me, from, to, false, true));
+  
+  return line;
 }
 
 /*
@@ -181,7 +188,7 @@ Line_spanner::print (SCM smob)
 
   Real gap = robust_scm2double (me->get_property ("gap"), 0.0);
 
-  Offset ofxy (gap, 0); /*offset from start point to start of line*/
+  Offset ofxy (gap, 0); /* offset from start point to start of line */
   Offset dxy;
   Offset my_off;
   Offset his_off;
@@ -237,8 +244,8 @@ Line_spanner::print (SCM smob)
       Offset dz (p2 -p1);
       Real len = dz.length ();
 
-      Offset dir = dz * (1/ len);
-      dz = (dz.length () - 2*gap) *dir;
+      Offset dir = dz * (1 / len);
+      dz = (dz.length () - 2 * gap) * dir;
 
       Stencil l (line_stencil (me, Offset (0, 0), dz));
 
@@ -258,7 +265,7 @@ Line_spanner::print (SCM smob)
        }
 
       // distance from center to start of line      
-      Real off = gap + ((bound[LEFT]->extent (bound[LEFT], X_AXIS).length ()*3) / 4);
+      Real off = gap + ((bound[LEFT]->extent (bound[LEFT], X_AXIS).length () * 3) / 4);
 
       for (int a = X_AXIS; a < NO_AXES; a++)
        {
@@ -269,7 +276,6 @@ Line_spanner::print (SCM smob)
 
          my_off[ax] = me->relative_coordinate (common[a], ax);
          his_off[ax] = bound[LEFT]->relative_coordinate (common[a], ax);
-
        }
 
       ofxy = dxy * (off / dxy.length ());
@@ -289,5 +295,5 @@ ADD_INTERFACE (Line_spanner, "line-spanner-interface",
               "@code{dashed-line}, @code{trill}, \n"
               "@code{dotted-line} or @code{zigzag}.\n"
               "\n",
-              "gap zigzag-width zigzag-length thickness");
+              "gap zigzag-width zigzag-length thickness arrow");