Index: src/java/org/apache/fop/afp/goca/AbstractGraphicsDrawingOrderContainer.java =================================================================== --- src/java/org/apache/fop/afp/goca/AbstractGraphicsDrawingOrderContainer.java (revision 746664) +++ src/java/org/apache/fop/afp/goca/AbstractGraphicsDrawingOrderContainer.java Mon Jul 13 14:59:03 CEST 2009 @@ -46,6 +46,8 @@ /** object has started */ private boolean started = false; + private int dataLength = 0; + /** * Default constructor */ @@ -78,6 +80,7 @@ */ public void addObject(StructuredData object) { objects.add(object); + dataLength += object.getDataLength(); } /** @@ -88,6 +91,7 @@ public void addAll(AbstractGraphicsDrawingOrderContainer graphicsContainer) { Collection/**/ objects = graphicsContainer.getObjects(); objects.addAll(objects); + dataLength += graphicsContainer.dataLength; } /** @@ -107,10 +111,12 @@ public StructuredData removeLast() { int lastIndex = objects.size() - 1; StructuredData object = null; - if (lastIndex > -1) { - object = (StructuredData)objects.get(lastIndex); - objects.remove(lastIndex); + if (lastIndex >= 0) { + object = (StructuredData)objects.remove(lastIndex); } + if (object != null) { + dataLength -= object.getDataLength(); + } return object; } @@ -121,13 +127,8 @@ * all enclosed objects (and their containers) */ public int getDataLength() { - int dataLen = 0; - Iterator it = objects.iterator(); - while (it.hasNext()) { - dataLen += ((StructuredData)it.next()).getDataLength(); + return this.dataLength; - } + } - return dataLen; - } /** {@inheritDoc} */ public void setComplete(boolean complete) {