= robust_scm2drul (me->internal_get_property (sym), zero);
pair[xdir] = 0.0;
- me->internal_set_property (sym, ly_interval2scm (pair));
+ me->set_property (sym, ly_interval2scm (pair));
}
+/*
+ Return beam that encompasses the span of the tuplet bracket.
+*/
+
Grob *
-Tuplet_bracket::parallel_beam (Grob *me_grob, vector<Grob*> const &cols, bool *equally_long)
+Tuplet_bracket::parallel_beam (Grob *me_grob, vector<Grob*> const &cols,
+ bool *equally_long)
{
Spanner *me = dynamic_cast<Spanner *> (me_grob);
}
*equally_long =
- (beam_stems[0] == stems[LEFT] && beam_stems.back () == stems[RIGHT]);
+ (beam_stems[0] == stems[LEFT]
+ && beam_stems.back () == stems[RIGHT]);
return beams[LEFT];
}
extract_grob_set (me, "note-columns", columns);
+ SCM scm_positions = me->get_property ("positions");
+ if (!me->is_live ())
+ return SCM_EOL;
+
+ if (!scm_is_pair (scm_positions))
+ programming_error ("Positions should be number pair");
+
Drul_array<Real> positions
- = ly_scm2realdrul (me->get_property ("positions"));
+ = robust_scm2drul (scm_positions, Drul_array<Real> (0,0));
Grob *commonx = get_common_x (me);
Direction dir = get_grob_direction (me);
Direction d = LEFT;
do
straight_corners[d] += -d * shorten[d] / length * dz;
- while (flip (&d) != LEFT)
- ;
+ while (flip (&d) != LEFT);
if (gap.is_empty ())
gap = Interval (0, 0);
Interval tuplet_x (tuplets[i]->extent (commonx, X_AXIS));
Interval tuplet_y (tuplets[i]->extent (commony, Y_AXIS));
+ if (!tuplets[i]->is_live ())
+ continue;
+
Direction d = LEFT;
- Drul_array<Real> positions = ly_scm2realdrul (tuplets[i]->get_property ("positions"));
+ Drul_array<Real> positions = robust_scm2interval (tuplets[i]->get_property ("positions"),
+ Interval (0,0));
Real other_dy = positions[RIGHT] - positions[LEFT];
Spanner *me = unsmob_spanner (smob);
extract_grob_set (me, "note-columns", columns);
-
/*
Don't print if it doesn't span time.
*/
if (!par_beam
|| get_grob_direction (par_beam) != dir)
calc_position_and_height (me, &offset, &dy);
- else
+ else if (columns.size ()
+ && Note_column::get_stem (columns[0])
+ && Note_column::get_stem (columns.back ()))
{
- SCM ps = par_beam->get_property ("positions");
+ /*
+ trigger set_stem_ends
+ */
+ (void) par_beam->get_property ("quantized-positions");
- Real lp = scm_to_double (scm_car (ps));
- Real rp = scm_to_double (scm_cdr (ps));
- Real ss = Staff_symbol_referencer::staff_space (me);
+ Drul_array<Grob *> stems (Note_column::get_stem (columns[0]),
+ Note_column::get_stem (columns.back ()));
+
+
+
+
+ Real ss = 0.5 * Staff_symbol_referencer::staff_space (me);
+ Real lp = ss * robust_scm2double (stems[LEFT]->get_property ("stem-end-position"), 0.0);
+ Real rp = ss * robust_scm2double (stems[RIGHT]->get_property ("stem-end-position"), 0.0);
+
offset = lp + dir * (0.5 + scm_to_double (me->get_property ("padding")));
dy = (rp - lp);
-
- dy *= ss;
- offset *= ss;
}