You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by je...@apache.org on 2008/09/28 13:38:19 UTC

svn commit: r699801 [2/3] - in /xmlgraphics/fop/branches/Temp_AreaTreeNewDesign: ./ conf/ lib/ lib/build/ src/documentation/content/ src/documentation/content/xdocs/ src/documentation/content/xdocs/0.94/ src/documentation/content/xdocs/0.95/ src/docume...

Modified: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/layoutmgr/inline/LeaderLayoutManager.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/layoutmgr/inline/LeaderLayoutManager.java?rev=699801&r1=699800&r2=699801&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/layoutmgr/inline/LeaderLayoutManager.java (original)
+++ xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/layoutmgr/inline/LeaderLayoutManager.java Sun Sep 28 04:38:15 2008
@@ -183,17 +183,23 @@
             childContext.setAlignmentContext(context.getAlignmentContext());
             contentList = clm.getNextKnuthElements(childContext, 0);
             int width = clm.getStackingSize();
-            Space spacer = null;
-            if (fobj.getLeaderPatternWidth().getValue(this) > width) {
-                spacer = new Space();
-                spacer.setIPD(fobj.getLeaderPatternWidth().getValue(this) - width);
-                width = fobj.getLeaderPatternWidth().getValue(this);
+            if (width != 0) {
+                Space spacer = null;
+                if (fobj.getLeaderPatternWidth().getValue(this) > width) {
+                    spacer = new Space();
+                    spacer.setIPD(fobj.getLeaderPatternWidth().getValue(this) - width);
+                    width = fobj.getLeaderPatternWidth().getValue(this);
+                }
+                fa.setUnitWidth(width);
+                if (spacer != null) {
+                    fa.addChildArea(spacer);
+                }
+                leaderArea = fa;
+            } else {
+                //Content collapsed to nothing, so use a space
+                leaderArea = new Space();
+                leaderArea.setBPD(1);
             }
-            fa.setUnitWidth(width);
-            if (spacer != null) {
-                fa.addChildArea(spacer);
-            }
-            leaderArea = fa;
         }
         TraitSetter.setProducerID(leaderArea, fobj.getId());
         return leaderArea;

Modified: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/layoutmgr/table/RowPainter.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/layoutmgr/table/RowPainter.java?rev=699801&r1=699800&r2=699801&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/layoutmgr/table/RowPainter.java (original)
+++ xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/layoutmgr/table/RowPainter.java Sun Sep 28 04:38:15 2008
@@ -27,13 +27,19 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+
 import org.apache.fop.area.Block;
+import org.apache.fop.area.Trait;
 import org.apache.fop.fo.flow.table.ConditionalBorder;
 import org.apache.fop.fo.flow.table.EffRow;
+import org.apache.fop.fo.flow.table.EmptyGridUnit;
 import org.apache.fop.fo.flow.table.GridUnit;
 import org.apache.fop.fo.flow.table.PrimaryGridUnit;
+import org.apache.fop.fo.flow.table.Table;
+import org.apache.fop.fo.flow.table.TableColumn;
 import org.apache.fop.fo.flow.table.TablePart;
 import org.apache.fop.fo.properties.CommonBorderPaddingBackground;
+import org.apache.fop.fo.properties.CommonBorderPaddingBackground.BorderInfo;
 import org.apache.fop.layoutmgr.ElementListUtils;
 import org.apache.fop.layoutmgr.KnuthElement;
 import org.apache.fop.layoutmgr.KnuthPossPosIter;
@@ -202,10 +208,16 @@
         recordRowOffset(currentRow.getIndex(), currentRowOffset);
 
         // Need to compute the actual row height first
