*/
#include <stdio.h>
+
#include "cluster.hh"
-#include "grob.hh"
#include "spanner.hh"
#include "item.hh"
#include "pitch.hh"
#include "box.hh"
#include "interval.hh"
#include "paper-def.hh"
-#include "paper-column.hh"
-#include "note-column.hh"
+#include "warn.hh"
+
/*
- * TODO: Add support for cubic spline segments.
+ TODO: Add support for cubic spline segments.
+
*/
Molecule
brew_cluster_piece (Grob *me, Array<Offset> bottom_points, Array<Offset> top_points)
{
#if 0
- Real blotdiameter = me->get_paper ()->get_var ("blotdiameter");
+ Real blotdiameter = me->get_paper ()->get_realvar (ly_symbol2scm ("blotdiameter"));
#else
Real blotdiameter = Staff_symbol_referencer::staff_space (me)/2;
#endif
SCM shape_scm = me->get_grob_property ("style");
String shape;
+
if (gh_symbol_p (shape_scm))
{
shape = ly_symbol2string (shape_scm);
}
else
{
- shape = "leftsided-stairs";
+ programming_error ("#'style should be symbol.");
+ me->suicide();
+ return Molecule();
}
box.add_point (bottom_points[i] - hvpadding);
box.add_point (Offset(top_points[i + 1][X_AXIS],
top_points[i][Y_AXIS]) + hvpadding);
- out.add_molecule (Lookup::roundfilledbox (box, blotdiameter));
+ out.add_molecule (Lookup::round_filled_box (box, blotdiameter));
}
}
else if (String::compare (shape, "rightsided-stairs") == 0)
box.add_point (Offset(bottom_points[i][X_AXIS],
bottom_points[i + 1][Y_AXIS]) - hvpadding);
box.add_point (top_points[i + 1] + hvpadding);
- out.add_molecule (Lookup::roundfilledbox (box, blotdiameter));
+ out.add_molecule (Lookup::round_filled_box (box, blotdiameter));
}
}
else if (String::compare (shape, "centered-stairs") == 0)
hvpadding);
box.add_point (Offset (right_xmid, top_points[i][Y_AXIS]) +
hvpadding);
- out.add_molecule (Lookup::roundfilledbox (box, blotdiameter));
+ out.add_molecule (Lookup::round_filled_box (box, blotdiameter));
left_xmid = right_xmid;
}
Real right_xmid = bottom_points[size - 1][X_AXIS];
hvpadding);
box.add_point (Offset (right_xmid, top_points[size - 1][Y_AXIS]) +
hvpadding);
- out.add_molecule (Lookup::roundfilledbox (box, blotdiameter));
+ out.add_molecule (Lookup::round_filled_box (box, blotdiameter));
}
else if (String::compare (shape, "ramp") == 0)
{
Real left_coord = left_bound->relative_coordinate (common, X_AXIS);
+ Real unit = Staff_symbol_referencer::staff_space (me) *0.5;
+
+ /*
+ TODO: should we move the cluster a little to the right to be in
+ line with the center of the note heads?
+
+ */
for (SCM s = cols; gh_pair_p (s); s = ly_cdr (s))
{
Grob * col = unsmob_grob (ly_car (s));
gh_scm2int (gh_cdr (posns)));
Real x = col->relative_coordinate (common, X_AXIS) - left_coord;
- bottom_points.push (Offset (x, s[DOWN] *0.5));
- top_points.push (Offset (x, s[UP] * 0.5));
+ bottom_points.push (Offset (x, s[DOWN] *unit));
+ top_points.push (Offset (x, s[UP] * unit));
}
/*
Real x = right_bound->relative_coordinate (common,X_AXIS) - left_coord;
- bottom_points.insert (Offset (x, s[DOWN] * 0.5),0);
- top_points.insert (Offset (x, s[UP] * 0.5),0);
+ bottom_points.insert (Offset (x, s[DOWN] * unit),0);
+ top_points.insert (Offset (x, s[UP] * unit),0);
}
}
}