}
/* The positions, in ascending order. */
-std::vector<int>
+vector<int>
Stem::note_head_positions (Grob *me)
{
- std::vector<int> ps;
+ vector<int> ps;
extract_grob_set (me, "note-heads", heads);
for (vsize i = heads.size (); i--;)
ps.push_back (p);
}
- ps.sort (integer_compare);
+ vector_sort (ps, integer_compare);
return ps;
}
Real ss = Staff_symbol_referencer::staff_space (me);
int durlog = duration_log (me);
- std::vector<Real> a;
+ vector<Real> a;
/* WARNING: IN HALF SPACES */
Real length = robust_scm2double (me->get_property ("length"), 7);
if (dots)
{
Real dp = Staff_symbol_referencer::get_position (dots);
- Real flagy = flag (me).extent (Y_AXIS)[-dir] * 2 / ss;
+ Interval flag_yext = flag (me).extent (Y_AXIS) * (2 / ss) + stem_end;
/* Very gory: add myself to the X-support of the parent,
which should be a dot-column. */
- if (dir * (stem_end + flagy - dp) < 0.5)
+
+ if (flag_yext.distance (dp) < 0.5)
{
Grob *par = dots->get_parent (X_AXIS);
(Stem_tremolo::raw_stencil () looks at the beam.) --hwn */
Real minlen = 1.0
- + 2 * Stem_tremolo::raw_stencil (t_flag).extent (Y_AXIS).length ()
+ + 2 * t_flag->extent (t_flag, Y_AXIS).length ()
/ ss;
if (durlog >= 3)
return SCM_BOOL_T;
extract_grob_set (me, "note-heads", ro_heads);
- Link_array<Grob> heads (ro_heads);
- heads.sort (compare_position);
+ vector<Grob*> heads (ro_heads);
+ vector_sort (heads, compare_position);
Direction dir = get_grob_direction (me);
if (dir < 0)
- heads.reverse ();
+ reverse (heads);
Real thick = thickness (me);
TODO: maybe property stroke-style should take different values,
e.g. "" (i.e. no stroke), "single" and "double" (currently, it's
'() or "grace"). */
- std::string flag_style;
+ string flag_style;
SCM flag_style_scm = me->get_property ("flag-style");
if (scm_is_symbol (flag_style_scm))
bool adjust = true;
- std::string staffline_offs;
+ string staffline_offs;
if (flag_style == "mensural")
/* Mensural notation: For notes on staff lines, use different
flags than for notes between staff lines. The idea is that
staffline_offs = "";
char dir = (get_grob_direction (me) == UP) ? 'u' : 'd';
- std::string font_char = flag_style
+ string font_char = flag_style
+ to_string (dir) + staffline_offs + to_string (log);
Font_metric *fm = Font_interface::get_default_font (me);
Stencil flag = fm->find_by_name ("flags." + font_char);
SCM stroke_style_scm = me->get_property ("stroke-style");
if (scm_is_string (stroke_style_scm))
{
- std::string stroke_style = ly_scm2string (stroke_style_scm);
+ string stroke_style = ly_scm2string (stroke_style_scm);
if (!stroke_style.empty ())
{
- std::string font_char = to_string (dir) + stroke_style;
+ string font_char = to_string (dir) + stroke_style;
Stencil stroke = fm->find_by_name ("flags." + font_char);
if (stroke.is_empty ())
me->warning (_f ("flag stroke `%s' not found", font_char));
// URG
Real stem_width = thickness (me);
Real blot
- = me->layout ()->get_dimension (ly_symbol2scm ("blotdiameter"));
+ = me->layout ()->get_dimension (ly_symbol2scm ("blot-diameter"));
Box b = Box (Interval (-stem_width / 2, stem_width / 2),
Interval (stem_y[DOWN] * half_space, stem_y[UP] * half_space));
{
Direction d = get_grob_direction (me);
Real blot
- = me->layout ()->get_dimension (ly_symbol2scm ("blotdiameter"));
+ = me->layout ()->get_dimension (ly_symbol2scm ("blot-diameter"));
Real stem_width = thickness (me);
Real half_space = Staff_symbol_referencer::staff_space (me) * 0.5;
Real y2 = robust_scm2double (me->get_property ("stem-end-position"), 0.0);