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);
}
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++)
{
}
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;
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;
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"),
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
}
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;