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 2009/08/12 12:46:40 UTC

svn commit: r803440 - in /xmlgraphics/fop/trunk: src/java/org/apache/fop/render/awt/ src/java/org/apache/fop/render/extensions/prepress/ src/java/org/apache/fop/render/java2d/ src/java/org/apache/fop/render/pdf/ test/java/org/apache/fop/render/extensio...

Author: vhennebert
Date: Wed Aug 12 10:46:39 2009
New Revision: 803440

URL: http://svn.apache.org/viewvc?rev=803440&view=rev
Log:
Renamed PageScaleAttributes class into PageScale.
Simplified and improved its behaviour:
- return null for an empty string
- allow for an arbitrary sequence of white spaces between the scales
- check that number of arguments is no more than 2
- other small improvements

Added:
    xmlgraphics/fop/trunk/src/java/org/apache/fop/render/extensions/prepress/PageScale.java
      - copied, changed from r800727, xmlgraphics/fop/trunk/src/java/org/apache/fop/render/extensions/prepress/PageScaleAttributes.java
Removed:
    xmlgraphics/fop/trunk/src/java/org/apache/fop/render/extensions/prepress/PageScaleAttributes.java
Modified:
    xmlgraphics/fop/trunk/src/java/org/apache/fop/render/awt/AWTRenderer.java
    xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Java2DRenderer.java
    xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFDocumentHandler.java
    xmlgraphics/fop/trunk/test/java/org/apache/fop/render/extensions/prepress/PageScaleTest.java

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/awt/AWTRenderer.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/awt/AWTRenderer.java?rev=803440&r1=803439&r2=803440&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/awt/AWTRenderer.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/awt/AWTRenderer.java Wed Aug 12 10:46:39 2009
@@ -47,7 +47,7 @@
 import org.apache.fop.render.awt.viewer.Renderable;
 import org.apache.fop.render.awt.viewer.StatusListener;
 import org.apache.fop.render.java2d.Java2DRenderer;
-import org.apache.fop.render.extensions.prepress.PageScaleAttributes;
+import org.apache.fop.render.extensions.prepress.PageScale;
 
 /**
  * The AWTRender outputs the pages generated by the layout engine to a Swing
@@ -159,8 +159,8 @@
                 / userAgent.getTargetPixelUnitToMillimeter();
         if (getPageViewport(pageNum).getForeignAttributes() != null) {
             String scale = (String) getPageViewport(pageNum).getForeignAttributes().get(
-                    PageScaleAttributes.EXT_PAGE_SCALE);
-            Point2D scales = PageScaleAttributes.getScaleAttributes(scale);
+                    PageScale.EXT_PAGE_SCALE);
+            Point2D scales = PageScale.getScale(scale);
             if (scales != null) {
                 scaleX *= scales.getX();
                 scaleY *= scales.getY();

Copied: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/extensions/prepress/PageScale.java (from r800727, xmlgraphics/fop/trunk/src/java/org/apache/fop/render/extensions/prepress/PageScaleAttributes.java)
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/extensions/prepress/PageScale.java?p2=xmlgraphics/fop/trunk/src/java/org/apache/fop/render/extensions/prepress/PageScale.java&p1=xmlgraphics/fop/trunk/src/java/org/apache/fop/render/extensions/prepress/PageScaleAttributes.java&r1=800727&r2=803440&rev=803440&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/extensions/prepress/PageScaleAttributes.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/extensions/prepress/PageScale.java Wed Aug 12 10:46:39 2009
@@ -21,6 +21,7 @@
 
 import java.awt.geom.Point2D;
 import java.text.MessageFormat;
+import java.util.regex.Pattern;
 
 import org.apache.xmlgraphics.util.QName;
 
@@ -29,7 +30,7 @@
 /**
  * This class provides utility methods to parse the 'fox:scale' extension attribute.
  */
