]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/lookup.cc
Issue 3687 (part 2): Amend docs to use \compressMMRests
[lilypond.git] / lily / lookup.cc
index f37d98c0e3d9e83a8bccb49d227e7b22ae295afc..6bd55bbc7d3826ced290d51bb8f0ff537e4a54c9 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1997--2015 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
   Jan Nieuwenhuizen <janneke@gnu.org>
 
@@ -27,6 +27,7 @@ using namespace std;
 
 #include "line-interface.hh"
 #include "warn.hh"
+#include "international.hh"
 #include "dimensions.hh"
 #include "bezier.hh"
 #include "file-path.hh"
@@ -120,7 +121,7 @@ Lookup::horizontal_line (Interval w, Real th)
 Stencil
 Lookup::blank (Box b)
 {
-  return Stencil (b, scm_from_locale_string (""));
+  return Stencil (b, scm_string (SCM_EOL));
 }
 
 Stencil
@@ -169,13 +170,18 @@ Lookup::filled_box (Box b)
 Stencil
 Lookup::round_filled_box (Box b, Real blotdiameter)
 {
-  if (b.x ().length () < blotdiameter)
-    blotdiameter = b.x ().length ();
-  if (b.y ().length () < blotdiameter)
-    blotdiameter = b.y ().length ();
+  Real width = b.x ().delta ();
+  blotdiameter = min (blotdiameter, width);
+  Real height = b.y ().delta ();
+  blotdiameter = min (blotdiameter, height);
 
-  if (isinf (b.x ().delta ()) || isinf (b.y ().delta ()))
-    return Stencil (b, SCM_EOL);
+  if (blotdiameter < 0.0)
+    {
+      if (!isinf (blotdiameter))
+        warning (_f ("Not drawing a box with negative dimension, %.2f by %.2f.",
+                     width, height));
+      return Stencil (b, SCM_EOL);
+    }
 
   SCM at = (scm_list_n (ly_symbol2scm ("round-filled-box"),
                         scm_from_double (-b[X_AXIS][LEFT]),
@@ -460,6 +466,9 @@ Lookup::bezier_sandwich (Bezier top_curve, Bezier bottom_curve, Real thickness)
                              scm_from_double (top_curve.control_[2][Y_AXIS]),
                              scm_from_double (top_curve.control_[3][X_AXIS]),
                              scm_from_double (top_curve.control_[3][Y_AXIS]),
+                             ly_symbol2scm ("lineto"),
+                             scm_from_double (bottom_curve.control_[3][X_AXIS]),
+                             scm_from_double (bottom_curve.control_[3][Y_AXIS]),
                              ly_symbol2scm ("curveto"),
                              scm_from_double (bottom_curve.control_[2][X_AXIS]),
                              scm_from_double (bottom_curve.control_[2][Y_AXIS]),