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 vh...@apache.org on 2010/06/14 19:01:15 UTC

svn commit: r954554 - in /xmlgraphics/fop/branches/Temp_TrueTypeInPostScript: ./ lib/ src/documentation/content/xdocs/trunk/ src/java/org/apache/fop/afp/ src/java/org/apache/fop/afp/modca/ src/java/org/apache/fop/pdf/ src/java/org/apache/fop/render/afp...

Author: vhennebert
Date: Mon Jun 14 17:01:14 2010
New Revision: 954554

URL: http://svn.apache.org/viewvc?rev=954554&view=rev
Log:
Merged changes from Trunk up to revision 954512

Added:
    xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/awt/viewer/PageChangeEvent.java
      - copied unchanged from r954552, xmlgraphics/fop/trunk/src/java/org/apache/fop/render/awt/viewer/PageChangeEvent.java
    xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/awt/viewer/PageChangeListener.java
      - copied unchanged from r954552, xmlgraphics/fop/trunk/src/java/org/apache/fop/render/awt/viewer/PageChangeListener.java
Modified:
    xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/   (props changed)
    xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/lib/xmlgraphics-commons-1.4svn.jar
    xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/documentation/content/xdocs/trunk/output.xml
    xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/AFPGraphics2D.java
    xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/AFPPaintingState.java
    xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/GraphicsDataDescriptor.java
    xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/GraphicsObject.java
    xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/pdf/PDFColor.java
    xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/pdf/PDFNumber.java
    xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/afp/AFPCustomizable.java
    xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/afp/AFPDocumentHandler.java
    xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/afp/AFPImageHandlerGraphics2D.java
    xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/afp/AFPImageHandlerRenderedImage.java
    xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/afp/AFPRenderer.java
    xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/afp/AFPRendererConfigurator.java
    xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/awt/viewer/PreviewDialog.java
    xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/awt/viewer/PreviewPanel.java
    xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/svg/PDFGraphics2D.java
    xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/util/ColorUtil.java
    xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/util/bitmap/BitmapImageUtil.java
    xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/status.xml
    xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/test/java/org/apache/fop/traits/BorderPropsTestCase.java
    xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/test/java/org/apache/fop/util/ColorUtilTestCase.java

Propchange: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Jun 14 17:01:14 2010
@@ -1,2 +1,3 @@
 /xmlgraphics/fop/branches/Temp_AreaTreeNewDesign:603620-746655
 /xmlgraphics/fop/branches/fop-0_95:684572,688085,688696
+/xmlgraphics/fop/trunk:949179-954552

Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/lib/xmlgraphics-commons-1.4svn.jar
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/lib/xmlgraphics-commons-1.4svn.jar?rev=954554&r1=954553&r2=954554&view=diff
==============================================================================
Binary files - no diff available.

Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/documentation/content/xdocs/trunk/output.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/documentation/content/xdocs/trunk/output.xml?rev=954554&r1=954553&r2=954554&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/documentation/content/xdocs/trunk/output.xml (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/documentation/content/xdocs/trunk/output.xml Mon Jun 14 17:01:14 2010
@@ -531,9 +531,10 @@ out = proc.getOutputStream();]]></source
         latest features. We're trying to make AFP output work in as many environments as possible.
         However, to make AFP output work on older environments it is recommended to set to
         configuration to 1 bit per pixel (see below on how to do this). In this case, all images
-        are converted to bi-level images using IOCA function set 10 (FS10). If a higher number of
-        bits per pixel is configured, FOP has to switch to at least FS11 which may not work
-        everywhere.
+        are converted to bi-level images using IOCA function set 10 (FS10) and are enclosed in
+        page-segments since some implementation cannot deal with IOCA objects directly.
+        If a higher number of bits per pixel is configured, FOP has to switch to at least FS11
+        which may not work everywhere.
       </p>
     </section>
     <section id="afp-configuration">
@@ -724,8 +725,20 @@ Note that the value of the encoding attr
         colors. This will only have an effect if the color mode is set to "color". Example:
       </p>
       <source><![CDATA[
-      <images mode="color" cmyk="true"/>
-]]></source>
+      <images mode="color" cmyk="true"/>]]></source>
+        <p>
+          When the color mode is set to 1 bit (bi-level), the "dithering-quality" attribute can
+          be used to select the level of quality to use when converting images to bi-level images.
+          Valid values for this attribute are floating point numbers from 0.0 (fastest) to
+          1.0 (best), or special values: "minimum" (=0.0), "maximum" (1.0),
+          "medium" (0.5, the default). For the higher settings to work as expected, JAI needs to
+          be present in the classpath. If JAI is present, 0.0 results in a minimal darkness-level
+          switching between white and black. 0.5 does bayer-based dithering and 1.0 will use
+          error-diffusion dithering. The higher the value, the higher the quality and the slower
+          the processing of the images.
+        </p>
+        <source><![CDATA[
+      <images mode="b+w" bits-per-pixel="1" dithering-quality="maximum"/>]]></source>
       </section>
       <section id="afp-shading-config">
         <title>Shading</title>

Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/AFPGraphics2D.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/AFPGraphics2D.java?rev=954554&r1=954553&r2=954554&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/AFPGraphics2D.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/AFPGraphics2D.java Mon Jun 14 17:01:14 2010
@@ -45,7 +45,6 @@ import java.awt.image.RenderedImage;
 import java.awt.image.renderable.RenderableImage;
 import java.io.IOException;
 
