static Item *
get_x_bound_item (Grob *me_grob, Direction hdir, Direction my_dir)
{
- Spanner *me = dynamic_cast<Spanner*> (me_grob);
+ Spanner *me = dynamic_cast<Spanner *> (me_grob);
Item *g = me->get_bound (hdir);
if (Note_column::has_interface (g)
&& Note_column::get_stem (g)
&& Note_column::dir (g) == my_dir)
- {
- g = Note_column::get_stem (g);
- }
+ g = Note_column::get_stem (g);
return g;
}
Grob *s1 = Note_column::get_stem (cols[0]);
Grob *s2 = Note_column::get_stem (cols.top ());
-
if (s2 != me->get_bound (RIGHT))
return 0;
Grob *b1 = s1 ? Stem::get_beam (s1) : 0;
Grob *b2 = s2 ? Stem::get_beam (s2) : 0;
-
*equally_long = false;
if (! (b1 && (b1 == b2) && !me->is_broken ()))
return 0;
{
/*
UGH. dependency tracking!
- */
+ */
extract_grob_set (me, "tuplets", tuplets);
for (int i = 0; i < tuplets.size (); i++)
- Tuplet_bracket::print (tuplets[i]->self_scm());
+ Tuplet_bracket::print (tuplets[i]->self_scm ());
after_line_breaking (smob);
}
*/
SCM bracket = me->get_property ("bracket-visibility");
if (scm_is_bool (bracket))
- {
- bracket_visibility = ly_scm2bool (bracket);
- }
+ bracket_visibility = ly_scm2bool (bracket);
else if (bracket == ly_symbol2scm ("if-no-beam"))
bracket_visibility = !par_beam;
SCM numb = me->get_property ("number-visibility");
if (scm_is_bool (numb))
- {
- number_visibility = ly_scm2bool (numb);
- }
+ number_visibility = ly_scm2bool (numb);
else if (numb == ly_symbol2scm ("if-no-beam"))
number_visibility = !par_beam;
{
x_span[d] = robust_relative_extent (bounds[d], commonx, X_AXIS)[d];
Direction break_dir = bounds[d]->break_status_dir ();
- Spanner *orig_spanner = dynamic_cast<Spanner*> (me->original_);
+ Spanner *orig_spanner = dynamic_cast<Spanner *> (me->original_);
connect_to_other[d]
= (break_dir
- && (me->get_break_index() - break_dir < orig_spanner->broken_intos_.size()));
+ && (me->get_break_index () - break_dir < orig_spanner->broken_intos_.size ()));
if (connect_to_other[d])
{
if (d == RIGHT)
x_span[d] += d * overshoot[d];
else
- x_span[d] = robust_relative_extent(bounds[d], commonx, X_AXIS)[RIGHT]
+ x_span[d] = robust_relative_extent (bounds[d], commonx, X_AXIS)[RIGHT]
- overshoot[LEFT];
}
else if (d == RIGHT
&& (columns.is_empty ()
- || (bounds[d]->get_column ()
- != dynamic_cast<Item*> (columns.top())->get_column ())))
+ || (bounds[d]->get_column ()
+ != dynamic_cast<Item *> (columns.top ())->get_column ())))
{
/*
TODO: make padding tunable?
- */
+ */
x_span[d] = robust_relative_extent (bounds[d], commonx, X_AXIS) [LEFT] - 1.0;
}
}
while (flip (&d) != LEFT);
- Real w = x_span.length();
+ Real w = x_span.length ();
SCM number = me->get_property ("text");
Output_def *pap = me->get_layout ();
*/
if (bracket_visibility && number_visibility
&& mol.extent (X_AXIS).length () > w)
- {
- bracket_visibility = false;
- }
+ bracket_visibility = false;
if (bracket_visibility)
{
}
while (flip (&d) != LEFT);
-
Stencil brack = make_bracket (me, Y_AXIS,
Offset (w, ry - ly),
height,
}
while (flip (&d) != LEFT);
-
mol.add_stencil (brack);
}
Direction d = LEFT;
do
- {
- straight_corners[d] += -d * shorten[d] / length * dz;
- }
- while (flip (&d) != LEFT);
+ straight_corners[d] += -d * shorten[d] / length * dz;
+ while (flip (&d) != LEFT)
+ ;
if (gap.is_empty ())
gap = Interval (0, 0);
do
- {
- gap_corners[d] = (dz * 0.5) + gap[d] / length * dz;
- }
- while (flip (&d) != LEFT);
+ gap_corners[d] = (dz * 0.5) + gap[d] / length * dz;
+ while (flip (&d) != LEFT)
+ ;
Drul_array<Offset> flare_corners = straight_corners;
do
}
}
-
/*
use first -> last note for slope, and then correct for disturbing
notes in between. */
void
Tuplet_bracket::calc_position_and_height (Grob *me_grob, Real *offset, Real *dy)
{
- Spanner *me = dynamic_cast<Spanner*> (me_grob);
+ Spanner *me = dynamic_cast<Spanner *> (me_grob);
extract_grob_set (me, "note-columns", columns);
extract_grob_set (me, "tuplets", tuplets);
Grob *commony = common_refpoint_of_array (columns, me, Y_AXIS);
commony = common_refpoint_of_array (tuplets, commony, Y_AXIS);
if (Grob *st = Staff_symbol_referencer::get_staff_symbol (me))
- {
- commony = st->common_refpoint (commony, Y_AXIS);
- }
+ commony = st->common_refpoint (commony, Y_AXIS);
Grob *commonx = common_refpoint_of_array (columns, me, X_AXIS);
commonx = common_refpoint_of_array (tuplets, commonx, Y_AXIS);
Interval staff;
if (Grob *st = Staff_symbol_referencer::get_staff_symbol (me))
- staff = st->extent (commony, Y_AXIS);
-
+ {
+ staff = st->extent (commony, Y_AXIS);
+ Real pad = robust_scm2double (me->get_property ("staff-padding"), 0.5);
+ staff.widen (pad);
+ }
+
Direction dir = get_grob_direction (me);
/*
Real x0 = robust_relative_extent (lgr, commonx, X_AXIS)[LEFT];
Real x1 = robust_relative_extent (rgr, commonx, X_AXIS)[RIGHT];
- /*
- offset
- */
- Real factor = columns.size () > 1 ? 1 / (x1 - x0) : 1.0;
-
Array<Offset> points;
- points.push (Offset (x0, staff[dir]));
- points.push (Offset (x1, staff[dir]));
+ points.push (Offset (x0 - x0, staff[dir]));
+ points.push (Offset (x1 - x0, staff[dir]));
for (int i = 0; i < columns.size (); i++)
{
Let's not take padding into account for nested tuplets.
the edges can come very close to the stems, likewise for
nested tuplets?
- */
+ */
Drul_array<Real> my_height
= robust_scm2drul (me->get_property ("edge-height"),
Interval (0, 0));
- if (dynamic_cast<Spanner*> (tuplets[i])->get_bound (d)
- == me->get_bound (d))
- {
- y += dir * my_height[d];
- }
+ if (dynamic_cast<Spanner *> (tuplets[i])->get_bound (d)
+ == me->get_bound (d))
+ y += dir * my_height[d];
#endif
points.push (Offset (tuplet_x[d] - x0, y));
while (flip (&d) != LEFT);
}
+ Real factor = (columns.size () > 1) ? 1 / (x1 - x0) : 1.0;
for (int i = 0; i < points.size (); i++)
{
Real x = points[i][X_AXIS];
- Real tuplety = *dy * x * factor;
+ Real tuplety = (*dy) * x * factor;
if (points[i][Y_AXIS] * dir > (*offset + tuplety) * dir)
- *offset = points[i][Y_AXIS] - tuplety * sign (*dy) * dir;
+ *offset = points[i][Y_AXIS] - tuplety;
}
*offset += scm_to_double (me->get_property ("padding")) * dir;
Real offset = 0.0;
if (!par_beam
|| get_grob_direction (par_beam) != dir)
- {
- calc_position_and_height (me, &offset, &dy);
- }
+ calc_position_and_height (me, &offset, &dy);
else
{
SCM ps = par_beam->get_property ("positions");
SCM rp = me->get_property ("right-position");
if (scm_is_number (lp) && !scm_is_number (rp))
- {
- rp = scm_from_double (scm_to_double (lp) + dy);
- }
+ rp = scm_from_double (scm_to_double (lp) + dy);
else if (scm_is_number (rp) && !scm_is_number (lp))
- {
- lp = scm_from_double (scm_to_double (rp) - dy);
- }
+ lp = scm_from_double (scm_to_double (rp) - dy);
else if (!scm_is_number (rp) && !scm_is_number (lp))
{
lp = scm_from_double (offset);
{
Drul_array<int> dirs (0, 0);
extract_grob_set (me, "note-columns", columns);
- for (int i = 0 ; i < columns.size (); i++)
+ for (int i = 0; i < columns.size (); i++)
{
Grob *nc = columns[i];
Direction d = Note_column::dir (nc);
me->add_dependency (bracket);
}
-
-
ADD_INTERFACE (Tuplet_bracket,
"tuplet-bracket-interface",
"A bracket with a number in the middle, used for tuplets. "
"At a line break, the markups in the @code{edge-text} are printed "
"at the edges. ",
- "note-columns bracket-flare edge-height shorten-pair "
- "tuplets edge-text break-overshoot "
- "padding left-position right-position bracket-visibility "
- "number-visibility thickness direction");
+
+ "bracket-flare "
+ "bracket-visibility "
+ "break-overshoot "
+ "direction "
+ "edge-height "
+ "edge-text "
+ "left-position "
+ "note-columns "
+ "number-visibility "
+ "padding "
+ "right-position "
+ "shorten-pair "
+ "staff-padding "
+ "thickness "
+ "tuplets ");