-public final class PageScaleAttributes {
+public final class PageScale {
 
     /**
      * The extension 'scale' attribute for the simple-page-master element.
@@ -37,11 +38,12 @@
     public static final QName EXT_PAGE_SCALE
             = new QName(ExtensionElementMapping.URI, null, "scale");
 
+    private static final Pattern WHITESPACE_PATTERN = Pattern.compile("\\s+");
 
     /**
      * Utility classes should not have a public or default constructor
      */
-    private PageScaleAttributes() {
+    private PageScale() {
     }
 
     /**
@@ -50,31 +52,41 @@
      * @param scale scale attribute, input format: scaleX [scaleY]
      * @return the pair of (sx, sy) values
      */
-    public static Point2D.Double getScaleAttributes(String scale) {
+    public static Point2D getScale(String scale) {
+        // TODO throw appropriate exceptions that can be caught by the event
+        // notification mechanism
         final String err = "Extension 'scale' attribute has incorrect value(s): {0}";
 
-        if (scale == null) {
+        if (scale == null || scale.equals("")) {
             return null;
         }
 
-        Point2D.Double result = null;
-
+        String[] scales = WHITESPACE_PATTERN.split(scale);
+        double scaleX;
         try {
-            String[] scales = scale.split(" ");
-            if (scales.length > 0) {
-                result = new Point2D.Double(Double.parseDouble(scales[0]),
-                        Double.parseDouble(scales[0]));
-            }
-            if (scales.length > 1) {
-                result.y = Double.parseDouble(scales[1]);
-            }
-            if (result.x <= 0 || result.y <= 0) {
+            scaleX = Double.parseDouble(scales[0]);
+        } catch (NumberFormatException nfe) {
+            throw new IllegalArgumentException(MessageFormat.format(err, new Object[]{scale}));
+        }
+        double scaleY;
+        switch (scales.length) {
+        case 1:
+            scaleY = scaleX;
+            break;
+        case 2:
+            try {
+                scaleY = Double.parseDouble(scales[1]);
+            } catch (NumberFormatException nfe) {
                 throw new IllegalArgumentException(MessageFormat.format(err, new Object[]{scale}));
             }
-        } catch (NumberFormatException nfe) {
+            break;
+        default:
+            throw new IllegalArgumentException("Too many arguments");
+        }
+        if (scaleX <= 0 || scaleY <= 0) {
             throw new IllegalArgumentException(MessageFormat.format(err, new Object[]{scale}));
         }
 
-        return result;
+        return new Point2D.Double(scaleX, scaleY);
     }
 }

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Java2DRenderer.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Java2DRenderer.java?rev=803440&r1=803439&r2=803440&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Java2DRenderer.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/java2d/Java2DRenderer.java Wed Aug 12 10:46:39 2009
@@ -77,7 +77,7 @@
 import org.apache.fop.render.Graphics2DAdapter;
 import org.apache.fop.render.RendererContext;
 import org.apache.fop.render.extensions.prepress.PageBoundaries;
-import org.apache.fop.render.extensions.prepress.PageScaleAttributes;
+import org.apache.fop.render.extensions.prepress.PageScale;
 import org.apache.fop.render.pdf.CTMHelper;
 import org.apache.fop.util.CharUtilities;
 import org.apache.fop.util.ColorUtil;
@@ -309,8 +309,8 @@
             double scaleX = scaleFactor;
             double scaleY = scaleFactor;
             String scale = (String) currentPageViewport.getForeignAttributes().get(
-                    PageScaleAttributes.EXT_PAGE_SCALE);
-            Point2D scales = PageScaleAttributes.getScaleAttributes(scale);
+                    PageScale.EXT_PAGE_SCALE);
+            Point2D scales = PageScale.getScale(scale);
             if (scales != null) {
                 scaleX *= scales.getX();
                 scaleY *= scales.getY();

Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFDocumentHandler.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFDocumentHandler.java?rev=803440&r1=803439&r2=803440&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFDocumentHandler.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/pdf/PDFDocumentHandler.java Wed Aug 12 10:46:39 2009
@@ -42,7 +42,7 @@
 import org.apache.fop.pdf.PDFResourceContext;
 import org.apache.fop.pdf.PDFResources;
 import org.apache.fop.render.extensions.prepress.PageBoundaries;
-import org.apache.fop.render.extensions.prepress.PageScaleAttributes;
+import org.apache.fop.render.extensions.prepress.PageScale;
 import org.apache.fop.render.intermediate.AbstractBinaryWritingIFDocumentHandler;
 import org.apache.fop.render.intermediate.IFContext;
 import org.apache.fop.render.intermediate.IFDocumentHandlerConfigurator;
@@ -183,8 +183,8 @@
         double scaleX = 1;
         double scaleY = 1;
         String scale = (String) getContext().getForeignAttribute(
-                PageScaleAttributes.EXT_PAGE_SCALE);
-        Point2D scales = PageScaleAttributes.getScaleAttributes(scale);
+                PageScale.EXT_PAGE_SCALE);
+        Point2D scales = PageScale.getScale(scale);
         if (scales != null) {
             scaleX = scales.getX();
             scaleY = scales.getY();

Modified: xmlgraphics/fop/trunk/test/java/org/apache/fop/render/extensions/prepress/PageScaleTest.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/test/java/org/apache/fop/render/extensions/prepress/PageScaleTest.java?rev=803440&r1=803439&r2=803440&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/test/java/org/apache/fop/render/extensions/prepress/PageScaleTest.java (original)
+++ xmlgraphics/fop/trunk/test/java/org/apache/fop/render/extensions/prepress/PageScaleTest.java Wed Aug 12 10:46:39 2009
@@ -46,14 +46,14 @@
 
     /** 1 value is used for both x and y. */
     public void testScale1() {
-        Point2D res = PageScaleAttributes.getScaleAttributes(".5");
+        Point2D res = PageScale.getScale(".5");
         assertEquals(0.5, res.getX(), 0.0);
         assertEquals(0.5, res.getY(), 0.0);
     }
 
     /** Two values, used resp. for x and y. */
     public void testScale2() {
-        Point2D res = PageScaleAttributes.getScaleAttributes("1. 1.2");
+        Point2D res = PageScale.getScale("1. \t \n 1.2");
         assertEquals(1.0, res.getX(), 0.0);
         assertEquals(1.2, res.getY(), 0.0);
     }
@@ -61,7 +61,7 @@
     /** Scale must not contain units. */
     public void testScaleFail() {
         try {
-            PageScaleAttributes.getScaleAttributes("0.5mm 0.5cm");
+            PageScale.getScale("0.5mm 0.5cm");
             fail("Expected IllegalArgumentException. Scale shouldn't contain units");
         } catch (IllegalArgumentException iae) {
             // Good!
@@ -70,7 +70,9 @@
 
     /** @{code null} is returned when scale is unspecified. */
     public void testScaleNull() {
-        Point2D res = PageScaleAttributes.getScaleAttributes(null);
+        Point2D res = PageScale.getScale(null);
+        assertNull("Result should be null", res);
+        res = PageScale.getScale("");
         assertNull("Result should be null", res);
     }
 



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