Selaa lähdekoodia

Bugzilla #53865: Add Rows per Strip configuration for Tiff renderer


git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1384310 13f79535-47bb-0310-9956-ffa450edef68
pull/26/head
Peter Hancock 11 vuotta sitten
vanhempi
commit
ba64473061

BIN
lib/xmlgraphics-commons-1.5svn.jar Näytä tiedosto


+ 5
- 0
src/documentation/content/xdocs/trunk/output.xml Näytä tiedosto

<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>

+ 4
- 0
src/java/org/apache/fop/render/bitmap/TIFFDocumentHandler.java Näytä tiedosto



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} */

+ 16
- 3
src/java/org/apache/fop/render/bitmap/TIFFRendererConfig.java Näytä tiedosto



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;
} }

+ 7
- 1
src/java/org/apache/fop/render/bitmap/TIFFRendererConfigurator.java Näytä tiedosto

} }
} }


/** {@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));
} }
} }



+ 5
- 0
status.xml Näytä tiedosto

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.

+ 6
- 1
test/java/org/apache/fop/apps/TIFFRendererConfBuilder.java Näytä tiedosto

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;
}
} }

+ 11
- 1
test/java/org/apache/fop/render/bitmap/TIFFRendererConfigParserTestCase.java Näytä tiedosto

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());
}
} }

+ 12
- 1
test/java/org/apache/fop/render/bitmap/TIFFRendererConfiguratorTestCase.java Näytä tiedosto



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());
}

} }

Loading…
Peruuta
Tallenna