int quantization = max (1, (int) (((x_rad * trans.xx) + (y_rad * trans.yy)) * M_PI / QUANTIZATION_UNIT));
do
{
- for (vsize i = 0; i < 1 + quantization; i++)
+ for (vsize i = 0; i < 1 + (vsize) quantization; i++)
{
Real ang = linear_map (start, end, 0, quantization, i);
complex<Real> coord = polar (1.0, ang);
Offset first = get_point_in_y_direction (curve.control_[0], perpendicular_slope (curve.slope_at_point (0.0)), th / 2, d);
pango_matrix_transform_point (&trans, &first[X_AXIS], &first[Y_AXIS]);
points[d].push_back (first);
- for (vsize i = 1; i < quantization; i++)
+ for (vsize i = 1; i < (vsize) quantization; i++)
{
Real pt = (i * 1.0) / quantization;
Offset inter = get_point_in_y_direction (curve.curve_point (pt), perpendicular_slope (curve.slope_at_point (pt)), th / 2, d);
return stencil_traverser (trans, scm_caddr (expr));
}
else if (scm_car (expr) == ly_symbol2scm ("delay-stencil-evaluation"))
- return stencil_traverser (trans, scm_force (scm_cadr (expr)));
+ // should not use the place-holder text, but no need for the warning below
+ return vector<Transform_matrix_and_expression> ();
else if (scm_car (expr) == ly_symbol2scm ("grob-cause"))
return stencil_traverser (trans, scm_caddr (expr));
else if (scm_car (expr) == ly_symbol2scm ("color"))
return stencil_traverser (trans, scm_caddr (expr));
+ else if (scm_car (expr) == ly_symbol2scm ("transparent-stencil"))
+ return stencil_traverser (trans, scm_cadr (expr));
else if (scm_car (expr) == ly_symbol2scm ("id"))
return stencil_traverser (trans, scm_caddr (expr));
else
? Interval (-infinity_f, infinity_f)
: me->maybe_pure_extent (me, Y_AXIS, pure, beg, end);
- // In horizontal spacing, there are grobs like SystemStartBracket
- // that take up no vertical spcae. So, if the y extent is empty,
- // we use the entire Y extent ot make the X a sort of horizontal wall.
- // Ditto for vertical spacing and grobs like BassFigureAlginmentPositioning.
- if (a == Y_AXIS && yex.is_empty ())
- yex.set_full ();
-
- if (a == X_AXIS && xex.is_empty ())
- xex.set_full ();
-
if (xex.is_empty () || yex.is_empty ())
return Skyline_pair ().smobbed_copy ();
Grob *me = unsmob_grob (smob);
int beg = robust_scm2int (begscm, 0);
int end = robust_scm2int (endscm, INT_MAX);
- return maybe_pure_internal_simple_skylines_from_extents (me, X_AXIS, true, beg, end, dynamic_cast<Spanner *> (me), false);
+ // We cannot measure the widths before line breaking,
+ // so we assume that the width is infinite: pass ignore_x=true
+ return maybe_pure_internal_simple_skylines_from_extents (me, X_AXIS, true, beg, end, true, false);
}
MAKE_SCHEME_CALLBACK (Grob, simple_vertical_skylines_from_extents, 1);
Grob *me = unsmob_grob (smob);
int beg = robust_scm2int (begscm, 0);
int end = robust_scm2int (endscm, INT_MAX);
+ // If the grob is cross staff, we cannot measure its Y-extent before
+ // wayyyy downstream (after spacing of axis groups is done).
+ // Thus, we assume that the Y extent is infinite for cross staff grobs.
return maybe_pure_internal_simple_skylines_from_extents (me, Y_AXIS, true, beg, end, false, to_boolean (me->get_property ("cross-staff")));
}
Grob::simple_horizontal_skylines_from_extents (SCM smob)
{
Grob *me = unsmob_grob (smob);
+ // See comment in function above.
return maybe_pure_internal_simple_skylines_from_extents (me, Y_AXIS, false, 0, 0, false, to_boolean (me->get_property ("cross-staff")));
}