+        // and determine border behaviour for empty cells
+        boolean firstCellPart = true;
+        boolean lastCellPart = true;
         int actualRowHeight = 0;
         for (int i = 0; i < colCount; i++) {
             GridUnit currentGU = currentRow.getGridUnit(i);
-            if (!currentGU.isEmpty() && currentGU.getColSpanIndex() == 0
+            if (currentGU.isEmpty()) {
+                continue;
+            }
+            if (currentGU.getColSpanIndex() == 0
                     && (lastInPart || currentGU.isLastGridUnitRowSpan())
                     && firstCellParts[i] != null) {
                 // TODO
@@ -225,21 +237,53 @@
                 actualRowHeight = Math.max(actualRowHeight, cellOffset + cellHeight
                         - currentRowOffset);
             }
+
+            if (firstCellParts[i] != null && !firstCellParts[i].isFirstPart()) {
+                firstCellPart = false;
+            }
+            if (lastCellParts[i] != null && !lastCellParts[i].isLastPart()) {
+                lastCellPart = false;
+            }
         }
 
         // Then add areas for cells finishing on the current row
         for (int i = 0; i < colCount; i++) {
             GridUnit currentGU = currentRow.getGridUnit(i);
-            if (currentGU.isEmpty()) {
-                // TODO remove once missing cells are properly implemented (i.e., replaced
-                // by an fo:table-cell element containing an empty fo:block)
+            if (currentGU.isEmpty() && !tclm.isSeparateBorderModel()) {
+                int borderBeforeWhich;
+                if (firstCellPart) {
+                    if (firstCellOnPage[i]) {
+                        borderBeforeWhich = ConditionalBorder.LEADING_TRAILING;
+                    } else {
+                        borderBeforeWhich = ConditionalBorder.NORMAL;
+                    }
+                } else {
+                    borderBeforeWhich = ConditionalBorder.REST;
+                }
+                int borderAfterWhich;
+                if (lastCellPart) {
+                    if (lastInPart) {
+                        borderAfterWhich = ConditionalBorder.LEADING_TRAILING;
+                    } else {
+                        borderAfterWhich = ConditionalBorder.NORMAL;
+                    }
+                } else {
+                    borderAfterWhich = ConditionalBorder.REST;
+                }
+                addAreaForEmptyGridUnit((EmptyGridUnit)currentGU,
+                        currentRow.getIndex(), i,
+                        actualRowHeight,
+                        borderBeforeWhich, borderAfterWhich,
+                        lastOnPage);
+
                 firstCellOnPage[i] = false;
             } else if (currentGU.getColSpanIndex() == 0
                     && (lastInPart || currentGU.isLastGridUnitRowSpan())
                     && firstCellParts[i] != null) {
                 assert firstCellParts[i].pgu == currentGU.getPrimary();
+
                 int borderBeforeWhich;
-                if (firstCellParts[i].start == 0) {
+                if (firstCellParts[i].isFirstPart()) {
                     if (firstCellOnPage[i]) {
                         borderBeforeWhich = ConditionalBorder.LEADING_TRAILING;
                     } else {
@@ -259,6 +303,7 @@
                 } else {
                     borderAfterWhich = ConditionalBorder.REST;
                 }
+
                 addAreasForCell(firstCellParts[i].pgu,
                         firstCellParts[i].start, lastCellParts[i].end,
                         actualRowHeight, borderBeforeWhich, borderAfterWhich,
@@ -387,6 +432,56 @@
                 startRowIndex == firstRowOnPageIndex, lastOnPage, this, firstRowHeight);
     }
 
+    private void addAreaForEmptyGridUnit(EmptyGridUnit gu, int rowIndex, int colIndex,
+            int actualRowHeight,
+            int borderBeforeWhich, int borderAfterWhich, boolean lastOnPage) {
+
+        //get effective borders
+        BorderInfo borderBefore = gu.getBorderBefore(borderBeforeWhich);
+        BorderInfo borderAfter = gu.getBorderAfter(borderAfterWhich);
+        BorderInfo borderStart = gu.getBorderStart();
+        BorderInfo borderEnd = gu.getBorderEnd();
+        if (borderBefore.getRetainedWidth() == 0
+                && borderAfter.getRetainedWidth() == 0
+                && borderStart.getRetainedWidth() == 0
+                && borderEnd.getRetainedWidth() == 0) {
+            return; //no borders, no area necessary
+        }
+
+        TableLayoutManager tableLM = tclm.getTableLM();
+        Table table = tableLM.getTable();
+        TableColumn col = tclm.getColumns().getColumn(colIndex + 1);
+
+        //position information
+        boolean firstOnPage = (rowIndex == firstRowOnPageIndex);
+        boolean inFirstColumn = (colIndex == 0);
+        boolean inLastColumn = (colIndex == table.getNumberOfColumns() - 1);
+
+        //determine the block area's size
+        int ipd = col.getColumnWidth().getValue(tableLM);
+        ipd -= (borderStart.getRetainedWidth() + borderEnd.getRetainedWidth()) / 2;
+        int bpd = actualRowHeight;
+        bpd -= (borderBefore.getRetainedWidth() + borderAfter.getRetainedWidth()) / 2;
+
+        //generate the block area
+        Block block = new Block();
+        block.setPositioning(Block.ABSOLUTE);
+        block.addTrait(Trait.IS_REFERENCE_AREA, Boolean.TRUE);
+        block.setIPD(ipd);
+        block.setBPD(bpd);
+        block.setXOffset(tclm.getXOffsetOfGridUnit(colIndex)
+                + (borderStart.getRetainedWidth() / 2));
+        block.setYOffset(getRowOffset(rowIndex)
+                - (borderBefore.getRetainedWidth() / 2));
+        boolean[] outer = new boolean[] {firstOnPage, lastOnPage, inFirstColumn,
+                inLastColumn};
+        TraitSetter.addCollapsingBorders(block,
+                borderBefore,
+                borderAfter,
+                borderStart,
+                borderEnd, outer);
+        tableLM.addChildArea(block);
+    }
 
     /**
      * Registers the given area, that will be used to render the part of

Modified: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/layoutmgr/table/TableContentLayoutManager.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/layoutmgr/table/TableContentLayoutManager.java?rev=699801&r1=699800&r2=699801&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/layoutmgr/table/TableContentLayoutManager.java (original)
+++ xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/layoutmgr/table/TableContentLayoutManager.java Sun Sep 28 04:38:15 2008
@@ -305,13 +305,21 @@
     }
 
     /**
-     * Retuns the X offset of the given grid unit.
+     * Returns the X offset of the given grid unit.
      * @param gu the grid unit
      * @return the requested X offset
      */
     protected int getXOffsetOfGridUnit(PrimaryGridUnit gu) {
-        int col = gu.getColIndex();
-        return startXOffset + getTableLM().getColumns().getXOffset(col + 1, getTableLM());
+        return getXOffsetOfGridUnit(gu.getColIndex());
+    }
+
+    /**
+     * Returns the X offset of the grid unit in the given column.
+     * @param colIndex the column index (zero-based)
+     * @return the requested X offset
+     */
+    protected int getXOffsetOfGridUnit(int colIndex) {
+        return startXOffset + getTableLM().getColumns().getXOffset(colIndex + 1, getTableLM());
     }
 
     /**

Modified: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/pdf/AlphaRasterImage.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/pdf/AlphaRasterImage.java?rev=699801&r1=699800&r2=699801&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/pdf/AlphaRasterImage.java (original)
+++ xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/pdf/AlphaRasterImage.java Sun Sep 28 04:38:15 2008
@@ -48,6 +48,9 @@
      */
     public AlphaRasterImage(String k, Raster alpha) {
         this.key = k;
+        //Enable the commented line below if 16-bit alpha channels are desired.
+        //Otherwise, we compress the alpha channel to 8 bit which should be sufficient.
+        //this.bitsPerComponent = alpha.getSampleModel().getSampleSize(0);
         this.bitsPerComponent = 8;
         this.colorSpace = new PDFDeviceColorSpace(PDFDeviceColorSpace.DEVICE_GRAY);
         if (alpha == null) {
@@ -148,6 +151,18 @@
                 alpha.getDataElements(0, y, w, 1, line);
                 out.write(line);
             }
+        } else if (dataType == DataBuffer.TYPE_USHORT) {
+            short[] sline = new short[nbands * w];
+            byte[] line = new byte[nbands * w];
+            for (int y = 0; y < h; y++) {
+                alpha.getDataElements(0, y, w, 1, sline);
+                for (int i = 0; i < w; i++) {
+                    //this compresses a 16-bit alpha channel to 8 bits!
+                    //we probably don't ever need a 16-bit channel
+                    line[i] = (byte)(sline[i] >> 8);
+                }
+                out.write(line);
+            }
         } else if (dataType == DataBuffer.TYPE_INT) {
             //Is there an better way to get a 8bit raster from a TYPE_INT raster?
             int shift = 24;

Modified: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/pdf/PDFFilterList.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/pdf/PDFFilterList.java?rev=699801&r1=699800&r2=699801&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/pdf/PDFFilterList.java (original)
+++ xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/pdf/PDFFilterList.java Sun Sep 28 04:38:15 2008
@@ -163,6 +163,11 @@
      * @param type which filter list to modify
      */
     public void addDefaultFilters(Map filters, String type) {
+        if (METADATA_FILTER.equals(type)) {
+            //XMP metadata should not be embedded in clear-text
+            addFilter(new NullFilter());
+            return;
+        }
         List filterset = null;
         if (filters != null) {
             filterset = (List)filters.get(type);
@@ -171,10 +176,7 @@
             }
         }
         if (filterset == null || filterset.size() == 0) {
-            if (METADATA_FILTER.equals(type)) {
-                //XMP metadata should not be embedded in clear-text
-                addFilter(new NullFilter());
-            } else if (JPEG_FILTER.equals(type)) {
+            if (JPEG_FILTER.equals(type)) {
                 //JPEG is already well compressed
                 addFilter(new NullFilter());
             } else if (TIFF_FILTER.equals(type)) {

Modified: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/AbstractGraphics2DAdapter.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/AbstractGraphics2DAdapter.java?rev=699801&r1=699800&r2=699801&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/AbstractGraphics2DAdapter.java (original)
+++ xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/AbstractGraphics2DAdapter.java Sun Sep 28 04:38:15 2008
@@ -35,7 +35,7 @@
 import java.io.IOException;
 
 import org.apache.fop.render.RendererContext.RendererContextWrapper;
-import org.apache.fop.util.UnitConv;
+import org.apache.xmlgraphics.util.UnitConv;
 
 /**
  * Abstract base class for Graphics2DAdapter implementations.

Modified: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/AbstractPathOrientedRenderer.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/AbstractPathOrientedRenderer.java?rev=699801&r1=699800&r2=699801&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/AbstractPathOrientedRenderer.java (original)
+++ xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/AbstractPathOrientedRenderer.java Sun Sep 28 04:38:15 2008
@@ -48,6 +48,7 @@
 import org.apache.fop.fo.extensions.ExtensionElementMapping;
 import org.apache.fop.fonts.FontMetrics;
 import org.apache.fop.traits.BorderProps;
+import org.apache.xmlgraphics.util.UnitConv;
 
 /**
  * Abstract base class for renderers like PDF and PostScript where many painting operations
@@ -485,8 +486,8 @@
         int borderPaddingStart = bv.getBorderAndPaddingWidthStart();
         int borderPaddingBefore = bv.getBorderAndPaddingWidthBefore();
         //This is the content-rect
-        float width = (float)bv.getIPD() / 1000f;
-        float height = (float)bv.getBPD() / 1000f;
+        float width = bv.getIPD() / 1000f;
+        float height = bv.getBPD() / 1000f;
 
         if (bv.getPositioning() == Block.ABSOLUTE
                 || bv.getPositioning() == Block.FIXED) {
@@ -515,7 +516,7 @@
 
             saveGraphicsState();
             //Viewport position
-            concatenateTransformationMatrix(mptToPt(positionTransform));
+            concatenateTransformationMatrix(UnitConv.mptToPt(positionTransform));
 
             //Background and borders
             float bpwidth = (borderPaddingStart + bv.getBorderAndPaddingWidthEnd()) / 1000f;
@@ -525,7 +526,7 @@
             //Shift to content rectangle after border painting
             AffineTransform contentRectTransform = new AffineTransform();
             contentRectTransform.translate(borderPaddingStart, borderPaddingBefore);
-            concatenateTransformationMatrix(mptToPt(contentRectTransform));
+            concatenateTransformationMatrix(UnitConv.mptToPt(contentRectTransform));
 
             //Clipping
             if (bv.getClip()) {
@@ -535,7 +536,7 @@
             saveGraphicsState();
             //Set up coordinate system for content rectangle
             AffineTransform contentTransform = ctm.toAffineTransform();
-            concatenateTransformationMatrix(mptToPt(contentTransform));
+            concatenateTransformationMatrix(UnitConv.mptToPt(contentTransform));
 
             currentIPPosition = 0;
             currentBPPosition = 0;
@@ -581,7 +582,7 @@
             currentIPPosition = saveIP;
             currentBPPosition = saveBP;
 
-            currentBPPosition += (int)(bv.getAllocBPD());
+            currentBPPosition += (bv.getAllocBPD());
         }
     }
 
@@ -599,7 +600,7 @@
 
         if (!at.isIdentity()) {
             saveGraphicsState();
-            concatenateTransformationMatrix(mptToPt(at));
+            concatenateTransformationMatrix(UnitConv.mptToPt(at));
         }
 
         currentIPPosition = 0;
@@ -632,7 +633,7 @@
 
         if (!at.isIdentity()) {
             saveGraphicsState();
-            concatenateTransformationMatrix(mptToPt(at));
+            concatenateTransformationMatrix(UnitConv.mptToPt(at));
         }
 
         currentIPPosition = 0;

Modified: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/PrintRenderer.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/PrintRenderer.java?rev=699801&r1=699800&r2=699801&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/PrintRenderer.java (original)
+++ xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/PrintRenderer.java Sun Sep 28 04:38:15 2008
@@ -20,7 +20,6 @@
 package org.apache.fop.render;
 
 // FOP
-import java.awt.Color;
 import java.awt.geom.Rectangle2D;
 import java.util.List;
 import java.util.Map;
@@ -113,29 +112,6 @@
     }
 
     /**
-     * Lightens up a color for groove, ridge, inset and outset border effects.
-     * @param col the color to lighten up
-     * @param factor factor by which to lighten up (negative values darken the color)
-     * @return the modified color
-     */
-    public static Color lightenColor(Color col, float factor) {
-        // TODO: This function converts the color into the sRGB namespace.
-        // This should be avoided if possible.
-        float[] cols = new float[4];
-        cols = col.getRGBComponents(cols);
-        if (factor > 0) {
-            cols[0] += (1.0 - cols[0]) * factor;
-            cols[1] += (1.0 - cols[1]) * factor;
-            cols[2] += (1.0 - cols[2]) * factor;
-        } else {
-            cols[0] -= cols[0] * -factor;
-            cols[1] -= cols[1] * -factor;
-            cols[2] -= cols[2] * -factor;
-        }
-        return new Color(cols[0], cols[1], cols[2], cols[3]);
-    }
-
-    /**
      * Creates a RendererContext for an image.
      * @param x the x coordinate (in millipoints)
      * @param y the y coordinate (in millipoints)

Modified: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/afp/AFPRenderer.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/afp/AFPRenderer.java?rev=699801&r1=699800&r2=699801&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/afp/AFPRenderer.java (original)
+++ xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/afp/AFPRenderer.java Sun Sep 28 04:38:15 2008
@@ -88,6 +88,7 @@
 import org.apache.fop.render.afp.modca.AFPDataStream;
 import org.apache.fop.render.afp.modca.ImageObject;
 import org.apache.fop.render.afp.modca.PageObject;
+import org.apache.fop.util.ColorUtil;
 
 /**
  * This is an implementation of a FOP Renderer that renders areas to AFP.
@@ -850,8 +851,8 @@
             {
                 float colFactor = (style == EN_GROOVE ? 0.4f : -0.4f);
                 if (horz) {
-                    Color uppercol = lightenColor(col, -colFactor);
-                    Color lowercol = lightenColor(col, colFactor);
+                    Color uppercol = ColorUtil.lightenColor(col, -colFactor);
+                    Color lowercol = ColorUtil.lightenColor(col, colFactor);
                     float h3 = h / 3;
                     float ym1 = y1;
                     afpDataStream.createLine(
@@ -879,8 +880,8 @@
                         lowercol
                     );
                 } else {
-                    Color leftcol = lightenColor(col, -colFactor);
-                    Color rightcol = lightenColor(col, colFactor);
+                    Color leftcol = ColorUtil.lightenColor(col, -colFactor);
+                    Color rightcol = ColorUtil.lightenColor(col, colFactor);
                     float w3 = w / 3;
                     float xm1 = x1 + (w3 / 2);
                     afpDataStream.createLine(

Propchange: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/intermediate/IFContentHandler.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sun Sep 28 04:38:15 2008
@@ -1 +1 @@
-/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFContentHandler.java:680381-685574
+/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFContentHandler.java:680381-699792

Propchange: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/intermediate/IFPainter.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sun Sep 28 04:38:15 2008
@@ -1 +1 @@
-/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFPainter.java:680381-685574
+/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFPainter.java:680381-699792

Propchange: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/intermediate/IFRenderer.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sun Sep 28 04:38:15 2008
@@ -1 +1 @@
-/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFRenderer.java:680381-685574
+/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/IFRenderer.java:680381-699792

Propchange: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/intermediate/extensions/DocumentNavigationExtensionConstants.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sun Sep 28 04:38:15 2008
@@ -1 +1 @@
-/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/extensions/DocumentNavigationExtensionConstants.java:685127-685574
+/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/extensions/DocumentNavigationExtensionConstants.java:685127-699792

Propchange: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/intermediate/extensions/DocumentNavigationExtensionHandlerFactory.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sun Sep 28 04:38:15 2008
@@ -1 +1 @@
-/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/extensions/DocumentNavigationExtensionHandlerFactory.java:685127-685574
+/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/intermediate/extensions/DocumentNavigationExtensionHandlerFactory.java:685127-699792

Modified: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/java2d/Java2DRenderer.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/java2d/Java2DRenderer.java?rev=699801&r1=699800&r2=699801&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/java2d/Java2DRenderer.java (original)
+++ xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/java2d/Java2DRenderer.java Sun Sep 28 04:38:15 2008
@@ -77,6 +77,7 @@
 import org.apache.fop.render.RendererContext;
 import org.apache.fop.render.pdf.CTMHelper;
 import org.apache.fop.util.CharUtilities;
+import org.apache.fop.util.ColorUtil;
 
 /**
  * The <code>Java2DRenderer</code> class provides the abstract technical
@@ -652,8 +653,8 @@
             case Constants.EN_RIDGE:
                 float colFactor = (style == EN_GROOVE ? 0.4f : -0.4f);
                 if (horz) {
-                    Color uppercol = lightenColor(col, -colFactor);
-                    Color lowercol = lightenColor(col, colFactor);
+                    Color uppercol = ColorUtil.lightenColor(col, -colFactor);
+                    Color lowercol = ColorUtil.lightenColor(col, colFactor);
                     float h3 = h / 3;
                     float ym1 = y1 + (h3 / 2);
                     g2d.setStroke(new BasicStroke(h3));
@@ -664,8 +665,8 @@
                     g2d.setColor(lowercol);
                     g2d.draw(new Line2D.Float(x1, ym1 + h3 + h3, x2, ym1 + h3 + h3));
                 } else {
-                    Color leftcol = lightenColor(col, -colFactor);
-                    Color rightcol = lightenColor(col, colFactor);
+                    Color leftcol = ColorUtil.lightenColor(col, -colFactor);
+                    Color rightcol = ColorUtil.lightenColor(col, colFactor);
                     float w3 = w / 3;
                     float xm1 = x1 + (w3 / 2);
                     g2d.setStroke(new BasicStroke(w3));
@@ -681,13 +682,13 @@
             case Constants.EN_OUTSET:
                 colFactor = (style == EN_OUTSET ? 0.4f : -0.4f);
                 if (horz) {
-                    col = lightenColor(col, (startOrBefore ? 1 : -1) * colFactor);
+                    col = ColorUtil.lightenColor(col, (startOrBefore ? 1 : -1) * colFactor);
                     g2d.setStroke(new BasicStroke(h));
                     float ym1 = y1 + (h / 2);
                     g2d.setColor(col);
                     g2d.draw(new Line2D.Float(x1, ym1, x2, ym1));
                 } else {
-                    col = lightenColor(col, (startOrBefore ? 1 : -1) * colFactor);
+                    col = ColorUtil.lightenColor(col, (startOrBefore ? 1 : -1) * colFactor);
                     float xm1 = x1 + (w / 2);
                     g2d.setStroke(new BasicStroke(w));
                     g2d.setColor(col);
@@ -859,7 +860,7 @@
         case EN_RIDGE:
             float half = area.getRuleThickness() / 2000f;
 
-            state.updateColor(lightenColor(col, 0.6f));
+            state.updateColor(ColorUtil.lightenColor(col, 0.6f));
             moveTo(startx, starty);
             lineTo(endx, starty);
             lineTo(endx, starty + 2 * half);

Modified: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/pcl/PCLGenerator.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/pcl/PCLGenerator.java?rev=699801&r1=699800&r2=699801&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/pcl/PCLGenerator.java (original)
+++ xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/pcl/PCLGenerator.java Sun Sep 28 04:38:15 2008
@@ -45,8 +45,7 @@
 import org.apache.commons.io.output.ByteArrayOutputStream;
 
 import org.apache.xmlgraphics.image.GraphicsUtil;
-
-import org.apache.fop.util.UnitConv;
+import org.apache.xmlgraphics.util.UnitConv;
 
 /**
  * This class provides methods for generating PCL print files.
@@ -72,7 +71,7 @@
     private final DecimalFormat df2 = new DecimalFormat("0.##", symbols);
     private final DecimalFormat df4 = new DecimalFormat("0.####", symbols);
 
-    private OutputStream out;
+    private final OutputStream out;
 
     private boolean currentSourceTransparency = true;
     private boolean currentPatternTransparency = true;
@@ -83,7 +82,7 @@
      * true: Standard PCL shades are used (poor quality). false: user-defined pattern are used
      * to create custom dither patterns for better grayscale quality.
      */
-    private boolean usePCLShades = false;
+    private final boolean usePCLShades = false;
 
     /**
      * Main constructor.
@@ -412,7 +411,7 @@
     private static void setValueInMatrix(int[] dn, int half, int part, int idx, int value) {
         int xoff = (part & 1) * half;
         int yoff = (part & 2) * half * half;
-        int matrixIndex = yoff + ((int)(idx / half) * half * 2) + (idx % half) + xoff;
+        int matrixIndex = yoff + ((idx / half) * half * 2) + (idx % half) + xoff;
         dn[matrixIndex] = value;
     }
 

Modified: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/pcl/PCLGraphics2D.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/pcl/PCLGraphics2D.java?rev=699801&r1=699800&r2=699801&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/pcl/PCLGraphics2D.java (original)
+++ xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/pcl/PCLGraphics2D.java Sun Sep 28 04:38:15 2008
@@ -42,9 +42,9 @@
 import java.io.IOException;
 import java.text.AttributedCharacterIterator;
 
-import org.apache.fop.util.UnitConv;
 import org.apache.xmlgraphics.java2d.AbstractGraphics2D;
 import org.apache.xmlgraphics.java2d.GraphicContext;
+import org.apache.xmlgraphics.util.UnitConv;
 
 /**
  * Graphics2D implementation implementing PCL and HP GL/2.
@@ -55,7 +55,7 @@
     /** The PCL generator */
     protected PCLGenerator gen;
 
-    private boolean failOnUnsupportedFeature = true;
+    private final boolean failOnUnsupportedFeature = true;
     private boolean clippingDisabled = false;
 
     /**

Modified: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/pcl/PCLGraphics2DAdapter.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/pcl/PCLGraphics2DAdapter.java?rev=699801&r1=699800&r2=699801&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/pcl/PCLGraphics2DAdapter.java (original)
+++ xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/pcl/PCLGraphics2DAdapter.java Sun Sep 28 04:38:15 2008
@@ -34,7 +34,7 @@
 
 import org.apache.fop.render.AbstractGraphics2DAdapter;
 import org.apache.fop.render.RendererContext;
-import org.apache.fop.util.UnitConv;
+import org.apache.xmlgraphics.util.UnitConv;
 
 /**
  * Graphics2DAdapter implementation for PCL and HP GL/2.
@@ -111,7 +111,7 @@
 
         if (!painted) {
             //Fallback solution: Paint to a BufferedImage
-            int resolution = (int)Math.round(context.getUserAgent().getTargetResolution());
+            int resolution = Math.round(context.getUserAgent().getTargetResolution());
             BufferedImage bi = paintToBufferedImage(painter, pclContext,
                     resolution, !pclContext.isColorCanvas(), false);
 

Modified: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/pcl/PCLPageDefinition.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/pcl/PCLPageDefinition.java?rev=699801&r1=699800&r2=699801&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/pcl/PCLPageDefinition.java (original)
+++ xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/pcl/PCLPageDefinition.java Sun Sep 28 04:38:15 2008
@@ -24,7 +24,7 @@
 import java.util.Iterator;
 import java.util.List;
 
-import org.apache.fop.util.UnitConv;
+import org.apache.xmlgraphics.util.UnitConv;
 
 /**
  * This class represents a page format with PCL-specific properties.
@@ -34,11 +34,11 @@
     private static List pageDefinitions;
     private static PCLPageDefinition defaultPageDefinition;
 
-    private String name;
-    private int selector;
-    private Dimension physicalPageSize;
-    private Rectangle logicalPageRect;
-    private boolean landscape;
+    private final String name;
+    private final int selector;
+    private final Dimension physicalPageSize;
+    private final Rectangle logicalPageRect;
+    private final boolean landscape;
 
     static {
         createPageDefinitions();

Modified: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/pcl/PCLRenderer.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/pcl/PCLRenderer.java?rev=699801&r1=699800&r2=699801&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/pcl/PCLRenderer.java (original)
+++ xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/pcl/PCLRenderer.java Sun Sep 28 04:38:15 2008
@@ -96,7 +96,7 @@
 import org.apache.fop.render.java2d.Java2DRenderer;
 import org.apache.fop.render.pcl.extensions.PCLElementMapping;
 import org.apache.fop.traits.BorderProps;
-import org.apache.fop.util.UnitConv;
+import org.apache.xmlgraphics.util.UnitConv;
 
 /* Note:
  * There are some commonalities with AbstractPathOrientedRenderer but it's not possible
@@ -122,7 +122,7 @@
     protected PCLGenerator gen;
     private boolean ioTrouble = false;
 
-    private Stack graphicContextStack = new Stack();
+    private final Stack graphicContextStack = new Stack();
     private GraphicContext graphicContext = new GraphicContext();
 
     private PCLPageDefinition currentPageDefinition;
@@ -147,7 +147,7 @@
      * This can be used to work around problems with Apache Batik, for example, but setting
      * this to true will increase memory consumption.
      */
-    private boolean useColorCanvas = false;
+    private final boolean useColorCanvas = false;
 
     /**
      * Controls whether the generation of PJL commands gets disabled.
@@ -239,7 +239,7 @@
 
     /** @return the target resolution */
     protected int getResolution() {
-        int resolution = (int)Math.round(userAgent.getTargetResolution());
+        int resolution = Math.round(userAgent.getTargetResolution());
         if (resolution <= 300) {
             return 300;
         } else {
@@ -928,8 +928,8 @@
         int borderPaddingStart = bv.getBorderAndPaddingWidthStart();
         int borderPaddingBefore = bv.getBorderAndPaddingWidthBefore();
         //This is the content-rect
-        float width = (float)bv.getIPD() / 1000f;
-        float height = (float)bv.getBPD() / 1000f;
+        float width = bv.getIPD() / 1000f;
+        float height = bv.getBPD() / 1000f;
 
 
         if (bv.getPositioning() == Block.ABSOLUTE
@@ -951,7 +951,7 @@
 
             saveGraphicsState();
             //Viewport position
-            concatenateTransformationMatrix(mptToPt(positionTransform));
+            concatenateTransformationMatrix(UnitConv.mptToPt(positionTransform));
 
             //Background and borders
             float bpwidth = (borderPaddingStart + bv.getBorderAndPaddingWidthEnd()) / 1000f;
@@ -961,7 +961,7 @@
             //Shift to content rectangle after border painting
             AffineTransform contentRectTransform = new AffineTransform();
             contentRectTransform.translate(borderPaddingStart, borderPaddingBefore);
-            concatenateTransformationMatrix(mptToPt(contentRectTransform));
+            concatenateTransformationMatrix(UnitConv.mptToPt(contentRectTransform));
 
             //Clipping
             if (bv.getClip()) {
@@ -971,7 +971,7 @@
             saveGraphicsState();
             //Set up coordinate system for content rectangle
             AffineTransform contentTransform = ctm.toAffineTransform();
-            concatenateTransformationMatrix(mptToPt(contentTransform));
+            concatenateTransformationMatrix(UnitConv.mptToPt(contentTransform));
 
             currentIPPosition = 0;
             currentBPPosition = 0;
@@ -1017,7 +1017,7 @@
             currentIPPosition = saveIP;
             currentBPPosition = saveBP;
 
-            currentBPPosition += (int)(bv.getAllocBPD());
+            currentBPPosition += (bv.getAllocBPD());
         }
         //currentFontName = saveFontName;
     }
@@ -1041,7 +1041,7 @@
 
         if (!at.isIdentity()) {
             saveGraphicsState();
-            concatenateTransformationMatrix(mptToPt(at));
+            concatenateTransformationMatrix(UnitConv.mptToPt(at));
         }
 
         currentIPPosition = 0;
@@ -1079,7 +1079,7 @@
 
         if (!at.isIdentity()) {
             saveGraphicsState();
-            concatenateTransformationMatrix(mptToPt(at));
+            concatenateTransformationMatrix(UnitConv.mptToPt(at));
         }
 
         currentIPPosition = 0;
@@ -1102,7 +1102,7 @@
      */
     protected void concatenateTransformationMatrix(AffineTransform at) {
         if (!at.isIdentity()) {
-            graphicContext.transform(ptToMpt(at));
+            graphicContext.transform(UnitConv.ptToMpt(at));
             changePrintDirection();
         }
     }
@@ -1416,13 +1416,13 @@
                  borderRect.width,
                  borderRect.height);
         final Rectangle paintRect = new Rectangle(
-                (int)Math.round(borderRect.x * 1000f),
-                (int)Math.round(borderRect.y * 1000f),
+                Math.round(borderRect.x * 1000f),
+                Math.round(borderRect.y * 1000f),
                 (int)Math.floor(borderRect.width * 1000f) + 1,
                 (int)Math.floor(borderRect.height * 1000f) + 1);
         //Add one pixel wide safety margin around the paint area
         int pixelWidth = (int)Math.round(UnitConv.in2mpt(1) / userAgent.getTargetResolution());
-        final int xoffset = (int)Math.round(-effBorderRect.x * 1000f) + pixelWidth;
+        final int xoffset = Math.round(-effBorderRect.x * 1000f) + pixelWidth;
         final int yoffset = pixelWidth;
         paintRect.x += xoffset;
         paintRect.y += yoffset;

Modified: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/pdf/PDFBorderPainter.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/pdf/PDFBorderPainter.java?rev=699801&r1=699800&r2=699801&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/pdf/PDFBorderPainter.java (original)
+++ xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/pdf/PDFBorderPainter.java Sun Sep 28 04:38:15 2008
@@ -27,9 +27,9 @@
 import org.apache.commons.logging.LogFactory;
 
 import org.apache.fop.fo.Constants;
-import org.apache.fop.render.PrintRenderer;
 import org.apache.fop.render.intermediate.BorderPainter;
 import org.apache.fop.traits.RuleStyle;
+import org.apache.fop.util.ColorUtil;
 
 /**
  * PDF-specific implementation of the {@code BorderPainter}.
@@ -150,8 +150,8 @@
                 float colFactor = (style == Constants.EN_GROOVE ? 0.4f : -0.4f);
                 generator.add("[] 0 d ");
                 if (horz) {
-                    Color uppercol = PrintRenderer.lightenColor(col, -colFactor);
-                    Color lowercol = PrintRenderer.lightenColor(col, colFactor);
+                    Color uppercol = ColorUtil.lightenColor(col, -colFactor);
+                    Color lowercol = ColorUtil.lightenColor(col, colFactor);
                     float h3 = h / 3;
                     generator.add(format(h3) + " w\n");
                     float ym1 = y1 + (h3 / 2);
@@ -165,8 +165,8 @@
                     generator.add(format(x1) + " " + format(ym1 + h3 + h3) + " m "
                                         + format(x2) + " " + format(ym1 + h3 + h3) + " l S\n");
                 } else {
-                    Color leftcol = PrintRenderer.lightenColor(col, -colFactor);
-                    Color rightcol = PrintRenderer.lightenColor(col, colFactor);
+                    Color leftcol = ColorUtil.lightenColor(col, -colFactor);
+                    Color rightcol = ColorUtil.lightenColor(col, colFactor);
                     float w3 = w / 3;
                     generator.add(format(w3) + " w\n");
                     float xm1 = x1 + (w3 / 2);
@@ -189,14 +189,14 @@
                 generator.add("[] 0 d ");
                 Color c = col;
                 if (horz) {
-                    c = PrintRenderer.lightenColor(c, (startOrBefore ? 1 : -1) * colFactor);
+                    c = ColorUtil.lightenColor(c, (startOrBefore ? 1 : -1) * colFactor);
                     generator.add(format(h) + " w\n");
                     float ym1 = y1 + (h / 2);
                     generator.setColor(c, false);
                     generator.add(format(x1) + " " + format(ym1) + " m "
                             + format(x2) + " " + format(ym1) + " l S\n");
                 } else {
-                    c = PrintRenderer.lightenColor(c, (startOrBefore ? 1 : -1) * colFactor);
+                    c = ColorUtil.lightenColor(c, (startOrBefore ? 1 : -1) * colFactor);
                     generator.add(format(w) + " w\n");
                     float xm1 = x1 + (w / 2);
                     generator.setColor(c, false);
@@ -254,7 +254,7 @@
             break;
         case Constants.EN_GROOVE:
         case Constants.EN_RIDGE:
-            generator.setColor(PrintRenderer.lightenColor(color, 0.6f), true);
+            generator.setColor(ColorUtil.lightenColor(color, 0.6f), true);
             generator.add(format(start.x) + " " + format(starty) + " m\n");
             generator.add(format(end.x) + " " + format(starty) + " l\n");
             generator.add(format(end.x) + " " + format(starty + 2 * half) + " l\n");

Modified: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/pdf/PDFRenderer.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/pdf/PDFRenderer.java?rev=699801&r1=699800&r2=699801&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/pdf/PDFRenderer.java (original)
+++ xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/pdf/PDFRenderer.java Sun Sep 28 04:38:15 2008
@@ -93,6 +93,7 @@
 import org.apache.fop.render.RendererContext;
 import org.apache.fop.traits.RuleStyle;
 import org.apache.fop.util.CharUtilities;
+import org.apache.fop.util.ColorUtil;
 
 /**
  * Renderer that renders areas to PDF.

Modified: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/ps/PSRenderer.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/ps/PSRenderer.java?rev=699801&r1=699800&r2=699801&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/ps/PSRenderer.java (original)
+++ xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/ps/PSRenderer.java Sun Sep 28 04:38:15 2008
@@ -106,6 +106,7 @@
 import org.apache.fop.render.ps.extensions.PSSetPageDevice;
 import org.apache.fop.render.ps.extensions.PSSetupCode;
 import org.apache.fop.util.CharUtilities;
+import org.apache.fop.util.ColorUtil;
 
 /**
  * Renderer that renders to PostScript.
@@ -839,8 +840,8 @@
                     float colFactor = (style == EN_GROOVE ? 0.4f : -0.4f);
                     gen.useDash(null);
                     if (horz) {
-                        Color uppercol = lightenColor(col, -colFactor);
-                        Color lowercol = lightenColor(col, colFactor);
+                        Color uppercol = ColorUtil.lightenColor(col, -colFactor);
+                        Color lowercol = ColorUtil.lightenColor(col, colFactor);
                         float h3 = h / 3;
                         gen.useLineWidth(h3);
                         float ym1 = y1 + (h3 / 2);
@@ -851,8 +852,8 @@
                         gen.useColor(lowercol);
                         drawLine(x1, ym1 + h3 + h3, x2, ym1 + h3 + h3);
                     } else {
-                        Color leftcol = lightenColor(col, -colFactor);
-                        Color rightcol = lightenColor(col, colFactor);
+                        Color leftcol = ColorUtil.lightenColor(col, -colFactor);
+                        Color rightcol = ColorUtil.lightenColor(col, colFactor);
                         float w3 = w / 3;
                         gen.useLineWidth(w3);
                         float xm1 = x1 + (w3 / 2);
@@ -869,13 +870,13 @@
                     colFactor = (style == EN_OUTSET ? 0.4f : -0.4f);
                     gen.useDash(null);
                     if (horz) {
-                        Color c = lightenColor(col, (startOrBefore ? 1 : -1) * colFactor);
+                        Color c = ColorUtil.lightenColor(col, (startOrBefore ? 1 : -1) * colFactor);
                         gen.useLineWidth(h);
                         float ym1 = y1 + (h / 2);
                         gen.useColor(c);
                         drawLine(x1, ym1, x2, ym1);
                     } else {
-                        Color c = lightenColor(col, (startOrBefore ? 1 : -1) * colFactor);
+                        Color c = ColorUtil.lightenColor(col, (startOrBefore ? 1 : -1) * colFactor);
                         gen.useLineWidth(w);
                         float xm1 = x1 + (w / 2);
                         gen.useColor(c);
@@ -1570,7 +1571,7 @@
                 case EN_RIDGE:
                     float half = area.getRuleThickness() / 2000f;
 
-                    gen.useColor(lightenColor(col, 0.6f));
+                    gen.useColor(ColorUtil.lightenColor(col, 0.6f));
                     moveTo(startx, starty);
                     lineTo(endx, starty);
                     lineTo(endx, starty + 2 * half);

Modified: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/rtf/RTFHandler.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/rtf/RTFHandler.java?rev=699801&r1=699800&r2=699801&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/rtf/RTFHandler.java (original)
+++ xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/rtf/RTFHandler.java Sun Sep 28 04:38:15 2008
@@ -222,7 +222,7 @@
                     PageSequenceMaster master
                         = pageSeq.getRoot().getLayoutMasterSet().getPageSequenceMaster(reference);
                     this.pagemaster = master.getNextSimplePageMaster(
-                            false, false, false, false, false);
+                            false, false, false, false);
                 }
             }
 

Modified: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/rtf/rtflib/rtfdoc/RtfTableCell.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/rtf/rtflib/rtfdoc/RtfTableCell.java?rev=699801&r1=699800&r2=699801&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/rtf/rtflib/rtfdoc/RtfTableCell.java (original)
+++ xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/rtf/rtflib/rtfdoc/RtfTableCell.java Sun Sep 28 04:38:15 2008
@@ -26,8 +26,8 @@
  * the FOP project.
  */
 
-import java.io.Writer;
 import java.io.IOException;
+import java.io.Writer;
 import java.util.Iterator;
 
 /**  A cell in an RTF table, container for paragraphs, lists, etc.
@@ -237,12 +237,12 @@
             // Reach the column index in table context corresponding to the current column cell
             // id is the index of the current cell (it begins at 1)
             // getColumnIndex() is the index of the current column in table context (it begins at 0)
-            //  => so we must widthdraw 1 when comparing these two variables.
+            //  => so we must withdraw 1 when comparing these two variables.
             while ((this.id - 1) != tableColumnsInfo.getColumnIndex()) {
                tableColumnsInfo.selectNextColumn();
             }
 
-            // We widthdraw one cell because the first cell is already created
+            // We withdraw one cell because the first cell is already created
             // (it's the current cell) !
             int i = nbMergedCells - 1;
             while (i > 0) {
@@ -255,21 +255,18 @@
         final int xPos = offset + iCurrentWidth;
 
         //these lines added by Chris Scott, Westinghouse
-        //some attributes need to be writting before opening block
+        //some attributes need to be written before opening block
         if (setCenter) {
-            writeControlWord("qc");
+            writeControlWord("trqc");
         } else if (setRight) {
-            writeControlWord("qr");
+            writeControlWord("trqr");
         } else {
-            writeControlWord("ql");
+            writeControlWord("trql");
         }
         writeAttributes (attrib, ITableAttributes.CELL_VERT_ALIGN);
 
         writeControlWord("cellx" + xPos);
 
-        //TODO Why is this here, right after an alignment command is written (see above)?
-        writeControlWord("ql");
-
         return xPos;
 
     }

Modified: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/txt/TXTRenderer.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/txt/TXTRenderer.java?rev=699801&r1=699800&r2=699801&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/txt/TXTRenderer.java (original)
+++ xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/render/txt/TXTRenderer.java Sun Sep 28 04:38:15 2008
@@ -37,6 +37,7 @@
 import org.apache.fop.render.AbstractPathOrientedRenderer;
 import org.apache.fop.render.txt.border.AbstractBorderElement;
 import org.apache.fop.render.txt.border.BorderManager;
+import org.apache.xmlgraphics.util.UnitConv;
 
 /**
  * Renderer that renders areas to plain text.
@@ -85,10 +86,10 @@
      * Every line except the last line on a page (which will end with
      * pageEnding) will be terminated with this string.
      */
-    private String lineEnding = "\r\n";
+    private final String lineEnding = "\r\n";
 
     /** Every page except the last one will end with this string. */
-    private String pageEnding = "\f";
+    private final String pageEnding = "\f";
 
     /** Equals true, if current page is first. */
     private boolean firstPage = false;
@@ -100,7 +101,7 @@
     private char fillChar;
 
     /** Saves current coordinate transformation. */
-    private TXTState currentState = new TXTState();
+    private final TXTState currentState = new TXTState();
 
     private String encoding;
 
@@ -570,7 +571,7 @@
 
     /** {@inheritDoc} */
     protected void concatenateTransformationMatrix(AffineTransform at) {
-        currentState.push(new CTM(ptToMpt(at)));
+        currentState.push(new CTM(UnitConv.ptToMpt(at)));
     }
 
 }

Modified: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/svg/PDFGraphics2D.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/svg/PDFGraphics2D.java?rev=699801&r1=699800&r2=699801&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/svg/PDFGraphics2D.java (original)
+++ xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/svg/PDFGraphics2D.java Sun Sep 28 04:38:15 2008
@@ -285,7 +285,7 @@
 
     /**
      * Get the string containing all the commands written into this
-     * Grpahics.
+     * Graphics.
      * @return the string containing the PDF markup
      */
     public String getString() {
@@ -294,7 +294,7 @@
 
     /**
      * Get the string buffer from the currentStream, containing all
-     * the commands written into this Grpahics so far.
+     * the commands written into this Graphics so far.
      * @return the StringBuffer containing the PDF markup
      */
     public StringBuffer getBuffer() {
@@ -876,7 +876,7 @@
         if (paint instanceof RadialGradientPaint) {
             RadialGradientPaint rgp = (RadialGradientPaint)paint;
 
-            // There is essentially no way to support repeate
+            // There is essentially no way to support repeats
             // in PDF for radial gradients (the one option would
             // be to 'grow' the outer circle until it fully covered
             // the bounds and then grow the stops accordingly, the

Modified: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/svg/PDFTextPainter.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/svg/PDFTextPainter.java?rev=699801&r1=699800&r2=699801&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/svg/PDFTextPainter.java (original)
+++ xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/svg/PDFTextPainter.java Sun Sep 28 04:38:15 2008
@@ -147,7 +147,9 @@
 
             textUtil.beginTextObject();
             textUtil.setFonts(fonts);
-            textUtil.setTextRenderingMode(tpi.fillPaint != null, tpi.strokePaint != null, false);
+            boolean stroke = (tpi.strokePaint != null)
+                && (tpi.strokeStroke != null);
+            textUtil.setTextRenderingMode(tpi.fillPaint != null, stroke, false);
 
             AffineTransform localTransform = new AffineTransform();
             Point2D prevPos = null;

Modified: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/util/ColorUtil.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/util/ColorUtil.java?rev=699801&r1=699800&r2=699801&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/util/ColorUtil.java (original)
+++ xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/src/java/org/apache/fop/util/ColorUtil.java Sun Sep 28 04:38:15 2008
@@ -658,4 +658,27 @@
         colorMap.put("transparent", new Color(0, 0, 0, 0));
     }
 
+    /**
+     * Lightens up a color for groove, ridge, inset and outset border effects.
+     * @param col the color to lighten up
+     * @param factor factor by which to lighten up (negative values darken the color)
+     * @return the modified color
+     */
+    public static Color lightenColor(Color col, float factor) {
+        // TODO: This function converts the color into the sRGB namespace.
+        // This should be avoided if possible.
+        float[] cols = new float[4];
+        cols = col.getRGBComponents(cols);
+        if (factor > 0) {
+            cols[0] += (1.0 - cols[0]) * factor;
+            cols[1] += (1.0 - cols[1]) * factor;
+            cols[2] += (1.0 - cols[2]) * factor;
+        } else {
+            cols[0] -= cols[0] * -factor;
+            cols[1] -= cols[1] * -factor;
+            cols[2] -= cols[2] * -factor;
+        }
+        return new Color(cols[0], cols[1], cols[2], cols[3]);
+    }
+
 }

Modified: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/status.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/status.xml?rev=699801&r1=699800&r2=699801&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/status.xml (original)
+++ xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/status.xml Sun Sep 28 04:38:15 2008
@@ -53,6 +53,46 @@
 
   <changes>
     <release version="FOP Trunk" date="TBD">
+      <action context="Layout" dev="AD" type="fix" fixes-bug="40798">
+        Bugzilla 40798: A conditional-page-master-reference with page-position="last" qualifies
+        for a first page, if it is also the last. Additionally: also added support for
+        page-position="only".
+      </action>
+      <action context="Code" dev="AD" type="fix" fixes-bug="45842" due-to="Carsten Siedentop">
+        Make fop.bat and fop.cmd use the %FOP_OPTS% environment variable.
+      </action>
+      <action context="Renderers" dev="JM" type="add" fixes-bug="45795">
+        PDF Output: Added support for handling 16-bit alpha channel. They are currently
+        converted to 8 bits.
+      </action>
+      <action context="Renderers" dev="JM" type="fix">
+        PDF Output: Made sure the XMP Metadata stream is never compressed.
+      </action>
+      <action context="Fonts" dev="JM" type="fix" fixes-bug="45734" due-to="J. Frantzius">
+        Fix for PFMReader after bug #43089 changed the behavior of PFMFile. Fixes baseline
+        problems when Type 1 fonts are used in conjunction with XML font metric files.
+      </action>
+      <action context="Renderers" dev="JM" type="fix" fixes-bug="45616" due-to="Pavel Kysilka">
+        Fix for table handling in RTF output, so the output works with OpenOffice and AbiWord, too.
+      </action>
+      <action context="Code" dev="AD" type="fix" fixes-bug="45667">
+        Quick-fix to avoid a possible NullPointerException when using
+        empty inlines and hyphenation.
+      </action>
+      <action context="Layout" dev="JM" type="add">
+        Added missing generation of areas for empty grid units in tables with collapsing border
+        model.
+      </action>
+      <action context="Code" dev="JM" type="fix" importance="high">
+        Fixed memory leak in property cache (not cleaning stale PropertyCache$CacheEntry instances).
+      </action>
+      <action context="Renderers" dev="JM" type="fix">
+        Fixed text stroking in SVG when the stroke-width is zero.
+      </action>
+      <action context="Layout" dev="JM" type="fix">
+        Fixed the source for a division by zero when the content of an fo:leader with
+        leader-pattern="use-content" collapses to zero width during layout.
+      </action>
       <action context="Renderers" dev="JM" type="fix">
         Fixed border trait parsing for the area tree XML when CMYK or ICC colors were used.
       </action>
@@ -128,7 +168,7 @@
         Fixed a ClassCastException when using an fo:wrapper as a child
         of an fo:block-container.
       </action>
-      <action context="Fonts" dev="AC" type="add">
+      <action context="Fonts" dev="AC" type="add" importance="high">
         Add support for font substitution.
       </action>
       <action context="Renderers" dev="JM" type="fix" fixes-bug="43650">
@@ -151,7 +191,7 @@
         Add partial support for the "show-destination" property on fo:basic-link
         (PDF output only; see limitations on the compliance page)
       </action>
-      <action context="Layout" dev="JM" type="add">
+      <action context="Layout" dev="JM" type="add" importance="high">
         Added minimal support for integer keep values on the various keep properties on block-level
         FOs. For now, all integer values are treated the same (i.e. without strength distinction).
         Using integers allows to avoid overflows that can happen when "always" is used extensively.
@@ -179,7 +219,7 @@
         When a JPEG image is embedded, an optionally embedded color profile is filtered out
         as it's already embedded separately in the PDF file.
       </action>
-      <action context="Fonts" dev="JM" type="add">
+      <action context="Fonts" dev="JM" type="add" importance="high">
         Added support for addressing all glyphs available in a Type 1 font, not just the ones
         in the font's primary encoding.
       </action>
@@ -678,7 +718,7 @@
       <action context="Code" dev="JM" type="fix">
         AFP Renderer: Bugfix for 1 bit images where the width is not a multiple of 8.
       </action>
-      <action context="Code" dev="MM" type="add">
+      <action context="Code" dev="MM" type="add" importance="high">
         Support for keep-together.within-line="always".
       </action>
       <action context="Code" dev="MM" type="fix">

Modified: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/java/org/apache/fop/StandardTestSuite.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/java/org/apache/fop/StandardTestSuite.java?rev=699801&r1=699800&r2=699801&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/java/org/apache/fop/StandardTestSuite.java (original)
+++ xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/java/org/apache/fop/StandardTestSuite.java Sun Sep 28 04:38:15 2008
@@ -23,6 +23,8 @@
 import junit.framework.TestSuite;
 
 import org.apache.fop.fonts.TrueTypeAnsiTestCase;
+import org.apache.fop.image.loader.batik.ImageLoaderTestCase;
+import org.apache.fop.image.loader.batik.ImagePreloaderTestCase;
 import org.apache.fop.render.pdf.PDFAConformanceTestCase;
 import org.apache.fop.render.pdf.PDFCMapTestCase;
 import org.apache.fop.render.pdf.PDFEncodingTestCase;
@@ -50,6 +52,8 @@
         suite.addTest(new TestSuite(PDFsRGBSettingsTestCase.class));
         suite.addTest(new TestSuite(TrueTypeAnsiTestCase.class));
         suite.addTest(RichTextFormatTestSuite.suite());
+        suite.addTest(new TestSuite(ImageLoaderTestCase.class));
+        suite.addTest(new TestSuite(ImagePreloaderTestCase.class));
         //$JUnit-END$
         return suite;
     }

Modified: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/java/org/apache/fop/URIResolutionTestCase.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/java/org/apache/fop/URIResolutionTestCase.java?rev=699801&r1=699800&r2=699801&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/java/org/apache/fop/URIResolutionTestCase.java (original)
+++ xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/java/org/apache/fop/URIResolutionTestCase.java Sun Sep 28 04:38:15 2008
@@ -66,6 +66,7 @@
     /** @see junit.framework.TestCase#TestCase(String) */
     public URIResolutionTestCase(String name) {
         super(name);
+        backupDir.mkdirs();
     }
 
     /**

Modified: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/java/org/apache/fop/UtilityCodeTestSuite.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/java/org/apache/fop/UtilityCodeTestSuite.java?rev=699801&r1=699800&r2=699801&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/java/org/apache/fop/UtilityCodeTestSuite.java (original)
+++ xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/java/org/apache/fop/UtilityCodeTestSuite.java Sun Sep 28 04:38:15 2008
@@ -22,14 +22,12 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
-import org.apache.fop.pdf.PDFObjectTestCase;
 import org.apache.fop.events.BasicEventTestCase;
+import org.apache.fop.pdf.PDFObjectTestCase;
 import org.apache.fop.traits.BorderPropsTestCase;
-import org.apache.fop.util.DataURIResolverTestCase;
+import org.apache.fop.util.ColorUtilTestCase;
 import org.apache.fop.util.ElementListUtilsTestCase;
 import org.apache.fop.util.PDFNumberTestCase;
-import org.apache.fop.util.ColorUtilTestCase;
-import org.apache.fop.util.UnitConvTestCase;
 import org.apache.fop.util.XMLResourceBundleTestCase;
 
 /**
@@ -47,13 +45,12 @@
         //$JUnit-BEGIN$
         suite.addTest(new TestSuite(PDFNumberTestCase.class));
         suite.addTest(new TestSuite(PDFObjectTestCase.class));
-        suite.addTest(new TestSuite(UnitConvTestCase.class));
         suite.addTest(new TestSuite(ColorUtilTestCase.class));
         suite.addTest(new TestSuite(BorderPropsTestCase.class));
         suite.addTest(new TestSuite(ElementListUtilsTestCase.class));
-        suite.addTest(new TestSuite(DataURIResolverTestCase.class));
         suite.addTest(new TestSuite(BasicEventTestCase.class));
         suite.addTest(new TestSuite(XMLResourceBundleTestCase.class));
+        suite.addTest(new TestSuite(URIResolutionTestCase.class));
         //$JUnit-END$
         return suite;
     }

Modified: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/java/org/apache/fop/image/loader/batik/ImageLoaderTestCase.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/java/org/apache/fop/image/loader/batik/ImageLoaderTestCase.java?rev=699801&r1=699800&r2=699801&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/java/org/apache/fop/image/loader/batik/ImageLoaderTestCase.java (original)
+++ xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/java/org/apache/fop/image/loader/batik/ImageLoaderTestCase.java Sun Sep 28 04:38:15 2008
@@ -19,21 +19,23 @@
 
 package org.apache.fop.image.loader.batik;
 
+import java.awt.image.Raster;
+import java.awt.image.RenderedImage;
 import java.io.File;
 
 import junit.framework.TestCase;
 
+import org.apache.fop.apps.FOUserAgent;
+import org.apache.fop.apps.FopFactory;
 import org.apache.xmlgraphics.image.loader.Image;
 import org.apache.xmlgraphics.image.loader.ImageFlavor;
 import org.apache.xmlgraphics.image.loader.ImageInfo;
 import org.apache.xmlgraphics.image.loader.ImageManager;
+import org.apache.xmlgraphics.image.loader.XMLNamespaceEnabledImageFlavor;
 import org.apache.xmlgraphics.image.loader.impl.ImageRendered;
 import org.apache.xmlgraphics.image.loader.impl.ImageXMLDOM;
 import org.apache.xmlgraphics.image.writer.ImageWriterUtil;
 
-import org.apache.fop.apps.FOUserAgent;
-import org.apache.fop.apps.FopFactory;
-
 /**
  * Tests for bundled ImageLoader implementations.
  */
@@ -59,10 +61,10 @@
         ImageInfo info = manager.preloadImage(uri, userAgent.getImageSessionContext());
         assertNotNull("ImageInfo must not be null", info);
 
-        Image img = manager.getImage(info, ImageFlavor.XML_DOM,
+        Image img = manager.getImage(info, XMLNamespaceEnabledImageFlavor.SVG_DOM,
                 userAgent.getImageSessionContext());
         assertNotNull("Image must not be null", img);
-        assertEquals(ImageFlavor.XML_DOM, img.getFlavor());
+        assertEquals(XMLNamespaceEnabledImageFlavor.SVG_DOM, img.getFlavor());
         ImageXMLDOM imgDom = (ImageXMLDOM)img;
         assertNotNull(imgDom.getDocument());
         assertEquals("http://www.w3.org/2000/svg", imgDom.getRootNamespace());
@@ -101,10 +103,10 @@
         ImageInfo info = manager.preloadImage(uri, userAgent.getImageSessionContext());
         assertNotNull("ImageInfo must not be null", info);
 
-        Image img = manager.getImage(info, ImageFlavor.XML_DOM,
+        Image img = manager.getImage(info, XMLNamespaceEnabledImageFlavor.SVG_DOM,
                 userAgent.getImageSessionContext());
         assertNotNull("Image must not be null", img);
-        assertEquals(ImageFlavor.XML_DOM, img.getFlavor());
+        assertEquals(XMLNamespaceEnabledImageFlavor.SVG_DOM, img.getFlavor());
         ImageXMLDOM imgDom = (ImageXMLDOM)img;
         assertNotNull(imgDom.getDocument());
         assertEquals("http://www.w3.org/2000/svg", imgDom.getRootNamespace());
@@ -160,4 +162,58 @@
         assertEquals(612000, info.getSize().getHeightMpt());
     }
 
+    public void testSVGWithReferences() throws Exception {
+        String uri = "test/resources/fop/svg/images.svg";
+        FopFactory ff = FopFactory.newInstance();
+        FOUserAgent userAgent = ff.newFOUserAgent();
+
+        ImageManager manager = ff.getImageManager();
+        ImageInfo info = manager.preloadImage(uri, userAgent.getImageSessionContext());
+        assertNotNull("ImageInfo must not be null", info);
+
+        Image img = manager.getImage(info, XMLNamespaceEnabledImageFlavor.SVG_DOM,
+                userAgent.getImageSessionContext());
+        assertNotNull("Image must not be null", img);
+        assertEquals(XMLNamespaceEnabledImageFlavor.SVG_DOM, img.getFlavor());
+        ImageXMLDOM imgDom = (ImageXMLDOM)img;
+        assertNotNull(imgDom.getDocument());
+        assertEquals("http://www.w3.org/2000/svg", imgDom.getRootNamespace());
+        info = imgDom.getInfo(); //Switch to the ImageInfo returned by the image
+        assertEquals(400000, info.getSize().getWidthMpt());
+        assertEquals(400000, info.getSize().getHeightMpt());
+        assertEquals(400, info.getSize().getWidthPx());
+        assertEquals(400, info.getSize().getHeightPx());
+
+        img = manager.getImage(info, ImageFlavor.RENDERED_IMAGE,
+                    userAgent.getImageSessionContext());
+        assertNotNull("Image must not be null", img);
+        assertEquals(ImageFlavor.RENDERED_IMAGE, img.getFlavor());
+        ImageRendered imgRed = (ImageRendered)img;
+        RenderedImage renImg = imgRed.getRenderedImage();
+        assertNotNull(renImg);
+        if (DEBUG_TARGET_DIR != null) {
+            ImageWriterUtil.saveAsPNG(renImg,
+                    (int)userAgent.getTargetResolution(),
+                    new File(DEBUG_TARGET_DIR, "images.svg.png"));
+        }
+        assertEquals(400, renImg.getWidth());
+        assertEquals(400, renImg.getHeight());
+        info = imgRed.getInfo(); //Switch to the ImageInfo returned by the image
+        assertEquals(400000, info.getSize().getWidthMpt());
+        assertEquals(400000, info.getSize().getHeightMpt());
+        Raster raster = renImg.getData();
+        // This pixel is white
+        int[] pixel1 = raster.getPixel(1, 1, (int[] )null);
+        // This pixel is from the embedded JPG and is not white
+        int[] pixel80 = raster.getPixel(80, 80, (int[]) null);
+        assertEquals(pixel1.length, pixel80.length);
+        boolean same = true;
+        for (int i = 0; i < pixel1.length; i++) {
+            same &= (pixel1[i] == pixel80[i]);
+        }
+        assertFalse("Embedding JPG into SVG failed", same);
+    }
+
+
+    
 }

Modified: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/java/org/apache/fop/memory/MemoryEater.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/java/org/apache/fop/memory/MemoryEater.java?rev=699801&r1=699800&r2=699801&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/java/org/apache/fop/memory/MemoryEater.java (original)
+++ xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/java/org/apache/fop/memory/MemoryEater.java Sun Sep 28 04:38:15 2008
@@ -34,6 +34,7 @@
 import javax.xml.transform.sax.SAXTransformerFactory;
 import javax.xml.transform.stream.StreamSource;
 
+import org.apache.commons.io.IOUtils;
 import org.apache.commons.io.output.NullOutputStream;
 
 import org.apache.fop.apps.FOUserAgent;
@@ -51,28 +52,48 @@
     private FopFactory fopFactory = FopFactory.newInstance();
     private Templates replicatorTemplates;
 
+    private Stats stats;
+
     public MemoryEater() throws TransformerConfigurationException, MalformedURLException {
         File xsltFile = new File("test/xsl/fo-replicator.xsl");
         Source xslt = new StreamSource(xsltFile);
         replicatorTemplates = tFactory.newTemplates(xslt);
     }
 
-    private void eatMemory(File foFile, int replicatorRepeats) throws Exception {
+    private void eatMemory(File foFile, int runRepeats, int replicatorRepeats) throws Exception {
+        stats = new Stats();
+        for (int i = 0; i < runRepeats; i++) {
+            eatMemory(i, foFile, replicatorRepeats);
+            stats.progress(i, runRepeats);
+        }
+        stats.dumpFinalStats();
+        System.out.println(stats.getGoogleChartURL());
+    }
+
+    private void eatMemory(int callIndex, File foFile, int replicatorRepeats) throws Exception {
         Source src = new StreamSource(foFile);
 
         Transformer transformer = replicatorTemplates.newTransformer();
         transformer.setParameter("repeats", new Integer(replicatorRepeats));
 
         OutputStream out = new NullOutputStream(); //write to /dev/nul
-        FOUserAgent userAgent = fopFactory.newFOUserAgent();
-        userAgent.setBaseURL(foFile.getParentFile().toURL().toExternalForm());
-        Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, userAgent, out);
-        Result res = new SAXResult(fop.getDefaultHandler());
-
-        transformer.transform(src, res);
-
-        System.out.println("Generated " + fop.getResults().getPageCount() + " pages.");
-
+        try {
+            FOUserAgent userAgent = fopFactory.newFOUserAgent();
+            userAgent.setBaseURL(foFile.getParentFile().toURL().toExternalForm());
+            Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, userAgent, out);
+            Result res = new SAXResult(fop.getDefaultHandler());
+
+            transformer.transform(src, res);
+
+            stats.notifyPagesProduced(fop.getResults().getPageCount());
+            if (callIndex == 0) {
+                System.out.println(foFile.getName() + " generates "
+                        + fop.getResults().getPageCount() + " pages.");
+            }
+            stats.checkStats();
+        } finally {
+            IOUtils.closeQuietly(out);
+        }
     }
 
     private static void prompt() throws IOException {
@@ -108,9 +129,7 @@
             long start = System.currentTimeMillis();
 
             MemoryEater app = new MemoryEater();
-            for (int i = 0; i < runRepeats; i++) {
-                app.eatMemory(testFile, replicatorRepeats);
-            }
+            app.eatMemory(testFile, runRepeats, replicatorRepeats);
 
             long duration = System.currentTimeMillis() - start;
             System.out.println("Success! Job took " + duration + " ms");

Modified: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/layoutengine/standard-testcases/leader_leader-pattern_use-content.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/layoutengine/standard-testcases/leader_leader-pattern_use-content.xml?rev=699801&r1=699800&r2=699801&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/layoutengine/standard-testcases/leader_leader-pattern_use-content.xml (original)
+++ xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/layoutengine/standard-testcases/leader_leader-pattern_use-content.xml Sun Sep 28 04:38:15 2008
@@ -69,6 +69,10 @@
                 </fo:instream-foreign-object></fo:leader>
               Content is svg 20 x 10 which is wider than the leader-length
           </fo:block>
+          <fo:block>
+            <fo:leader leader-length="36pt" leader-pattern="use-content"> </fo:leader>
+            Content is " "
+          </fo:block>
         </fo:flow>
       </fo:page-sequence>
     </fo:root>
@@ -172,5 +176,9 @@
     <eval expected="0" xpath="//flow/block[7]/lineArea/inlineparent/inlineparent[1]/@offset"/>
     <eval expected="20000" xpath="//flow/block[7]/lineArea/inlineparent/inlineparent[1]/viewport/@ipd"/>
     <eval expected="-1384" xpath="//flow/block[7]/lineArea/inlineparent/inlineparent[1]/viewport/@offset"/>
+
+    <eval expected="11100" xpath="//flow/block[8]/lineArea/@bpd"/>
+    <eval expected="36000" xpath="//flow/block[8]/lineArea/space[1]/@ipd"/>
+    <eval expected="0" xpath="//flow/block[8]/lineArea/space[1]/@offset"/>
   </checks>
 </testcase>

Modified: xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/layoutengine/standard-testcases/table_border-collapse_collapse_spans_2.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/layoutengine/standard-testcases/table_border-collapse_collapse_spans_2.xml?rev=699801&r1=699800&r2=699801&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/layoutengine/standard-testcases/table_border-collapse_collapse_spans_2.xml (original)
+++ xmlgraphics/fop/branches/Temp_AreaTreeNewDesign/test/layoutengine/standard-testcases/table_border-collapse_collapse_spans_2.xml Sun Sep 28 04:38:15 2008
@@ -434,69 +434,68 @@
     <eval expected="(double,#800000,6000,collapse-outer)" xpath="//flow/block[2]/block[19]/@border-after"/>
     <eval expected="(solid,#800000,6000,collapse-outer)" xpath="//flow/block[2]/block[19]/@border-start"/>
     <eval expected="(solid,#800000,6000,collapse-inner)" xpath="//flow/block[2]/block[19]/@border-end"/>
-    <!--
     <eval expected="94000" xpath="//flow/block[2]/block[20]/@ipd"/>
     <eval expected="106000" xpath="//flow/block[2]/block[20]/@ipda"/>
     <eval expected="52200" xpath="//flow/block[2]/block[20]/@bpd"/>
     <eval expected="52200" xpath="//flow/block[2]/block[20]/@bpda"/>
     <eval expected="103000" xpath="//flow/block[2]/block[20]/@left-offset"/>
     <eval expected="241100" xpath="//flow/block[2]/block[20]/@top-offset"/>
-    <eval expected="(double,#800000,0,collapse-outer)" xpath="//flow/block[2]/block[20]/@border-after"/>
+    <eval expected="" xpath="//flow/block[2]/block[20]/@border-before"/>
+    <eval expected="" xpath="//flow/block[2]/block[20]/@border-after"/>
     <eval expected="(solid,#800000,6000,collapse-inner)" xpath="//flow/block[2]/block[20]/@border-start"/>
     <eval expected="(solid,#008000,6000,collapse-inner)" xpath="//flow/block[2]/block[20]/@border-end"/>
-    -->
-    <eval expected="97000" xpath="//flow/block[2]/block[20]/@ipd"/>
-    <eval expected="103000" xpath="//flow/block[2]/block[20]/@ipda"/>
-    <eval expected="41300" xpath="//flow/block[2]/block[20]/@bpd"/>
-    <eval expected="81300" xpath="//flow/block[2]/block[20]/@bpda"/>
-    <eval expected="203000" xpath="//flow/block[2]/block[20]/@left-offset"/>
-    <eval expected="115400" xpath="//flow/block[2]/block[20]/@top-offset"/>
-    <eval expected="(double,#008000,40000,collapse-inner)" xpath="//flow/block[2]/block[20]/@border-before"/>
-    <eval expected="(solid,#008000,6000,collapse-inner)" xpath="//flow/block[2]/block[20]/@border-start"/>
-    <eval expected="97500" xpath="//flow/block[2]/block[21]/@ipd"/>
-    <eval expected="102500" xpath="//flow/block[2]/block[21]/@ipda"/>
+    <eval expected="97000" xpath="//flow/block[2]/block[21]/@ipd"/>
+    <eval expected="103000" xpath="//flow/block[2]/block[21]/@ipda"/>
     <eval expected="41300" xpath="//flow/block[2]/block[21]/@bpd"/>
     <eval expected="81300" xpath="//flow/block[2]/block[21]/@bpda"/>
-    <eval expected="300000" xpath="//flow/block[2]/block[21]/@left-offset"/>
+    <eval expected="203000" xpath="//flow/block[2]/block[21]/@left-offset"/>
     <eval expected="115400" xpath="//flow/block[2]/block[21]/@top-offset"/>
     <eval expected="(double,#008000,40000,collapse-inner)" xpath="//flow/block[2]/block[21]/@border-before"/>
-    <eval expected="(dashed,#008000,5000,collapse-outer)" xpath="//flow/block[2]/block[21]/@border-end"/>
-    <eval expected="70000" xpath="//flow/block[2]/block[22]/@ipd"/>
-    <eval expected="130000" xpath="//flow/block[2]/block[22]/@ipda"/>
-    <eval expected="44400" xpath="//flow/block[2]/block[22]/@bpd"/>
-    <eval expected="44400" xpath="//flow/block[2]/block[22]/@bpda"/>
-    <eval expected="230000" xpath="//flow/block[2]/block[22]/@left-offset"/>
-    <eval expected="196700" xpath="//flow/block[2]/block[22]/@top-offset"/>
-    <eval expected="(solid,#c0c0c0,60000,collapse-inner)" xpath="//flow/block[2]/block[22]/@border-start"/>
-    <eval expected="97500" xpath="//flow/block[2]/block[23]/@ipd"/>
-    <eval expected="102500" xpath="//flow/block[2]/block[23]/@ipda"/>
+    <eval expected="(solid,#008000,6000,collapse-inner)" xpath="//flow/block[2]/block[21]/@border-start"/>
+    <eval expected="97500" xpath="//flow/block[2]/block[22]/@ipd"/>
+    <eval expected="102500" xpath="//flow/block[2]/block[22]/@ipda"/>
+    <eval expected="41300" xpath="//flow/block[2]/block[22]/@bpd"/>
+    <eval expected="81300" xpath="//flow/block[2]/block[22]/@bpda"/>
+    <eval expected="300000" xpath="//flow/block[2]/block[22]/@left-offset"/>
+    <eval expected="115400" xpath="//flow/block[2]/block[22]/@top-offset"/>
+    <eval expected="(double,#008000,40000,collapse-inner)" xpath="//flow/block[2]/block[22]/@border-before"/>
+    <eval expected="(dashed,#008000,5000,collapse-outer)" xpath="//flow/block[2]/block[22]/@border-end"/>
+    <eval expected="70000" xpath="//flow/block[2]/block[23]/@ipd"/>
+    <eval expected="130000" xpath="//flow/block[2]/block[23]/@ipda"/>
     <eval expected="44400" xpath="//flow/block[2]/block[23]/@bpd"/>
     <eval expected="44400" xpath="//flow/block[2]/block[23]/@bpda"/>
-    <eval expected="300000" xpath="//flow/block[2]/block[23]/@left-offset"/>
+    <eval expected="230000" xpath="//flow/block[2]/block[23]/@left-offset"/>
     <eval expected="196700" xpath="//flow/block[2]/block[23]/@top-offset"/>
-    <eval expected="(dashed,#008000,5000,collapse-outer)" xpath="//flow/block[2]/block[23]/@border-end"/>
-    <eval expected="97000" xpath="//flow/block[2]/block[24]/@ipd"/>
-    <eval expected="103000" xpath="//flow/block[2]/block[24]/@ipda"/>
-    <eval expected="49700" xpath="//flow/block[2]/block[24]/@bpd"/>
-    <eval expected="54700" xpath="//flow/block[2]/block[24]/@bpda"/>
-    <eval expected="203000" xpath="//flow/block[2]/block[24]/@left-offset"/>
-    <eval expected="241100" xpath="//flow/block[2]/block[24]/@top-offset"/>
-    <eval expected="(solid,#008000,5000,collapse-outer)" xpath="//flow/block[2]/block[24]/@border-after"/>
-    <eval expected="(solid,#008000,6000,collapse-inner)" xpath="//flow/block[2]/block[24]/@border-start"/>
-    <eval expected="97500" xpath="//flow/block[2]/block[25]/@ipd"/>
-    <eval expected="102500" xpath="//flow/block[2]/block[25]/@ipda"/>
+    <eval expected="(solid,#c0c0c0,60000,collapse-inner)" xpath="//flow/block[2]/block[23]/@border-start"/>
+    <eval expected="97500" xpath="//flow/block[2]/block[24]/@ipd"/>
+    <eval expected="102500" xpath="//flow/block[2]/block[24]/@ipda"/>
+    <eval expected="44400" xpath="//flow/block[2]/block[24]/@bpd"/>
+    <eval expected="44400" xpath="//flow/block[2]/block[24]/@bpda"/>
+    <eval expected="300000" xpath="//flow/block[2]/block[24]/@left-offset"/>
+    <eval expected="196700" xpath="//flow/block[2]/block[24]/@top-offset"/>
+    <eval expected="(dashed,#008000,5000,collapse-outer)" xpath="//flow/block[2]/block[24]/@border-end"/>
+    <eval expected="97000" xpath="//flow/block[2]/block[25]/@ipd"/>
+    <eval expected="103000" xpath="//flow/block[2]/block[25]/@ipda"/>
     <eval expected="49700" xpath="//flow/block[2]/block[25]/@bpd"/>
     <eval expected="54700" xpath="//flow/block[2]/block[25]/@bpda"/>
-    <eval expected="300000" xpath="//flow/block[2]/block[25]/@left-offset"/>
+    <eval expected="203000" xpath="//flow/block[2]/block[25]/@left-offset"/>
     <eval expected="241100" xpath="//flow/block[2]/block[25]/@top-offset"/>
     <eval expected="(solid,#008000,5000,collapse-outer)" xpath="//flow/block[2]/block[25]/@border-after"/>
-    <eval expected="(dashed,#008000,5000,collapse-outer)" xpath="//flow/block[2]/block[25]/@border-end"/>
-    <eval expected="167500" xpath="//flow/block[2]/block[26]/@ipd"/>
-    <eval expected="167500" xpath="//flow/block[2]/block[26]/@ipda"/>
-    <eval expected="135400" xpath="//flow/block[2]/block[26]/@bpd"/>
-    <eval expected="135400" xpath="//flow/block[2]/block[26]/@bpda"/>
-    <eval expected="230000" xpath="//flow/block[2]/block[26]/@left-offset"/>
-    <eval expected="155400" xpath="//flow/block[2]/block[26]/@top-offset"/>
+    <eval expected="(solid,#008000,6000,collapse-inner)" xpath="//flow/block[2]/block[25]/@border-start"/>
+    <eval expected="97500" xpath="//flow/block[2]/block[26]/@ipd"/>
+    <eval expected="102500" xpath="//flow/block[2]/block[26]/@ipda"/>
+    <eval expected="49700" xpath="//flow/block[2]/block[26]/@bpd"/>
+    <eval expected="54700" xpath="//flow/block[2]/block[26]/@bpda"/>
+    <eval expected="300000" xpath="//flow/block[2]/block[26]/@left-offset"/>
+    <eval expected="241100" xpath="//flow/block[2]/block[26]/@top-offset"/>
+    <eval expected="(solid,#008000,5000,collapse-outer)" xpath="//flow/block[2]/block[26]/@border-after"/>
+    <eval expected="(dashed,#008000,5000,collapse-outer)" xpath="//flow/block[2]/block[26]/@border-end"/>
+    <eval expected="167500" xpath="//flow/block[2]/block[27]/@ipd"/>
+    <eval expected="167500" xpath="//flow/block[2]/block[27]/@ipda"/>
+    <eval expected="135400" xpath="//flow/block[2]/block[27]/@bpd"/>
+    <eval expected="135400" xpath="//flow/block[2]/block[27]/@bpda"/>
+    <eval expected="230000" xpath="//flow/block[2]/block[27]/@left-offset"/>
+    <eval expected="155400" xpath="//flow/block[2]/block[27]/@top-offset"/>
 
     <!-- table 2 -->
     <eval expected="199300" xpath="//flow/block[4]/@bpd"/>



---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org