vector_sort (heads, less<Grob*> ());
uniq (heads);
+
+ vector<Grob *> stems;
+ for (vsize i = 0; i < heads.size (); i++)
+ {
+ if (Grob *s = Rhythmic_head::get_stem (heads[i]))
+ stems.push_back (s);
+ }
+
+ vector_sort (stems, less<Grob*> ());
+ uniq (stems);
+
common[Y_AXIS] = common_refpoint_of_array (heads, common[Y_AXIS], Y_AXIS);
+ common[Y_AXIS] = common_refpoint_of_array (stems, common[Y_AXIS], Y_AXIS);
for (vsize i = apes.size (); i--;)
{
head_extents.push_back (Box (heads[i]->extent (common[X_AXIS], X_AXIS),
heads[i]->extent (common[Y_AXIS], Y_AXIS)));
- vector<Grob *> stems;
- for (vsize i = 0; i < heads.size (); i++)
- {
- if (Grob *s = Rhythmic_head::get_stem (heads[i]))
- stems.push_back (s);
- }
-
- vector_sort (stems, less<Grob*> ());
- uniq (stems);
for (vsize i = 0; i < stems.size (); i ++)
{
int very_large = INT_MAX;
it probably means that the Alignment was fixed and it has already been
calculated.
*/
- Grob *p = get_parent (Y_AXIS);
- Real trans = 0;
- if (Align_interface::has_interface (p) && !dim_cache_[Y_AXIS].offset_)
- trans = Align_interface::get_pure_child_y_translation (p, this, start, end);
+ if (Grob *p = get_parent (Y_AXIS))
+ {
+ Real trans = 0;
+ if (Align_interface::has_interface (p) && !dim_cache_[Y_AXIS].offset_)
+ trans = Align_interface::get_pure_child_y_translation (p, this, start, end);
- return off + trans
- + dim_cache_[Y_AXIS].parent_->pure_relative_y_coordinate (refp, start, end);
+ return off + trans + p->pure_relative_y_coordinate (refp, start, end);
+ }
+ return off;
}
/* Invoke callbacks to get offset relative to parent. */