-import org.apache.commons.io.output.ByteArrayOutputStream;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -56,8 +55,6 @@ import org.apache.xmlgraphics.java2d.Abs
 import org.apache.xmlgraphics.java2d.GraphicContext;
 import org.apache.xmlgraphics.java2d.StrokingTextHandler;
 import org.apache.xmlgraphics.java2d.TextHandler;
-import org.apache.xmlgraphics.ps.ImageEncodingHelper;
-import org.apache.xmlgraphics.util.MimeConstants;
 import org.apache.xmlgraphics.util.UnitConv;
 
 import org.apache.fop.afp.goca.GraphicsSetLineType;
@@ -65,6 +62,8 @@ import org.apache.fop.afp.modca.Graphics
 import org.apache.fop.afp.svg.AFPGraphicsConfiguration;
 import org.apache.fop.afp.util.CubicBezierApproximator;
 import org.apache.fop.fonts.FontInfo;
+import org.apache.fop.render.afp.AFPImageHandlerRenderedImage;
+import org.apache.fop.render.afp.AFPRenderingContext;
 import org.apache.fop.svg.NativeImageHandler;
 
 /**
@@ -559,68 +558,6 @@ public class AFPGraphics2D extends Abstr
                                  BufferedImage.TYPE_INT_ARGB);
     }
 
-    private AFPImageObjectInfo createImageObjectInfo(
-            RenderedImage img, int x, int y, int width, int height) throws IOException {
-        ImageInfo imageInfo = new ImageInfo(null, "image/unknown");
-        ImageSize size = new ImageSize(img.getWidth(), img.getHeight(), 72);
-        imageInfo.setSize(size);
-
-        ImageRendered imageRendered = new ImageRendered(imageInfo, img, null);
-        RenderedImage renderedImage = imageRendered.getRenderedImage();
-
-        // create image object info
-        AFPImageObjectInfo imageObjectInfo = new AFPImageObjectInfo();
-
-        imageObjectInfo.setMimeType(MimeConstants.MIME_AFP_IOCA_FS45);
-
-        int bitsPerPixel = paintingState.getBitsPerPixel();
-        imageObjectInfo.setBitsPerPixel(bitsPerPixel);
-
-        imageObjectInfo.setResourceInfo(resourceInfo);
-
-        int dataHeight = renderedImage.getHeight();
-        imageObjectInfo.setDataHeight(dataHeight);
-
-        int dataWidth = renderedImage.getWidth();
-        imageObjectInfo.setDataWidth(dataWidth);
-
-        boolean colorImages = paintingState.isColorImages();
-        imageObjectInfo.setColor(colorImages);
-
-        ByteArrayOutputStream boas = new ByteArrayOutputStream();
-        ImageEncodingHelper.encodeRenderedImageAsRGB(renderedImage, boas);
-        byte[] imageData = boas.toByteArray();
-
-        // convert to grayscale
-        if (!colorImages) {
-            boas.reset();
-            imageObjectInfo.setBitsPerPixel(bitsPerPixel);
-            ImageEncodingHelper.encodeRGBAsGrayScale(
-                  imageData, dataWidth, dataHeight, bitsPerPixel, boas);
-            imageData = boas.toByteArray();
-        }
-        imageObjectInfo.setData(imageData);
-
-        if (imageInfo != null) {
-            imageObjectInfo.setUri(imageInfo.getOriginalURI());
-        }
-
-        // create object area info
-        AFPObjectAreaInfo objectAreaInfo = new AFPObjectAreaInfo();
-        objectAreaInfo.setX(x);
-        objectAreaInfo.setY(y);
-        objectAreaInfo.setWidth(width);
-        objectAreaInfo.setHeight(height);
-
-        int resolution = paintingState.getResolution();
-        objectAreaInfo.setWidthRes(resolution);
-        objectAreaInfo.setHeightRes(resolution);
-
-        imageObjectInfo.setObjectAreaInfo(objectAreaInfo);
-
-        return imageObjectInfo;
-    }
-
     /**
      * Draws an AWT image into a BufferedImage using an AWT Graphics2D implementation
      *
@@ -660,30 +597,13 @@ public class AFPGraphics2D extends Abstr
     /** {@inheritDoc} */
     public boolean drawImage(Image img, int x, int y, int width, int height,
             ImageObserver observer) {
-
         // draw with AWT Graphics2D
         Dimension imageSize = new Dimension(width, height);
         BufferedImage bufferedImage = buildBufferedImage(imageSize);
 
         boolean drawn = drawBufferedImage(img, bufferedImage, width, height, observer);
         if (drawn) {
-            AffineTransform at = gc.getTransform();
-            float[] srcPts = new float[] {x, y};
-            float[] dstPts = new float[srcPts.length];
-            at.transform(srcPts, 0, dstPts, 0, 1);
-            x = Math.round(dstPts[X]);
-            y = Math.round(dstPts[Y]);
-            try {
-                // get image object info
-                AFPImageObjectInfo imageObjectInfo
-                    = createImageObjectInfo(bufferedImage, x, y, width, height);
-
-                // create image resource
-                resourceManager.createObject(imageObjectInfo);
-                return true;
-            } catch (IOException ioe) {
-                handleIOException(ioe);
-            }
+            drawRenderedImage(bufferedImage, new AffineTransform());
         }
         return false;
     }
