// Add sub top vertical inset
int yPos = insets.top + box.y;
for (FigureEnumeration en = (vAlign == Orientation.BOTTOM ? tagFigure.figures() : tagFigure.figuresReverse()); en.hasMoreElements();)
{
Figure subFigure = en.nextFigure();
Rectangle r;
// Calculate the sub figure size
if (subFigure instanceof Expandable)
{
r = ((Expandable) subFigure).compactDisplayBox();
}
else if (subFigure instanceof LayoutableTag)
{
r = ((LayoutableTag) subFigure).getLayouter().calculateSize();
}
else
{
r = subFigure.displayBox();
}
// Set the sub figure position and size
int x = xBaseLine + CommonUtil.rnd(xFactor * r.width);
r.setLocation(x, yPos);
subFigure.displayBox(r);
// Add sub figure height and vertical insets
yPos += insets.top + insets.bottom + r.height;
}
}