#include <cmath>
#include <cctype>
+using namespace std;
#include "line-interface.hh"
#include "warn.hh"
#include "main.hh"
#include "lily-guile.hh"
-using std::vector;
-
Stencil
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);
}
Lookup::round_filled_box (Box b, Real blotdiameter)
{
Real width = b.x ().delta ();
- blotdiameter = std::min (blotdiameter, width);
+ blotdiameter = min (blotdiameter, width);
Real height = b.y ().delta ();
- blotdiameter = std::min (blotdiameter, height);
+ blotdiameter = min (blotdiameter, height);
if (blotdiameter < 0.0)
{
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;
{
Box b;
b[X_AXIS] = Interval (0, iv.length ());
- b[Y_AXIS] = Interval (std::min (0., protrude), std::max (0.0, protrude));
+ b[Y_AXIS] = Interval (min (0., protrude), max (0.0, protrude));
vector<Offset> points;
points.push_back (Offset (iv[LEFT], 0));