@@ -693,20 +613,33 @@ public class AFPGraphics2D extends Abstr
         int imgWidth = img.getWidth();
         int imgHeight = img.getHeight();
 
-        AffineTransform at = paintingState.getData().getTransform();
         AffineTransform gat = gc.getTransform();
         int graphicsObjectHeight
             = graphicsObj.getObjectEnvironmentGroup().getObjectAreaDescriptor().getHeight();
-        int x = (int)Math.round(at.getTranslateX() + gat.getTranslateX());
-        int y = (int)Math.round(at.getTranslateY() - (gat.getTranslateY() - graphicsObjectHeight));
-        int width = (int)Math.round(imgWidth * gat.getScaleX());
-        int height = (int)Math.round(imgHeight * -gat.getScaleY());
+
+        double toMillipointFactor = UnitConv.IN2PT * 1000 / (double)paintingState.getResolution();
+        double x = gat.getTranslateX();
+        double y = -(gat.getTranslateY() - graphicsObjectHeight);
+        x = toMillipointFactor * x;
+        y = toMillipointFactor * y;
+        double w = toMillipointFactor * imgWidth * gat.getScaleX();
+        double h = toMillipointFactor * imgHeight * -gat.getScaleY();
+
+        AFPImageHandlerRenderedImage handler = new AFPImageHandlerRenderedImage();
+        ImageInfo imageInfo = new ImageInfo(null, null);
+        imageInfo.setSize(new ImageSize(
+                img.getWidth(), img.getHeight(), paintingState.getResolution()));
+        imageInfo.getSize().calcSizeFromPixels();
+        ImageRendered red = new ImageRendered(imageInfo, img, null);
+        Rectangle targetPos = new Rectangle(
+                (int)Math.round(x),
+                (int)Math.round(y),
+                (int)Math.round(w),
+                (int)Math.round(h));
+        AFPRenderingContext context = new AFPRenderingContext(null,
+                resourceManager, paintingState, fontInfo, null);
         try {
-            // get image object info
-            AFPImageObjectInfo imageObjectInfo
-                = createImageObjectInfo(img, x, y, width, height);
-            // create image resource
-            resourceManager.createObject(imageObjectInfo);
+            handler.handleImage(context, red, targetPos);
         } catch (IOException ioe) {
             handleIOException(ioe);
         }

Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/AFPPaintingState.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/AFPPaintingState.java?rev=954554&r1=954553&r2=954554&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/AFPPaintingState.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/AFPPaintingState.java Mon Jun 14 17:01:14 2010
@@ -24,9 +24,9 @@ import java.awt.Point;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
-import org.apache.xmlgraphics.java2d.ColorConverter;
-import org.apache.xmlgraphics.java2d.DefaultColorConverter;
-import org.apache.xmlgraphics.java2d.GrayScaleColorConverter;
+import org.apache.xmlgraphics.java2d.color.ColorConverter;
+import org.apache.xmlgraphics.java2d.color.DefaultColorConverter;
+import org.apache.xmlgraphics.java2d.color.GrayScaleColorConverter;
 
 import org.apache.fop.afp.fonts.AFPPageFonts;
 import org.apache.fop.util.AbstractPaintingState;
@@ -51,6 +51,9 @@ public class AFPPaintingState extends or
     /** color image support */
     private boolean colorImages = false;
 
+    /** dithering quality setting (0.0f..1.0f) */
+    private float ditheringQuality;
+
     /** color image handler */
     private ColorConverter colorConverter = GrayScaleColorConverter.getInstance();
 
