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 2007/12/07 09:46:56 UTC

svn commit: r602023 - in /xmlgraphics/fop/branches/Temp_ImagePackageRedesign: src/java/org/apache/fop/image2/impl/batik/PreloaderSVG.java test/java/org/apache/fop/image2/ImagePreloaderTestCase.java

Author: jeremias
Date: Fri Dec  7 00:46:56 2007
New Revision: 602023

URL: http://svn.apache.org/viewvc?rev=602023&view=rev
Log:
Bugfix for bug in SVG preloader which didn't calculate the size of an SVG correctly when there's no explicit size.

Modified:
    xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/image2/impl/batik/PreloaderSVG.java
    xmlgraphics/fop/branches/Temp_ImagePackageRedesign/test/java/org/apache/fop/image2/ImagePreloaderTestCase.java

Modified: xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/image2/impl/batik/PreloaderSVG.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/image2/impl/batik/PreloaderSVG.java?rev=602023&r1=602022&r2=602023&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/image2/impl/batik/PreloaderSVG.java (original)
+++ xmlgraphics/fop/branches/Temp_ImagePackageRedesign/src/java/org/apache/fop/image2/impl/batik/PreloaderSVG.java Fri Dec  7 00:46:56 2007
@@ -46,7 +46,6 @@
 import org.apache.fop.image2.util.ImageUtil;
 import org.apache.fop.svg.SVGUserAgent;
 import org.apache.fop.util.UnclosableInputStream;
-import org.apache.fop.util.UnitConv;
 
 /**
  * Image preloader for SVG images.
@@ -106,7 +105,7 @@
                 SVGDocument doc = (SVGDocument) factory.createSVGDocument(src.getSystemId(), in);
 
                 Element e = doc.getRootElement();
-                float pxUnitToMillimeter = (float)UnitConv.pt2mm(0.001); 
+                float pxUnitToMillimeter = 25.4f / context.getSourceResolution(); 
                 SVGUserAgent userAg = new SVGUserAgent(pxUnitToMillimeter,
                             new AffineTransform());
                 BridgeContext ctx = new BridgeContext(userAg);
@@ -118,20 +117,20 @@
                 if (s.length() == 0) {
                     s = SVGOMDocument.SVG_SVG_WIDTH_DEFAULT_VALUE;
                 }
-                int width = Math.round(UnitProcessor.svgHorizontalLengthToUserSpace(
-                        s, SVGOMDocument.SVG_WIDTH_ATTRIBUTE, uctx));
+                float width = UnitProcessor.svgHorizontalLengthToUserSpace(
+                        s, SVGOMDocument.SVG_WIDTH_ATTRIBUTE, uctx);
 
                 // 'height' attribute - default is 100%
                 s = e.getAttributeNS(null, SVGOMDocument.SVG_HEIGHT_ATTRIBUTE);
                 if (s.length() == 0) {
                     s = SVGOMDocument.SVG_SVG_HEIGHT_DEFAULT_VALUE;
                 }
-                int height = Math.round(UnitProcessor.svgVerticalLengthToUserSpace(
-                        s, SVGOMDocument.SVG_HEIGHT_ATTRIBUTE, uctx));
+                float height = UnitProcessor.svgVerticalLengthToUserSpace(
+                        s, SVGOMDocument.SVG_HEIGHT_ATTRIBUTE, uctx);
 
                 ImageInfo info = new ImageInfo(uri, getMimeType());
                 ImageSize size = new ImageSize();
-                size.setSizeInMillipoints(width, height);
+                size.setSizeInMillipoints(Math.round(width * 1000), Math.round(height * 1000));
                 //Set the resolution to that of the FOUserAgent
                 size.setResolution(context.getSourceResolution());
                 size.calcPixelsFromSize();

Modified: xmlgraphics/fop/branches/Temp_ImagePackageRedesign/test/java/org/apache/fop/image2/ImagePreloaderTestCase.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ImagePackageRedesign/test/java/org/apache/fop/image2/ImagePreloaderTestCase.java?rev=602023&r1=602022&r2=602023&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_ImagePackageRedesign/test/java/org/apache/fop/image2/ImagePreloaderTestCase.java (original)
+++ xmlgraphics/fop/branches/Temp_ImagePackageRedesign/test/java/org/apache/fop/image2/ImagePreloaderTestCase.java Fri Dec  7 00:46:56 2007
@@ -154,11 +154,27 @@
         assertEquals(uri, info.getOriginalURI());
         assertEquals(16, info.getSize().getWidthPx());
         assertEquals(16, info.getSize().getHeightPx());
-        assertEquals(72, info.getSize().getDpiHorizontal(), 0.1);
+        assertEquals(userAgent.getSourceResolution(), info.getSize().getDpiHorizontal(), 0.1);
         assertEquals(16000, info.getSize().getWidthMpt());
         assertEquals(16000, info.getSize().getHeightMpt());
     }
     
+    public void testSVGNoSize() throws Exception {
+        String uri = "test/resources/images/img.svg";
+        FOUserAgent userAgent = fopFactory.newFOUserAgent();
+        
+        ImageManager manager = fopFactory.getImageManager();
+        ImageInfo info = manager.preloadImage(uri, userAgent.getImageSessionContext());
+        assertNotNull("ImageInfo must not be null", info);
+        assertEquals(MimeConstants.MIME_SVG, info.getMimeType());
+        assertEquals(uri, info.getOriginalURI());
+        assertEquals(100, info.getSize().getWidthPx()); //100 = default viewport size
+        assertEquals(100, info.getSize().getHeightPx());
+        assertEquals(userAgent.getSourceResolution(), info.getSize().getDpiHorizontal(), 0.1);
+        assertEquals(100000, info.getSize().getWidthMpt());
+        assertEquals(100000, info.getSize().getHeightMpt());
+    }
+
     public void testWMF() throws Exception {
         String uri = "test/resources/images/testChart.wmf";
         



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