]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Bugzilla #53865: Add Rows per Strip configuration for Tiff renderer
authorPeter Hancock <phancock@apache.org>
Thu, 13 Sep 2012 12:45:27 +0000 (12:45 +0000)
committerPeter Hancock <phancock@apache.org>
Thu, 13 Sep 2012 12:45:27 +0000 (12:45 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1384310 13f79535-47bb-0310-9956-ffa450edef68

lib/xmlgraphics-commons-1.5svn.jar
src/documentation/content/xdocs/trunk/output.xml
src/java/org/apache/fop/render/bitmap/TIFFDocumentHandler.java
src/java/org/apache/fop/render/bitmap/TIFFRendererConfig.java
src/java/org/apache/fop/render/bitmap/TIFFRendererConfigurator.java
status.xml
test/java/org/apache/fop/apps/TIFFRendererConfBuilder.java
test/java/org/apache/fop/render/bitmap/TIFFRendererConfigParserTestCase.java
test/java/org/apache/fop/render/bitmap/TIFFRendererConfiguratorTestCase.java

index 802ae49ae3a9399fd1ab19a8f11cd4b6d8b91f7f..1a56594b217dbe321c4cdd0f0b0924142360d5df 100644 (file)
Binary files a/lib/xmlgraphics-commons-1.5svn.jar and b/lib/xmlgraphics-commons-1.5svn.jar differ
index 4f792971b04d4b30aa10d8bdac2785c02c2ae323..5de820c180f3460eaed0e8914e393f2b25798776 100644 (file)
@@ -1270,6 +1270,7 @@ Note that the value of the encoding attribute in the example is the double-byte
 <source><![CDATA[<renderer mime="image/tiff">
   <transparent-page-background>true</transparent-page-background>
   <compression>CCITT T.6</compression>
+  <single-strip>true</single-strip>
   <fonts><!-- described elsewhere --></fonts>
 </renderer>]]></source>
       <p>
@@ -1303,6 +1304,10 @@ Note that the value of the encoding attribute in the example is the double-byte
         added separately. The internal TIFF codec from XML Graphics Commons only supports PackBits,
         Deflate and JPEG compression for writing.
       </note>
+      <p>
+          The default value for the <code>"single-strip"</code> is <code>"false"</code> resulting in the RowsPerStrip Tiff Tag equal to the number of rows.
+          If set to <code>true</code> RowsPerStrip is set to 1.
+      </p>
     </section>
     <section id="bitmap-rendering-options">
       <title>Runtime Rendering Options</title>
index 48e79520fec8b574bc6935a9dc5b04d03c53f77a..d536167c361e345cedf9e63f4102367b1990ca94 100644 (file)
 
 package org.apache.fop.render.bitmap;
 
+import org.apache.xmlgraphics.image.writer.ResolutionUnit;
+
 import org.apache.fop.apps.MimeConstants;
 import org.apache.fop.render.bitmap.TIFFRendererConfig.TIFFRendererConfigParser;
 import org.apache.fop.render.intermediate.IFContext;
+import org.apache.fop.render.intermediate.IFDocumentHandler;
 import org.apache.fop.render.intermediate.IFDocumentHandlerConfigurator;
 
 /**
@@ -32,6 +35,7 @@ public class TIFFDocumentHandler extends AbstractBitmapDocumentHandler {
 
     TIFFDocumentHandler(IFContext context) {
         super(context);
+        getSettings().getWriterParams().setResolutionUnit(ResolutionUnit.CENTIMETER);
     }
 
     /** {@inheritDoc} */
index 3c833d3b0a3048c47213d770770a91ee92ae2043..1e44397f648f0b1ac7393669c657d24ec2b797a0 100644 (file)
@@ -23,21 +23,24 @@ import java.util.EnumMap;
 
 import org.apache.avalon.framework.configuration.Configuration;
 
-import org.apache.xmlgraphics.util.MimeConstants;
-
 import org.apache.fop.apps.FOPException;
 import org.apache.fop.apps.FOUserAgent;
+import org.apache.fop.apps.MimeConstants;
 import org.apache.fop.fonts.DefaultFontConfig;
 import org.apache.fop.fonts.DefaultFontConfig.DefaultFontConfigParser;
 import org.apache.fop.render.RendererConfigOption;
 
+import static org.apache.fop.render.bitmap.TIFFCompressionValue.PACKBITS;
+
 /**
  * The renderer configuration object for the TIFF renderer.
  */
 public final class TIFFRendererConfig extends BitmapRendererConfig {
 
     public enum TIFFRendererOption implements RendererConfigOption {
-        COMPRESSION("compression", TIFFCompressionValue.PACKBITS);
+        COMPRESSION("compression", PACKBITS),
+        /** option to encode one row per strip or a all rows in a single strip*/
+        SINGLE_STRIP("single-strip", Boolean.FALSE);
 
         private final String name;
         private final Object defaultValue;
@@ -67,6 +70,14 @@ public final class TIFFRendererConfig extends BitmapRendererConfig {
         return (TIFFCompressionValue) params.get(TIFFRendererOption.COMPRESSION);
     }
 
+    /**
+     * @return True if all rows are contained in a single strip, False each strip contains one row or null
+     * if not set.
+     */
+    public Boolean isSingleStrip() {
+        return (Boolean) params.get(TIFFRendererOption.SINGLE_STRIP);
+    }
+
     /**
      * The TIFF renderer configuration parser.
      */
@@ -94,6 +105,8 @@ public final class TIFFRendererConfig extends BitmapRendererConfig {
             if (cfg != null) {
                 setParam(TIFFRendererOption.COMPRESSION,
                         TIFFCompressionValue.getType(getValue(cfg, TIFFRendererOption.COMPRESSION)));
+                setParam(TIFFRendererOption.SINGLE_STRIP, Boolean.valueOf(getValue(cfg,
+                                TIFFRendererOption.SINGLE_STRIP)));
             }
             return config;
         }
index 593934b45b033018c7547ee64b7a3350690ead75..19abb8131cb13ef47af788b313f05d5100e1bbfe 100644 (file)
@@ -76,7 +76,12 @@ public class TIFFRendererConfigurator extends BitmapRendererConfigurator {
         }
     }
 
-    /** {@inheritDoc} */
+    private boolean isSingleStrip(TIFFRendererConfig config) {
+        Boolean singleRowPerStrip = config.isSingleStrip();
+        return singleRowPerStrip == null ? false : singleRowPerStrip;
+    }
+
+    @Override
     public void configure(IFDocumentHandler documentHandler) throws FOPException {
         final TIFFRendererConfig config = (TIFFRendererConfig) getRendererConfig(documentHandler);
         if (config != null) {
@@ -84,6 +89,7 @@ public class TIFFRendererConfigurator extends BitmapRendererConfigurator {
             BitmapRenderingSettings settings = tiffHandler.getSettings();
             configure(documentHandler, settings, new TIFFRendererConfigParser());
             setCompressionMethod(config.getCompressionType(), settings);
+            settings.getWriterParams().setSingleStrip(isSingleStrip(config));
         }
     }
 
index 3e73488fbc30b8e0ae167100703732ae614d0372..b39d3d9e0540258919d85966db5551085175c622 100644 (file)
       documents. Example: the fix of marks layering will be such a case when it's done.
     -->
     <release version="FOP Trunk" date="TBD">
+      <action context="Renderers" dev="PH" type="add" fixes-bug="53865" importance="low">
+        Added configuration for RowPerStrip configuration in the Tiff renderer.
+        RowsPerStrip can be configured to 1 or to the total # of rows.
+        See docs for fop.xconf configuration details.
+      </action>
       <action context="Layout" dev="VH" type="fix" fixes-bug="53598" due-to="Robert Meyer">
         Always set the breakClass field to a legal value in BreakElement, so as to avoid 
         IllegalArgumentExceptions in other parts of the code.
index 8b72a558d088b03d972074741c7fcf8c2b27bc4a..f39df29888b49c23dda7f0dfbb7fb882de18d3f5 100644 (file)
@@ -20,7 +20,7 @@
 package org.apache.fop.apps;
 
 import static org.apache.fop.render.bitmap.TIFFRendererConfig.TIFFRendererOption.COMPRESSION;
-
+import static org.apache.fop.render.bitmap.TIFFRendererConfig.TIFFRendererOption.SINGLE_STRIP;
 public class TIFFRendererConfBuilder extends BitmapRendererConfBuilder {
 
     public TIFFRendererConfBuilder() {
@@ -31,4 +31,9 @@ public class TIFFRendererConfBuilder extends BitmapRendererConfBuilder {
         createTextElement(COMPRESSION, mode);
         return this;
     }
+
+    public TIFFRendererConfBuilder setSingleStrip(boolean single) {
+        createTextElement(SINGLE_STRIP, String.valueOf(single));
+        return this;
+    }
 }
index 487b8cb9f21e8cf20bf10922df531ea4c3af86ae..69326559e66d7a7cd404de70cf1cda5cb31ccfb6 100644 (file)
@@ -26,9 +26,11 @@ import org.apache.fop.apps.TIFFRendererConfBuilder;
 import org.apache.fop.render.bitmap.TIFFRendererConfig.TIFFRendererConfigParser;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
 
 public class TIFFRendererConfigParserTestCase
-        extends AbstractBitmapRendererConfigParserTester {
+extends AbstractBitmapRendererConfigParserTester {
 
     public TIFFRendererConfigParserTestCase() {
         super(new TIFFRendererConfigParser());
@@ -52,4 +54,12 @@ public class TIFFRendererConfigParserTestCase
             assertEquals(value, getConfig().getCompressionType());
         }
     }
+
+    @Test
+    public void testSingleStrip() throws Exception {
+        parseConfig(createRenderer().setSingleStrip(true));
+        assertTrue(getConfig().isSingleStrip());
+        parseConfig(createRenderer().setSingleStrip(false));
+        assertFalse(getConfig().isSingleStrip());
+    }
 }
index c97d733339dc5ba503ace46dad7037366b6f0961..3e6c951a653d268d9802a1992d8869e704bf5a4e 100644 (file)
@@ -23,7 +23,6 @@ import java.awt.image.BufferedImage;
 
 import org.junit.Test;
 
-import static org.junit.Assert.assertEquals;
 
 import org.apache.fop.apps.FopConfBuilder;
 import org.apache.fop.apps.MimeConstants;
@@ -32,6 +31,9 @@ import org.apache.fop.render.bitmap.TIFFRendererConfig.TIFFRendererConfigParser;
 
 import static org.apache.fop.render.bitmap.TIFFCompressionValue.CCITT_T4;
 import static org.apache.fop.render.bitmap.TIFFCompressionValue.CCITT_T6;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
 
 public class TIFFRendererConfiguratorTestCase extends AbstractBitmapRendererConfiguratorTest {
 
@@ -61,4 +63,13 @@ public class TIFFRendererConfiguratorTestCase extends AbstractBitmapRendererConf
             }
         }
     }
+
+    @Test
+    public void testSingleStrip() throws Exception {
+        parseConfig(createBuilder().setSingleStrip(true));
+        assertTrue(settings.getWriterParams().isSingleStrip());
+        parseConfig(createBuilder().setSingleStrip(false));
+        assertFalse(settings.getWriterParams().isSingleStrip());
+    }
+
 }