@@ -234,6 +237,25 @@ public class AFPPaintingState extends or
     }
 
     /**
+     * Gets the dithering quality setting to use when converting images to monochrome images.
+     * @return the dithering quality (a value between 0.0f and 1.0f)
+     */
+    public float getDitheringQuality() {
+        return this.ditheringQuality;
+    }
+
+    /**
+     * Sets the dithering quality setting to use when converting images to monochrome images.
+     * @param quality Defines the desired quality level for the conversion.
+     *                  Valid values: a value between 0.0f (fastest) and 1.0f (best)
+     */
+    public void setDitheringQuality(float quality) {
+        quality = Math.max(quality, 0.0f);
+        quality = Math.min(quality, 1.0f);
+        this.ditheringQuality = quality;
+    }
+
+    /**
      * Sets the output/device resolution
      *
      * @param resolution

Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/GraphicsDataDescriptor.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/GraphicsDataDescriptor.java?rev=954554&r1=954553&r2=954554&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/GraphicsDataDescriptor.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/GraphicsDataDescriptor.java Mon Jun 14 17:01:14 2010
@@ -104,8 +104,8 @@ public class GraphicsDataDescriptor exte
         return data;
     }
 
-    private static final int ABS = 2;
-    private static final int IMGRES = 8;
+    private static final int ABS = 64;
+    private static final int IMGRES = 16;
 
     /**
      * Returns the window specification data

Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/GraphicsObject.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/GraphicsObject.java?rev=954554&r1=954553&r2=954554&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/GraphicsObject.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/afp/modca/GraphicsObject.java Mon Jun 14 17:01:14 2010
@@ -25,7 +25,7 @@ import java.io.OutputStream;
 import java.util.Iterator;
 import java.util.List;
 
-import org.apache.xmlgraphics.java2d.ColorConverter;
+import org.apache.xmlgraphics.java2d.color.ColorConverter;
 
 import org.apache.fop.afp.AFPDataObjectInfo;
 import org.apache.fop.afp.AFPObjectAreaInfo;

Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/pdf/PDFColor.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/pdf/PDFColor.java?rev=954554&r1=954553&r2=954554&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/pdf/PDFColor.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/pdf/PDFColor.java Mon Jun 14 17:01:14 2010
@@ -26,8 +26,8 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.xmlgraphics.java2d.CMYKColorSpace;
-import org.apache.xmlgraphics.java2d.ColorExt;
+import org.apache.xmlgraphics.java2d.color.CMYKColorSpace;
+import org.apache.xmlgraphics.java2d.color.ColorExt;
 
 /**
  * PDF Color object.

Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/pdf/PDFNumber.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/pdf/PDFNumber.java?rev=954554&r1=954553&r2=954554&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/pdf/PDFNumber.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/pdf/PDFNumber.java Mon Jun 14 17:01:14 2010
@@ -88,7 +88,7 @@ public class PDFNumber extends PDFObject
         if (hasObjectNumber()) {
             sb.append(getObjectID());
         }
-        sb.append(getNumber().toString());
+        sb.append(doubleOut(getNumber().doubleValue(), 10));
         if (hasObjectNumber()) {
             sb.append("\nendobj\n");
         }

Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/afp/AFPCustomizable.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/afp/AFPCustomizable.java?rev=954554&r1=954553&r2=954554&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/afp/AFPCustomizable.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/afp/AFPCustomizable.java Mon Jun 14 17:01:14 2010
@@ -65,6 +65,13 @@ public interface AFPCustomizable {
     void setShadingMode(AFPShadingMode shadingMode);
 
     /**
+     * Sets the dithering quality setting to use when converting images to monochrome images.
+     * @param quality Defines the desired quality level for the conversion.
+     *                  Valid values: a value between 0.0f (fastest) and 1.0f (best)
+     */
+    void setDitheringQuality(float quality);
+
+    /**
      * Sets the output/device resolution
      *
      * @param resolution

Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/afp/AFPDocumentHandler.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/afp/AFPDocumentHandler.java?rev=954554&r1=954553&r2=954554&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/afp/AFPDocumentHandler.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/afp/AFPDocumentHandler.java Mon Jun 14 17:01:14 2010
@@ -46,8 +46,8 @@ import org.apache.fop.fonts.FontManager;
 import org.apache.fop.render.afp.extensions.AFPElementMapping;
 import org.apache.fop.render.afp.extensions.AFPIncludeFormMap;
 import org.apache.fop.render.afp.extensions.AFPInvokeMediumMap;
-import org.apache.fop.render.afp.extensions.AFPPageSetup;
 import org.apache.fop.render.afp.extensions.AFPPageOverlay;
+import org.apache.fop.render.afp.extensions.AFPPageSetup;
 import org.apache.fop.render.intermediate.AbstractBinaryWritingIFDocumentHandler;
 import org.apache.fop.render.intermediate.IFDocumentHandler;
 import org.apache.fop.render.intermediate.IFDocumentHandlerConfigurator;
@@ -362,6 +362,11 @@ public class AFPDocumentHandler extends 
     }
 
     /** {@inheritDoc} */
+    public void setDitheringQuality(float quality) {
+        this.paintingState.setDitheringQuality(quality);
+    }
+
+    /** {@inheritDoc} */
     public void setShadingMode(AFPShadingMode shadingMode) {
         this.shadingMode = shadingMode;
     }

Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/afp/AFPImageHandlerGraphics2D.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/afp/AFPImageHandlerGraphics2D.java?rev=954554&r1=954553&r2=954554&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/afp/AFPImageHandlerGraphics2D.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/afp/AFPImageHandlerGraphics2D.java Mon Jun 14 17:01:14 2010
@@ -20,6 +20,7 @@
 package org.apache.fop.render.afp;
 
 import java.awt.Rectangle;
+import java.awt.geom.AffineTransform;
 import java.io.IOException;
 
 import org.apache.xmlgraphics.image.loader.Image;
