X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Flookup.cc;h=d7b6b8d26e9bc81c5eada2ab7911128c1de26a2d;hb=97a0169312a260933246ab224e4f8b0969871dd5;hp=c88e37700f0e9be454ecc0f25ac07cd7656267f9;hpb=5af7cd44435fd26fade6e700a3912630e1553a87;p=lilypond.git diff --git a/lily/lookup.cc b/lily/lookup.cc index c88e37700f..d7b6b8d26e 100644 --- a/lily/lookup.cc +++ b/lily/lookup.cc @@ -34,8 +34,6 @@ using namespace std; #include "main.hh" #include "lily-guile.hh" -using std::vector; - Stencil Lookup::beam (Real slope, Real width, Real thick, Real blot) { @@ -77,11 +75,10 @@ Lookup::beam (Real slope, Real width, Real thick, Real blot) scm_cons (scm_from_double (p[Y_AXIS]), points)); - SCM expr = scm_list_n (ly_symbol2scm ("polygon"), + SCM expr = scm_list_4 (ly_symbol2scm ("polygon"), ly_quote_scm (points), scm_from_double (blot), - SCM_BOOL_T, - SCM_UNDEFINED); + SCM_BOOL_T); return Stencil (b, expr); } @@ -249,9 +246,9 @@ Lookup::round_filled_polygon (vector const &points, applies to the given polygon. However, this is quite complicated to check. */ +#ifdef DEBUG const Real epsilon = 0.01; -#ifdef DEBUG /* remove consecutive duplicate points */ for (vsize i = 0; i < points.size (); i++) { @@ -375,11 +372,10 @@ Lookup::round_filled_polygon (vector const &points, } shrunk_box.widen (0.5*blotdiameter, 0.5*blotdiameter); box.unite (shrunk_box); - SCM polygon_scm = scm_list_n (ly_symbol2scm ("polygon"), + SCM polygon_scm = scm_list_4 (ly_symbol2scm ("polygon"), ly_quote_scm (shrunk_points_scm), scm_from_double (blotdiameter), - SCM_BOOL_T, - SCM_UNDEFINED); + SCM_BOOL_T); Stencil polygon = Stencil (box, polygon_scm); return polygon; @@ -421,9 +417,9 @@ Lookup::slur (Bezier curve, Real curvethick, Real linethick, calculate the offset for the two beziers that make the sandwich for the slur */ - Real alpha = (curve.control_[3] - curve.control_[0]).arg (); + Offset dir = (curve.control_[3] - curve.control_[0]).direction (); Bezier back = curve; - Offset perp = curvethick * complex_exp (Offset (0, alpha + M_PI / 2)) * 0.5; + Offset perp = 0.5 * curvethick * Offset (-dir[Y_AXIS], dir[X_AXIS]); back.control_[1] += perp; back.control_[2] += perp; @@ -551,7 +547,7 @@ Stencil Lookup::repeat_slash (Real w, Real s, Real t) { - Real x_width = sqrt ((t * t) + ((t / s) * (t / s))); + Real x_width = hypot (t, t/s); Real height = w * s; SCM controls = scm_list_n (ly_symbol2scm ("moveto"), @@ -577,8 +573,8 @@ Lookup::repeat_slash (Real w, Real s, Real t) SCM_BOOL_T, SCM_UNDEFINED); - Box b (Interval (0, w + sqrt (sqr (t / s) + sqr (t))), - Interval (0, w * s)); + Box b (Interval (0, w + x_width), + Interval (0, height)); return Stencil (b, slashnodot); // http://slashnodot.org } @@ -587,7 +583,7 @@ Stencil Lookup::bracket (Axis a, Interval iv, Real thick, Real protrude, Real blot) { Box b; - Axis other = Axis ((a + 1) % 2); + Axis other = other_axis (a); b[a] = iv; b[other] = Interval (-1, 1) * thick * 0.5;