if (clipBounds != null && clipBounds.isEmpty()) {
return;
}
int cc = getComponentCount();
if (!isOptimizedDrawingEnabled()) {
MultiRectArea childrenCoverage = null;
Component compList[] = new Component[cc];
Shape clipList[] = new Shape[cc];
int rc = -1;
for (int i = 0; i < cc; i++) {
Component comp = getComponent(i);
if (comp.isVisible()) {
if (!comp.isLightweight()) {
continue;
}
MultiRectArea clip;
Rectangle bounds = comp.getBounds();
if (childrenCoverage == null && comp.isOpaque()) {
childrenCoverage = new MultiRectArea(bounds);
clip = new MultiRectArea(bounds);
} else {
clip = new MultiRectArea(bounds);
clip.substract(childrenCoverage);
if (clip.isEmpty()) {
continue;
}
if (comp.isOpaque()) {
childrenCoverage = MultiRectArea.union(childrenCoverage, clip);
}
}
rc++;
if (clipBounds != null) {
clip.intersect(clipBounds);
}
clip.translate(-bounds.x, -bounds.y);
compList[rc] = comp;
clipList[rc] = clip;
}
}
while (rc >= 0) {