for (vsize i = 0; i + 1 < breaks.size (); i++)
{
int r = Paper_column::get_rank (cols[breaks[i]]);
- if (r > end)
+ if (r >= end)
break;
if (r >= start)
extract_grob_set (me, "elements", elts);
Skyline_pair skylines = skyline_spacing (me, elts);
- /* add a minimum-Y-extent-sized box to the skyline */
- SCM min_y_extent = me->get_property ("minimum-Y-extent");
- if (is_number_pair (min_y_extent))
- {
- Box b (me->extent (me, X_AXIS), ly_scm2interval (min_y_extent));
- skylines.insert (b, 0, X_AXIS);
- }
return skylines.smobbed_copy ();
}
return common;
}
-MAKE_SCHEME_CALLBACK (Axis_group_interface, calc_x_common, 1);
SCM
-Axis_group_interface::calc_x_common (SCM grob)
+Axis_group_interface::calc_common (Grob *me, Axis axis)
{
- Grob *me = unsmob_grob (grob);
-
extract_grob_set (me, "elements", elts);
- Grob *common = common_refpoint_of_array (elts, me, X_AXIS);
+ Grob *common = common_refpoint_of_array (elts, me, axis);
+ if (!common)
+ {
+ me->programming_error ("No common parent found in calc_common axis.");
+ return SCM_EOL;
+ }
+
return common->self_scm ();
}
+
+MAKE_SCHEME_CALLBACK (Axis_group_interface, calc_x_common, 1);
+SCM
+Axis_group_interface::calc_x_common (SCM grob)
+{
+ return calc_common (unsmob_grob (grob), X_AXIS);
+}
+
MAKE_SCHEME_CALLBACK (Axis_group_interface, calc_y_common, 1);
SCM
Axis_group_interface::calc_y_common (SCM grob)
{
- Grob *me = unsmob_grob (grob);
-
- extract_grob_set (me, "elements", elts);
- Grob *common = common_refpoint_of_array (elts, me, Y_AXIS);
- return common->self_scm ();
+ return calc_common (unsmob_grob (grob), Y_AXIS);
}
Interval
}
ADD_INTERFACE (Axis_group_interface,
-
"An object that groups other layout objects.",
/* properties */