git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1384310 13f79535-47bb-0310-9956-ffa450edef68pull/26/head
<source><![CDATA[<renderer mime="image/tiff"> | <source><![CDATA[<renderer mime="image/tiff"> | ||||
<transparent-page-background>true</transparent-page-background> | <transparent-page-background>true</transparent-page-background> | ||||
<compression>CCITT T.6</compression> | <compression>CCITT T.6</compression> | ||||
<single-strip>true</single-strip> | |||||
<fonts><!-- described elsewhere --></fonts> | <fonts><!-- described elsewhere --></fonts> | ||||
</renderer>]]></source> | </renderer>]]></source> | ||||
<p> | <p> | ||||
added separately. The internal TIFF codec from XML Graphics Commons only supports PackBits, | added separately. The internal TIFF codec from XML Graphics Commons only supports PackBits, | ||||
Deflate and JPEG compression for writing. | Deflate and JPEG compression for writing. | ||||
</note> | </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> | ||||
<section id="bitmap-rendering-options"> | <section id="bitmap-rendering-options"> | ||||
<title>Runtime Rendering Options</title> | <title>Runtime Rendering Options</title> |
package org.apache.fop.render.bitmap; | package org.apache.fop.render.bitmap; | ||||
import org.apache.xmlgraphics.image.writer.ResolutionUnit; | |||||
import org.apache.fop.apps.MimeConstants; | import org.apache.fop.apps.MimeConstants; | ||||
import org.apache.fop.render.bitmap.TIFFRendererConfig.TIFFRendererConfigParser; | import org.apache.fop.render.bitmap.TIFFRendererConfig.TIFFRendererConfigParser; | ||||
import org.apache.fop.render.intermediate.IFContext; | import org.apache.fop.render.intermediate.IFContext; | ||||
import org.apache.fop.render.intermediate.IFDocumentHandler; | |||||
import org.apache.fop.render.intermediate.IFDocumentHandlerConfigurator; | import org.apache.fop.render.intermediate.IFDocumentHandlerConfigurator; | ||||
/** | /** | ||||
TIFFDocumentHandler(IFContext context) { | TIFFDocumentHandler(IFContext context) { | ||||
super(context); | super(context); | ||||
getSettings().getWriterParams().setResolutionUnit(ResolutionUnit.CENTIMETER); | |||||
} | } | ||||
/** {@inheritDoc} */ | /** {@inheritDoc} */ |
import org.apache.avalon.framework.configuration.Configuration; | import org.apache.avalon.framework.configuration.Configuration; | ||||
import org.apache.xmlgraphics.util.MimeConstants; | |||||
import org.apache.fop.apps.FOPException; | import org.apache.fop.apps.FOPException; | ||||
import org.apache.fop.apps.FOUserAgent; | import org.apache.fop.apps.FOUserAgent; | ||||
import org.apache.fop.apps.MimeConstants; | |||||
import org.apache.fop.fonts.DefaultFontConfig; | import org.apache.fop.fonts.DefaultFontConfig; | ||||
import org.apache.fop.fonts.DefaultFontConfig.DefaultFontConfigParser; | import org.apache.fop.fonts.DefaultFontConfig.DefaultFontConfigParser; | ||||
import org.apache.fop.render.RendererConfigOption; | import org.apache.fop.render.RendererConfigOption; | ||||
import static org.apache.fop.render.bitmap.TIFFCompressionValue.PACKBITS; | |||||
/** | /** | ||||
* The renderer configuration object for the TIFF renderer. | * The renderer configuration object for the TIFF renderer. | ||||
*/ | */ | ||||
public final class TIFFRendererConfig extends BitmapRendererConfig { | public final class TIFFRendererConfig extends BitmapRendererConfig { | ||||
public enum TIFFRendererOption implements RendererConfigOption { | 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 String name; | ||||
private final Object defaultValue; | private final Object defaultValue; | ||||
return (TIFFCompressionValue) params.get(TIFFRendererOption.COMPRESSION); | 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. | * The TIFF renderer configuration parser. | ||||
*/ | */ | ||||
if (cfg != null) { | if (cfg != null) { | ||||
setParam(TIFFRendererOption.COMPRESSION, | setParam(TIFFRendererOption.COMPRESSION, | ||||
TIFFCompressionValue.getType(getValue(cfg, TIFFRendererOption.COMPRESSION))); | TIFFCompressionValue.getType(getValue(cfg, TIFFRendererOption.COMPRESSION))); | ||||
setParam(TIFFRendererOption.SINGLE_STRIP, Boolean.valueOf(getValue(cfg, | |||||
TIFFRendererOption.SINGLE_STRIP))); | |||||
} | } | ||||
return config; | return config; | ||||
} | } |
} | } | ||||
} | } | ||||
/** {@inheritDoc} */ | |||||
private boolean isSingleStrip(TIFFRendererConfig config) { | |||||
Boolean singleRowPerStrip = config.isSingleStrip(); | |||||
return singleRowPerStrip == null ? false : singleRowPerStrip; | |||||
} | |||||
@Override | |||||
public void configure(IFDocumentHandler documentHandler) throws FOPException { | public void configure(IFDocumentHandler documentHandler) throws FOPException { | ||||
final TIFFRendererConfig config = (TIFFRendererConfig) getRendererConfig(documentHandler); | final TIFFRendererConfig config = (TIFFRendererConfig) getRendererConfig(documentHandler); | ||||
if (config != null) { | if (config != null) { | ||||
BitmapRenderingSettings settings = tiffHandler.getSettings(); | BitmapRenderingSettings settings = tiffHandler.getSettings(); | ||||
configure(documentHandler, settings, new TIFFRendererConfigParser()); | configure(documentHandler, settings, new TIFFRendererConfigParser()); | ||||
setCompressionMethod(config.getCompressionType(), settings); | setCompressionMethod(config.getCompressionType(), settings); | ||||
settings.getWriterParams().setSingleStrip(isSingleStrip(config)); | |||||
} | } | ||||
} | } | ||||
documents. Example: the fix of marks layering will be such a case when it's done. | documents. Example: the fix of marks layering will be such a case when it's done. | ||||
--> | --> | ||||
<release version="FOP Trunk" date="TBD"> | <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"> | <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 | Always set the breakClass field to a legal value in BreakElement, so as to avoid | ||||
IllegalArgumentExceptions in other parts of the code. | IllegalArgumentExceptions in other parts of the code. |
package org.apache.fop.apps; | package org.apache.fop.apps; | ||||
import static org.apache.fop.render.bitmap.TIFFRendererConfig.TIFFRendererOption.COMPRESSION; | 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 class TIFFRendererConfBuilder extends BitmapRendererConfBuilder { | ||||
public TIFFRendererConfBuilder() { | public TIFFRendererConfBuilder() { | ||||
createTextElement(COMPRESSION, mode); | createTextElement(COMPRESSION, mode); | ||||
return this; | return this; | ||||
} | } | ||||
public TIFFRendererConfBuilder setSingleStrip(boolean single) { | |||||
createTextElement(SINGLE_STRIP, String.valueOf(single)); | |||||
return this; | |||||
} | |||||
} | } |
import org.apache.fop.render.bitmap.TIFFRendererConfig.TIFFRendererConfigParser; | import org.apache.fop.render.bitmap.TIFFRendererConfig.TIFFRendererConfigParser; | ||||
import static org.junit.Assert.assertEquals; | import static org.junit.Assert.assertEquals; | ||||
import static org.junit.Assert.assertFalse; | |||||
import static org.junit.Assert.assertTrue; | |||||
public class TIFFRendererConfigParserTestCase | public class TIFFRendererConfigParserTestCase | ||||
extends AbstractBitmapRendererConfigParserTester { | |||||
extends AbstractBitmapRendererConfigParserTester { | |||||
public TIFFRendererConfigParserTestCase() { | public TIFFRendererConfigParserTestCase() { | ||||
super(new TIFFRendererConfigParser()); | super(new TIFFRendererConfigParser()); | ||||
assertEquals(value, getConfig().getCompressionType()); | assertEquals(value, getConfig().getCompressionType()); | ||||
} | } | ||||
} | } | ||||
@Test | |||||
public void testSingleStrip() throws Exception { | |||||
parseConfig(createRenderer().setSingleStrip(true)); | |||||
assertTrue(getConfig().isSingleStrip()); | |||||
parseConfig(createRenderer().setSingleStrip(false)); | |||||
assertFalse(getConfig().isSingleStrip()); | |||||
} | |||||
} | } |
import org.junit.Test; | import org.junit.Test; | ||||
import static org.junit.Assert.assertEquals; | |||||
import org.apache.fop.apps.FopConfBuilder; | import org.apache.fop.apps.FopConfBuilder; | ||||
import org.apache.fop.apps.MimeConstants; | import org.apache.fop.apps.MimeConstants; | ||||
import static org.apache.fop.render.bitmap.TIFFCompressionValue.CCITT_T4; | import static org.apache.fop.render.bitmap.TIFFCompressionValue.CCITT_T4; | ||||
import static org.apache.fop.render.bitmap.TIFFCompressionValue.CCITT_T6; | 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 { | public class TIFFRendererConfiguratorTestCase extends AbstractBitmapRendererConfiguratorTest { | ||||
} | } | ||||
} | } | ||||
} | } | ||||
@Test | |||||
public void testSingleStrip() throws Exception { | |||||
parseConfig(createBuilder().setSingleStrip(true)); | |||||
assertTrue(settings.getWriterParams().isSingleStrip()); | |||||
parseConfig(createBuilder().setSingleStrip(false)); | |||||
assertFalse(settings.getWriterParams().isSingleStrip()); | |||||
} | |||||
} | } |