@@ -136,6 +137,12 @@ public class AFPImageHandlerGraphics2D e
 
         setDefaultResourceLevel(graphicsObjectInfo, afpContext.getResourceManager());
 
+        AFPPaintingState paintingState = afpContext.getPaintingState();
+        paintingState.save(); // save
+        AffineTransform placement = new AffineTransform();
+        placement.translate(pos.x, pos.y);
+        paintingState.concatenate(placement);
+
         // Image content
         ImageGraphics2D imageG2D = (ImageGraphics2D)image;
         boolean textAsShapes = false; //TODO Make configurable
@@ -152,6 +159,8 @@ public class AFPImageHandlerGraphics2D e
 
         // Create image
         afpContext.getResourceManager().createObject(graphicsObjectInfo);
+
+        paintingState.restore(); // resume
     }
 
     /** {@inheritDoc} */

Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/afp/AFPImageHandlerRenderedImage.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/afp/AFPImageHandlerRenderedImage.java?rev=954554&r1=954553&r2=954554&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/afp/AFPImageHandlerRenderedImage.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/afp/AFPImageHandlerRenderedImage.java Mon Jun 14 17:01:14 2010
@@ -101,6 +101,7 @@ public class AFPImageHandlerRenderedImag
                 maxPixelSize *= 3; //RGB is maximum
             }
         }
+        float ditheringQuality = paintingState.getDitheringQuality();
         RenderedImage renderedImage = imageRendered.getRenderedImage();
 
         ImageInfo imageInfo = imageRendered.getInfo();
@@ -130,9 +131,13 @@ public class AFPImageHandlerRenderedImag
                     log.debug("Resample from " + intrinsicSize.getDimensionPx()
                             + " to " + resampledDim);
                 }
-                renderedImage = BitmapImageUtil.convertToMonochrome(renderedImage, resampledDim);
+                renderedImage = BitmapImageUtil.convertToMonochrome(renderedImage,
+                        resampledDim, ditheringQuality);
                 effIntrinsicSize = new ImageSize(
                         resampledDim.width, resampledDim.height, resolution);
+            } else if (ditheringQuality >= 0.5f) {
+                renderedImage = BitmapImageUtil.convertToMonochrome(renderedImage,
+                        intrinsicSize.getDimensionPx(), ditheringQuality);
             }
         }
 
@@ -157,7 +162,6 @@ public class AFPImageHandlerRenderedImag
         if (cm.hasAlpha()) {
             pixelSize -= 8;
         }
-        //TODO Add support for CMYK images
 
         byte[] imageData = null;
         ByteArrayOutputStream baos = new ByteArrayOutputStream();

Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/afp/AFPRenderer.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/afp/AFPRenderer.java?rev=954554&r1=954553&r2=954554&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/afp/AFPRenderer.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/afp/AFPRenderer.java Mon Jun 14 17:01:14 2010
@@ -839,6 +839,11 @@ public class AFPRenderer extends Abstrac
     }
 
     /** {@inheritDoc} */
+    public void setDitheringQuality(float quality) {
+        this.paintingState.setDitheringQuality(quality);
+    }
+
+    /** {@inheritDoc} */
     public void setShadingMode(AFPShadingMode shadingMode) {
         this.shadingMode = shadingMode;
     }

Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/afp/AFPRendererConfigurator.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/afp/AFPRendererConfigurator.java?rev=954554&r1=954553&r2=954554&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/afp/AFPRendererConfigurator.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/afp/AFPRendererConfigurator.java Mon Jun 14 17:01:14 2010
@@ -390,6 +390,21 @@ public class AFPRendererConfigurator ext
             customizable.setBitsPerPixel(bitsPerPixel);
         }
 
+        String dithering = imagesCfg.getAttribute("dithering-quality", "medium");
+        float dq = 0.5f;
+        if (dithering.startsWith("min")) {
+            dq = 0.0f;
+        } else if (dithering.startsWith("max")) {
+            dq = 1.0f;
+        } else {
+            try {
+                dq = Float.parseFloat(dithering);
+            } catch (NumberFormatException nfe) {
+                //ignore and leave the default above
+            }
+        }
+        customizable.setDitheringQuality(dq);
+
         // native image support
         boolean nativeImageSupport = imagesCfg.getAttributeAsBoolean("native", false);
         customizable.setNativeImagesSupported(nativeImageSupport);

Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/awt/viewer/PreviewDialog.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/awt/viewer/PreviewDialog.java?rev=954554&r1=954553&r2=954554&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/awt/viewer/PreviewDialog.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/awt/viewer/PreviewDialog.java Mon Jun 14 17:01:14 2010
@@ -171,6 +171,11 @@ public class PreviewDialog extends JFram
         //Page view stuff
         previewPanel = new PreviewPanel(foUserAgent, renderable, renderer);
         getContentPane().add(previewPanel, BorderLayout.CENTER);
+        previewPanel.addPageChangeListener(new PageChangeListener() {
+            public void pageChanged(PageChangeEvent pce) {
+              new ShowInfo().run();
+            }
+        });
 
         // Keyboard shortcuts - pgup/pgdn
         InputMap im = previewPanel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
