]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Re-enabled image loader testcases
authorMaximilian Berger <maxberger@apache.org>
Tue, 16 Sep 2008 08:56:12 +0000 (08:56 +0000)
committerMaximilian Berger <maxberger@apache.org>
Tue, 16 Sep 2008 08:56:12 +0000 (08:56 +0000)
Made sure SVG converters use SVG flavor (updated in commons)
Added new ImageLoaderTest which tests JPGs embedded in SVG

git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@695776 13f79535-47bb-0310-9956-ffa450edef68

lib/xmlgraphics-commons-1.4svn.jar
src/java/org/apache/fop/image/loader/batik/ImageConverterSVG2G2D.java
src/java/org/apache/fop/image/loader/batik/ImageLoaderFactorySVG.java
src/java/org/apache/fop/image/loader/batik/ImageLoaderSVG.java
test/java/org/apache/fop/StandardTestSuite.java
test/java/org/apache/fop/image/loader/batik/ImageLoaderTestCase.java

index 6d8181de890296759488e9d3ba8e28652f749eb5..7328fa62b1fb8ae34ff707bf64c0bf4dcfce715b 100644 (file)
Binary files a/lib/xmlgraphics-commons-1.4svn.jar and b/lib/xmlgraphics-commons-1.4svn.jar differ
index 6c43e4878bab9ae6259154fdec327f638817d89e..9ea333af0055b266919adbbcc2a4c049a64ea136 100644 (file)
@@ -32,19 +32,18 @@ import org.apache.batik.dom.svg.SVGDOMImplementation;
 import org.apache.batik.gvt.GraphicsNode;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-
+import org.apache.fop.svg.SimpleSVGUserAgent;
 import org.apache.xmlgraphics.image.loader.Image;
 import org.apache.xmlgraphics.image.loader.ImageException;
 import org.apache.xmlgraphics.image.loader.ImageFlavor;
 import org.apache.xmlgraphics.image.loader.ImageProcessingHints;
+import org.apache.xmlgraphics.image.loader.XMLNamespaceEnabledImageFlavor;
 import org.apache.xmlgraphics.image.loader.impl.AbstractImageConverter;
 import org.apache.xmlgraphics.image.loader.impl.ImageGraphics2D;
 import org.apache.xmlgraphics.image.loader.impl.ImageXMLDOM;
 import org.apache.xmlgraphics.java2d.Graphics2DImagePainter;
 import org.apache.xmlgraphics.util.UnitConv;
 
-import org.apache.fop.svg.SimpleSVGUserAgent;
-
 /**
  * This ImageConverter converts SVG images to Java2D.
  * <p>
@@ -132,7 +131,7 @@ public class ImageConverterSVG2G2D extends AbstractImageConverter {
 
     /** {@inheritDoc} */
     public ImageFlavor getSourceFlavor() {
-        return ImageFlavor.XML_DOM;
+        return XMLNamespaceEnabledImageFlavor.SVG_DOM;
     }
 
     /** {@inheritDoc} */
index 9203bf7e87336fa741490b4ba5f29b4c246b6db3..b37ba925bf0057cca34e0b6418e2a08c51407a24 100644 (file)
@@ -20,6 +20,7 @@
 package org.apache.fop.image.loader.batik;
 
 import org.apache.xmlgraphics.image.loader.ImageFlavor;
+import org.apache.xmlgraphics.image.loader.XMLNamespaceEnabledImageFlavor;
 import org.apache.xmlgraphics.image.loader.impl.AbstractImageLoaderFactory;
 import org.apache.xmlgraphics.image.loader.spi.ImageLoader;
 import org.apache.xmlgraphics.util.MimeConstants;
@@ -30,7 +31,7 @@ import org.apache.xmlgraphics.util.MimeConstants;
 public class ImageLoaderFactorySVG extends AbstractImageLoaderFactory {
 
     private static final ImageFlavor[] FLAVORS = new ImageFlavor[] {
-        ImageFlavor.XML_DOM};
+        XMLNamespaceEnabledImageFlavor.SVG_DOM};
 
     private static final String[] MIMES = new String[] {
         MimeConstants.MIME_SVG};
index 483d6c502efee34dde0e3b4ffac7479c98ed9bba..c5c113b04be9f449db811eadb2cbda04bf0eb992 100644 (file)
@@ -23,12 +23,12 @@ import java.io.IOException;
 import java.util.Map;
 
 import org.apache.batik.dom.svg.SVGDOMImplementation;
-
 import org.apache.xmlgraphics.image.loader.Image;
 import org.apache.xmlgraphics.image.loader.ImageException;
 import org.apache.xmlgraphics.image.loader.ImageFlavor;
 import org.apache.xmlgraphics.image.loader.ImageInfo;
 import org.apache.xmlgraphics.image.loader.ImageSessionContext;
+import org.apache.xmlgraphics.image.loader.XMLNamespaceEnabledImageFlavor;
 import org.apache.xmlgraphics.image.loader.impl.AbstractImageLoader;
 import org.apache.xmlgraphics.image.loader.impl.ImageXMLDOM;
 import org.apache.xmlgraphics.util.MimeConstants;
@@ -45,7 +45,7 @@ public class ImageLoaderSVG extends AbstractImageLoader {
      * @param targetFlavor the target flavor
      */
     public ImageLoaderSVG(ImageFlavor targetFlavor) {
-        if (!(ImageFlavor.XML_DOM.equals(targetFlavor))) {
+        if (!(XMLNamespaceEnabledImageFlavor.SVG_DOM.equals(targetFlavor))) {
             throw new IllegalArgumentException("Unsupported target ImageFlavor: " + targetFlavor);
         }
         this.targetFlavor = targetFlavor;
index c2068391219b733394948ef774023a4d92fc8c39..290b290509a543bd5e6160b4ef77786abbddfa90 100644 (file)
@@ -23,6 +23,8 @@ import junit.framework.Test;
 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 @@ public class StandardTestSuite {
         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;
     }
index 457aa91d46e689330767219e1eca27db99bdac30..97bfb4d5c5cd120a5f8e3ebac50699d914397a78 100644 (file)
 
 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 @@ public class ImageLoaderTestCase extends TestCase {
         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 @@ public class ImageLoaderTestCase extends TestCase {
         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 @@ public class ImageLoaderTestCase extends TestCase {
         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);
+    }
+
+
+    
 }