@@ -260,6 +265,7 @@ public class PreviewDialog extends JFram
      * Creates and initialize the AWT Viewer main window.
      * @param foUserAgent the FO user agent
      * @param renderable the target for the rendering
+     * @param asMainWindow true if the window shall act as the main application window.
      * @return the newly initialized preview dialog
      */
     public static PreviewDialog createPreviewDialog(FOUserAgent foUserAgent,
@@ -530,12 +536,18 @@ public class PreviewDialog extends JFram
         goToPage(currentPage);
     }
 
-    /** Scales page image */
+    /**
+     * Scales page image.
+     * @param scaleFactor the scale factor
+     */
     public void setScale(double scaleFactor) {
         scale.setSelectedItem(percentFormat.format(scaleFactor) + "%");
         previewPanel.setScaleFactor(scaleFactor / 100d);
     }
 
+    /**
+     * Sets the scaling so the contents fit into the window.
+     */
     public void setScaleToFitWindow() {
         try {
             setScale(previewPanel.getScaleToFitWindow() * 100);
@@ -544,6 +556,9 @@ public class PreviewDialog extends JFram
         }
     }
 
+    /**
+     * Sets the scaling so the contents are spread over the whole width available.
+     */
     public void setScaleToFitWidth() {
         try {
             setScale(previewPanel.getScaleToFitWidth() * 100);
@@ -569,7 +584,7 @@ public class PreviewDialog extends JFram
         //Restore originally configured target resolution
         float saveResolution = foUserAgent.getTargetResolution();
         foUserAgent.setTargetResolution(this.configuredTargetResolution);
-        
+
         PrinterJob pj = PrinterJob.getPrinterJob();
         pj.setPageable(renderer);
         if (!showDialog || pj.printDialog()) {
@@ -579,7 +594,7 @@ public class PreviewDialog extends JFram
                 e.printStackTrace();
             }
         }
-        
+
         foUserAgent.setTargetResolution(saveResolution);
     }
 

Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/awt/viewer/PreviewPanel.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/awt/viewer/PreviewPanel.java?rev=954554&r1=954553&r2=954554&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/awt/viewer/PreviewPanel.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/render/awt/viewer/PreviewPanel.java Mon Jun 14 17:01:14 2010
@@ -19,11 +19,14 @@
 
 package org.apache.fop.render.awt.viewer;
 
+import java.awt.Adjustable;
 import java.awt.Color;
 import java.awt.Dimension;
 import java.awt.GridLayout;
 import java.awt.Point;
 import java.awt.Toolkit;
+import java.awt.event.AdjustmentEvent;
+import java.awt.event.AdjustmentListener;
 import java.awt.event.MouseEvent;
 import java.awt.event.MouseListener;
 import java.awt.event.MouseMotionListener;
@@ -166,6 +169,8 @@ public class PreviewPanel extends JPanel
         previewArea = new JScrollPane(gridPanel);
         previewArea.getViewport().setBackground(Color.gray);
 
+        previewArea.getVerticalScrollBar().addAdjustmentListener(new PageNumberListener());
+
         // FIXME should add scroll wheel support here at some point.
         scroller = new ViewportScroller(previewArea.getViewport());
         previewArea.addMouseListener(scroller);
@@ -188,6 +193,7 @@ public class PreviewPanel extends JPanel
      * @param number the page number
      */
     public void setPage(int number) {
+        int oldPage = currentPage;
         if (displayMode == CONTINUOUS || displayMode == CONT_FACING) {
             currentPage = number;
             gridPanel.scrollRectToVisible(pagePanels[currentPage].getBounds());
@@ -196,6 +202,7 @@ public class PreviewPanel extends JPanel
             firstPage = currentPage;
         }
         showPage();
+        firePageChange(oldPage, currentPage);
     }
 
     /**
@@ -237,6 +244,42 @@ public class PreviewPanel extends JPanel
     }
 
     /**
+     * Add a listener to receive notification of page change events. Events will
+     * be fired whenever the currentPage value is changed. The values recorded
+     * are 0-based.
+     * @param l the page change listener to add
+     */
+    public void addPageChangeListener(PageChangeListener l) {
+        listenerList.add(PageChangeListener.class, l);
+    }
+
+    /**
+     * Removes a page change listener.
+     * @param l the page change listener to remove
+     */
+    public void removePageChangeListener(PageChangeListener l)  {
+        listenerList.remove(PageChangeListener.class, l);
+    }
+
+    /**
+     * Notify all registered listeners of a page change event.
+     * @param oldPage the old page
+     * @param newPage the new page
+     */
+    protected void firePageChange(int oldPage, int newPage) {
+        Object[] listeners = listenerList.getListenerList();
+        PageChangeEvent e = null;
+        for (int i = listeners.length - 2; i >= 0; i -= 2) {
+            if (listeners[i] == PageChangeListener.class) {
+                if (e == null) {
+                    e = new PageChangeEvent(this, newPage, oldPage);
+                }
+                ((PageChangeListener)listeners[i + 1]).pageChanged(e);
+            }
+        }
+    }
+
+    /**
      * Allows any mouse drag on the page area to scroll the display window.
      */
     private class ViewportScroller implements MouseListener, MouseMotionListener {
@@ -352,6 +395,23 @@ public class PreviewPanel extends JPanel
         }
     }
 
+    private class PageNumberListener implements AdjustmentListener {
+        public void adjustmentValueChanged(AdjustmentEvent e) {
+            if (displayMode == PreviewPanel.CONTINUOUS || displayMode == PreviewPanel.CONT_FACING) {
+                Adjustable a = e.getAdjustable();
+                int value = +e.getValue();
+                int min = a.getMinimum();
+                int max = a.getMaximum();
+                int page = ( (renderer.getNumberOfPages() * value) / (max - min) );
+                if (page != currentPage) {
+                    int oldPage = currentPage;
+                    currentPage = page;
+                    firePageChange(oldPage, currentPage);
+                }
+            }
+        }
+    }
+
     /**
      * Scales page image
      * @param scale [0;1]

Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/svg/PDFGraphics2D.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/svg/PDFGraphics2D.java?rev=954554&r1=954553&r2=954554&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/svg/PDFGraphics2D.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/svg/PDFGraphics2D.java Mon Jun 14 17:01:14 2010
@@ -66,8 +66,8 @@ import org.apache.xmlgraphics.image.load
 import org.apache.xmlgraphics.image.loader.impl.ImageRawJPEG;
 import org.apache.xmlgraphics.image.loader.impl.ImageRendered;
 import org.apache.xmlgraphics.java2d.AbstractGraphics2D;
-import org.apache.xmlgraphics.java2d.ColorExt;
 import org.apache.xmlgraphics.java2d.GraphicContext;
+import org.apache.xmlgraphics.java2d.color.ColorExt;
 
 import org.apache.fop.fonts.Font;
 import org.apache.fop.fonts.FontInfo;
@@ -762,7 +762,7 @@ public class PDFGraphics2D extends Abstr
             //currentStream.write(currentColour.getColorSpaceOut(fill));
         } else {
             throw new UnsupportedOperationException(
-                    "Color Space not supported by PDFGraphics2D");
+                    "Color Space not supported by PDFGraphics2D: " + c.getColorSpace());
         }
     }
 

Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/util/ColorUtil.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/util/ColorUtil.java?rev=954554&r1=954553&r2=954554&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/util/ColorUtil.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/util/ColorUtil.java Mon Jun 14 17:01:14 2010
@@ -27,8 +27,8 @@ import java.util.Map;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
-import org.apache.xmlgraphics.java2d.CMYKColorSpace;
-import org.apache.xmlgraphics.java2d.ColorExt;
+import org.apache.xmlgraphics.java2d.color.CMYKColorSpace;
+import org.apache.xmlgraphics.java2d.color.ColorExt;
 
 import org.apache.fop.apps.FOUserAgent;
 import org.apache.fop.fo.expr.PropertyException;
@@ -682,7 +682,7 @@ public final class ColorUtil {
      * @return the modified color
      */
     public static Color lightenColor(Color col, float factor) {
-        return org.apache.xmlgraphics.java2d.ColorUtil.lightenColor(col, factor);
+        return org.apache.xmlgraphics.java2d.color.ColorUtil.lightenColor(col, factor);
     }
 
     /**
@@ -701,7 +701,7 @@ public final class ColorUtil {
      * @return true if it is a gray value
      */
     public static boolean isGray(Color col) {
-        return org.apache.xmlgraphics.java2d.ColorUtil.isGray(col);
+        return org.apache.xmlgraphics.java2d.color.ColorUtil.isGray(col);
     }
 
     /**
@@ -711,6 +711,6 @@ public final class ColorUtil {
      */
     public static Color toCMYKGrayColor(float black) {
 
-        return org.apache.xmlgraphics.java2d.ColorUtil.toCMYKGrayColor(black);
+        return org.apache.xmlgraphics.java2d.color.ColorUtil.toCMYKGrayColor(black);
     }
 }

Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/util/bitmap/BitmapImageUtil.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/util/bitmap/BitmapImageUtil.java?rev=954554&r1=954553&r2=954554&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/util/bitmap/BitmapImageUtil.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/src/java/org/apache/fop/util/bitmap/BitmapImageUtil.java Mon Jun 14 17:01:14 2010
@@ -135,6 +135,53 @@ public class BitmapImageUtil {
      */
     public static final BufferedImage convertToMonochrome(RenderedImage img,
             Dimension targetDimension) {
+        return toBufferedImage(convertToMonochrome(img, targetDimension, 0.0f));
+    }
+
+    /**
+     * Converts an image to a monochrome 1-bit image. Optionally, the image can be scaled.
+     * @param img the image to be converted
+     * @param targetDimension the new target dimensions or null if no scaling is necessary
+     * @param quality Defines the desired quality level for the conversion.
+     *                  Valid values: a value between 0.0f (fastest) and 1.0f (best)
+     * @return the monochrome image
+     */
+    public static final RenderedImage convertToMonochrome(RenderedImage img,
+            Dimension targetDimension, float quality) {
+        if (!isMonochromeImage(img)) {
+            if (quality >= 0.5f) {
+                BufferedImage bi;
+                Dimension orgDim = new Dimension(img.getWidth(), img.getHeight());
+                if (targetDimension != null && !orgDim.equals(targetDimension)) {
+                    //Scale only before dithering
+                    ColorModel cm = img.getColorModel();
+                    BufferedImage tgt = new BufferedImage(cm,
+                            cm.createCompatibleWritableRaster(
+                                    targetDimension.width, targetDimension.height),
+                            cm.isAlphaPremultiplied(), null);
+                    transferImage(img, tgt);
+                    bi = tgt;
+                } else {
+                    bi = toBufferedImage(img);
+                }
+                //Now convert to monochrome (dithering if available)
+                MonochromeBitmapConverter converter = createDefaultMonochromeBitmapConverter();
+                if (quality >= 0.8f) {
+                    //Activates error diffusion if JAI is available
+                    converter.setHint("quality", Boolean.TRUE.toString());
+                    //Need to convert to grayscale first since otherwise, there may be encoding
+                    //problems later with the images JAI can generate.
+                    bi = convertToGrayscale(bi, targetDimension);
+                }
+                try {
+                    return converter.convertToMonochrome(bi);
+                } catch (Exception e) {
+                    //Provide a fallback if exotic formats are encountered
+                    bi = convertToGrayscale(bi, targetDimension);
+                    return converter.convertToMonochrome(bi);
+                }
+            }
+        }
         return convertAndScaleImage(img, targetDimension, BufferedImage.TYPE_BYTE_BINARY);
     }
 

Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/status.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/status.xml?rev=954554&r1=954553&r2=954554&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/status.xml (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/status.xml Mon Jun 14 17:01:14 2010
@@ -59,6 +59,23 @@
     -->
     <release version="FOP Trunk" date="TBD">
       <action context="Renderers" dev="JM" type="fix">
+        AFP Output: Fixed positioning of Java2D-based images (when GOCA is enabled).
+      </action>
+      <action context="Renderers" dev="JM" type="add">
+        AFP Output: Added enhanced dithering functionality for images that are converted to
+        bi-level images.
+      </action>
+      <action context="Renderers" dev="JM" type="fix">
+        AFP Output: Fix for bitmap images inside an SVG or G2D graphic (printer errors) and
+        positioning fix for bitmaps from G2D graphics.
+      </action>
+      <action context="Renderers" dev="JM" type="fix" fixes-bug="42306" due-to="Richard Wheeldon">
+        Fix for AWT viewer to correctly track page numbers in continuous display mode.
+      </action>
+      <action context="Renderers" dev="JM" type="fix">
+        Bugfix for formatting of floating point numbers which could lead to invalid PDFs.
+      </action>
+      <action context="Renderers" dev="JM" type="fix">
         Added a save/restoreGraphicsState pair for the initial coordinate system in PDF output
         for easier post-processing.
       </action>

Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/test/java/org/apache/fop/traits/BorderPropsTestCase.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/test/java/org/apache/fop/traits/BorderPropsTestCase.java?rev=954554&r1=954553&r2=954554&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/test/java/org/apache/fop/traits/BorderPropsTestCase.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/test/java/org/apache/fop/traits/BorderPropsTestCase.java Mon Jun 14 17:01:14 2010
@@ -23,8 +23,8 @@ import java.awt.Color;
 
 import junit.framework.TestCase;
 
-import org.apache.xmlgraphics.java2d.CMYKColorSpace;
-import org.apache.xmlgraphics.java2d.ColorExt;
+import org.apache.xmlgraphics.java2d.color.CMYKColorSpace;
+import org.apache.xmlgraphics.java2d.color.ColorExt;
 
 import org.apache.fop.fo.Constants;
 import org.apache.fop.util.ColorUtil;

Modified: xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/test/java/org/apache/fop/util/ColorUtilTestCase.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/test/java/org/apache/fop/util/ColorUtilTestCase.java?rev=954554&r1=954553&r2=954554&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/test/java/org/apache/fop/util/ColorUtilTestCase.java (original)
+++ xmlgraphics/fop/branches/Temp_TrueTypeInPostScript/test/java/org/apache/fop/util/ColorUtilTestCase.java Mon Jun 14 17:01:14 2010
@@ -24,8 +24,8 @@ import java.awt.color.ColorSpace;
 
 import junit.framework.TestCase;
 
-import org.apache.xmlgraphics.java2d.CMYKColorSpace;
-import org.apache.xmlgraphics.java2d.ColorExt;
+import org.apache.xmlgraphics.java2d.color.CMYKColorSpace;
+import org.apache.xmlgraphics.java2d.color.ColorExt;
 
 import org.apache.fop.apps.FOUserAgent;
 import org.apache.fop.apps.FopFactory;



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