aboutsummaryrefslogtreecommitdiffstats
path: root/src/java/org/apache/fop/render/afp
diff options
context:
space:
mode:
authorAdrian Cumiskey <acumiskey@apache.org>2008-11-25 18:34:05 +0000
committerAdrian Cumiskey <acumiskey@apache.org>2008-11-25 18:34:05 +0000
commit382636ee6b35783d5d1885b5bb84f87d7b518c02 (patch)
tree974ddd37fb2a9c0f6895e19f2c809fe13b6afd84 /src/java/org/apache/fop/render/afp
parent1c077ccadfd59e9429529ad92e2a3cf783e3a501 (diff)
downloadxmlgraphics-fop-382636ee6b35783d5d1885b5bb84f87d7b518c02.tar.gz
xmlgraphics-fop-382636ee6b35783d5d1885b5bb84f87d7b518c02.zip
* Reverted back the interface changes I made to ImageHandler.
* Created AbstractAFPImageHandlerRawStream base class to handle raw image streams for AFP. * Fixed a bug in handling native embedded TIFF images. I think its finally ready to roll now guys, sorry for the last minute glitches. My apologies for not finding time to respond to the fop-dev mailing list this afternoon but have been trying to put my efforts into applying the final touches to the branch. If my good lady allows I'll respond to your comments later this evening :). git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/branches/Temp_AFPGOCAResources@720561 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/java/org/apache/fop/render/afp')
-rw-r--r--src/java/org/apache/fop/render/afp/AFPImageHandler.java3
-rw-r--r--src/java/org/apache/fop/render/afp/AFPImageHandlerGraphics2D.java8
-rw-r--r--src/java/org/apache/fop/render/afp/AFPImageHandlerRawCCITTFax.java28
-rw-r--r--src/java/org/apache/fop/render/afp/AFPImageHandlerRawStream.java56
-rw-r--r--src/java/org/apache/fop/render/afp/AFPImageHandlerRenderedImage.java24
-rw-r--r--src/java/org/apache/fop/render/afp/AFPImageHandlerXML.java8
-rw-r--r--src/java/org/apache/fop/render/afp/AFPRenderer.java10
-rw-r--r--src/java/org/apache/fop/render/afp/AFPRendererImageInfo.java13
-rw-r--r--src/java/org/apache/fop/render/afp/AbstractAFPImageHandlerRawStream.java79
9 files changed, 121 insertions, 108 deletions
diff --git a/src/java/org/apache/fop/render/afp/AFPImageHandler.java b/src/java/org/apache/fop/render/afp/AFPImageHandler.java
index 8e925d460..3ec3ea0b1 100644
--- a/src/java/org/apache/fop/render/afp/AFPImageHandler.java
+++ b/src/java/org/apache/fop/render/afp/AFPImageHandler.java
@@ -31,6 +31,9 @@ import org.apache.fop.afp.AFPResourceInfo;
import org.apache.fop.afp.AFPUnitConverter;
import org.apache.fop.render.ImageHandler;
+/**
+ * A base abstract AFP image handler
+ */
public abstract class AFPImageHandler implements ImageHandler {
private static final int X = 0;
private static final int Y = 1;
diff --git a/src/java/org/apache/fop/render/afp/AFPImageHandlerGraphics2D.java b/src/java/org/apache/fop/render/afp/AFPImageHandlerGraphics2D.java
index fa3f00cdb..0780e8a59 100644
--- a/src/java/org/apache/fop/render/afp/AFPImageHandlerGraphics2D.java
+++ b/src/java/org/apache/fop/render/afp/AFPImageHandlerGraphics2D.java
@@ -41,10 +41,6 @@ public class AFPImageHandlerGraphics2D extends AFPImageHandler {
ImageFlavor.GRAPHICS2D
};
- private static final Class[] CLASSES = new Class[] {
- ImageGraphics2D.class
- };
-
/** {@inheritDoc} */
public AFPDataObjectInfo generateDataObjectInfo(
AFPRendererImageInfo rendererImageInfo) throws IOException {
@@ -98,8 +94,8 @@ public class AFPImageHandlerGraphics2D extends AFPImageHandler {
}
/** {@inheritDoc} */
- public Class[] getSupportedImageClasses() {
- return CLASSES;
+ public Class getSupportedImageClass() {
+ return ImageGraphics2D.class;
}
/** {@inheritDoc} */
diff --git a/src/java/org/apache/fop/render/afp/AFPImageHandlerRawCCITTFax.java b/src/java/org/apache/fop/render/afp/AFPImageHandlerRawCCITTFax.java
index aa91bb660..3ac1d5696 100644
--- a/src/java/org/apache/fop/render/afp/AFPImageHandlerRawCCITTFax.java
+++ b/src/java/org/apache/fop/render/afp/AFPImageHandlerRawCCITTFax.java
@@ -23,24 +23,18 @@ import java.io.IOException;
import org.apache.fop.afp.AFPDataObjectInfo;
import org.apache.fop.afp.AFPImageObjectInfo;
-import org.apache.fop.afp.AFPObjectAreaInfo;
import org.apache.xmlgraphics.image.loader.ImageFlavor;
-import org.apache.xmlgraphics.image.loader.ImageSize;
import org.apache.xmlgraphics.image.loader.impl.ImageRawCCITTFax;
/**
- * PDFImageHandler implementation which handles CCITT encoded images (CCITT fax group 3/4).
+ * AFPImageHandler implementation which handles CCITT encoded images (CCITT fax group 3/4).
*/
-public class AFPImageHandlerRawCCITTFax extends AFPImageHandler {
+public class AFPImageHandlerRawCCITTFax extends AbstractAFPImageHandlerRawStream {
private static final ImageFlavor[] FLAVORS = new ImageFlavor[] {
ImageFlavor.RAW_CCITTFAX,
};
- private static final Class[] CLASSES = new Class[] {
- ImageRawCCITTFax.class,
- };
-
/** {@inheritDoc} */
public AFPDataObjectInfo generateDataObjectInfo(
AFPRendererImageInfo rendererImageInfo) throws IOException {
@@ -48,18 +42,10 @@ public class AFPImageHandlerRawCCITTFax extends AFPImageHandler {
= (AFPImageObjectInfo)super.generateDataObjectInfo(rendererImageInfo);
ImageRawCCITTFax ccitt = (ImageRawCCITTFax) rendererImageInfo.getImage();
- imageObjectInfo.setCompression(ccitt.getCompression());
-
- AFPObjectAreaInfo objectAreaInfo = imageObjectInfo.getObjectAreaInfo();
- ImageSize imageSize = ccitt.getSize();
- int widthRes = (int) (imageSize.getDpiHorizontal() * 10);
- objectAreaInfo.setWidthRes(widthRes);
-
- int heightRes = (int) (imageSize.getDpiVertical() * 10);
- objectAreaInfo.setHeightRes(heightRes);
-
- imageObjectInfo.setInputStream(ccitt.createInputStream());
+ int compression = ccitt.getCompression();
+ imageObjectInfo.setCompression(compression);
+ imageObjectInfo.setBitsPerPixel(1);
return imageObjectInfo;
}
@@ -74,8 +60,8 @@ public class AFPImageHandlerRawCCITTFax extends AFPImageHandler {
}
/** {@inheritDoc} */
- public Class[] getSupportedImageClasses() {
- return CLASSES;
+ public Class getSupportedImageClass() {
+ return ImageRawCCITTFax.class;
}
/** {@inheritDoc} */
diff --git a/src/java/org/apache/fop/render/afp/AFPImageHandlerRawStream.java b/src/java/org/apache/fop/render/afp/AFPImageHandlerRawStream.java
index 47344b200..ded9ec9d5 100644
--- a/src/java/org/apache/fop/render/afp/AFPImageHandlerRawStream.java
+++ b/src/java/org/apache/fop/render/afp/AFPImageHandlerRawStream.java
@@ -19,76 +19,28 @@
package org.apache.fop.render.afp;
-import java.io.IOException;
-import java.io.InputStream;
-
import org.apache.fop.afp.AFPDataObjectInfo;
-import org.apache.fop.afp.AFPObjectAreaInfo;
-import org.apache.fop.afp.AFPPaintingState;
import org.apache.xmlgraphics.image.loader.ImageFlavor;
-import org.apache.xmlgraphics.image.loader.ImageInfo;
-import org.apache.xmlgraphics.image.loader.impl.ImageRawCCITTFax;
-import org.apache.xmlgraphics.image.loader.impl.ImageRawEPS;
-import org.apache.xmlgraphics.image.loader.impl.ImageRawJPEG;
import org.apache.xmlgraphics.image.loader.impl.ImageRawStream;
/**
* AFPImageHandler implementation which handles raw stream images.
*/
-public class AFPImageHandlerRawStream extends AFPImageHandler {
+public class AFPImageHandlerRawStream extends AbstractAFPImageHandlerRawStream {
private static final ImageFlavor[] FLAVORS = new ImageFlavor[] {
ImageFlavor.RAW_JPEG,
- ImageFlavor.RAW_CCITTFAX,
ImageFlavor.RAW_EPS,
};
- private static final Class[] CLASSES = new Class[] {
- ImageRawJPEG.class,
- ImageRawCCITTFax.class,
- ImageRawEPS.class
- };
-
- /** {@inheritDoc} */
- public AFPDataObjectInfo generateDataObjectInfo(
- AFPRendererImageInfo rendererImageInfo) throws IOException {
- AFPDataObjectInfo dataObjectInfo = super.generateDataObjectInfo(rendererImageInfo);
- ImageInfo imageInfo = rendererImageInfo.getImageInfo();
- String mimeType = imageInfo.getMimeType();
- if (mimeType != null) {
- dataObjectInfo.setMimeType(mimeType);
- }
- ImageRawStream rawStream = (ImageRawStream) rendererImageInfo.getImage();
-
- AFPObjectAreaInfo objectAreaInfo = dataObjectInfo.getObjectAreaInfo();
-
- AFPRendererContext rendererContext
- = (AFPRendererContext)rendererImageInfo.getRendererContext();
- AFPInfo afpInfo = rendererContext.getInfo();
- AFPPaintingState paintingState = afpInfo.getPaintingState();
- int resolution = paintingState.getResolution();
- objectAreaInfo.setWidthRes(resolution);
- objectAreaInfo.setHeightRes(resolution);
-
- InputStream inputStream = rawStream.createInputStream();
- dataObjectInfo.setInputStream(inputStream);
-
- int dataHeight = rawStream.getSize().getHeightPx();
- dataObjectInfo.setDataHeight(dataHeight);
-
- int dataWidth = rawStream.getSize().getWidthPx();
- dataObjectInfo.setDataWidth(dataWidth);
- return dataObjectInfo;
- }
-
/** {@inheritDoc} */
public int getPriority() {
- return 100;
+ return 200;
}
/** {@inheritDoc} */
- public Class[] getSupportedImageClasses() {
- return CLASSES;
+ public Class getSupportedImageClass() {
+ return ImageRawStream.class;
}
/** {@inheritDoc} */
diff --git a/src/java/org/apache/fop/render/afp/AFPImageHandlerRenderedImage.java b/src/java/org/apache/fop/render/afp/AFPImageHandlerRenderedImage.java
index ef6a6bb65..28c942a08 100644
--- a/src/java/org/apache/fop/render/afp/AFPImageHandlerRenderedImage.java
+++ b/src/java/org/apache/fop/render/afp/AFPImageHandlerRenderedImage.java
@@ -28,7 +28,6 @@ import org.apache.fop.afp.AFPImageObjectInfo;
import org.apache.fop.afp.AFPObjectAreaInfo;
import org.apache.fop.afp.AFPPaintingState;
import org.apache.xmlgraphics.image.loader.ImageFlavor;
-import org.apache.xmlgraphics.image.loader.impl.ImageBuffered;
import org.apache.xmlgraphics.image.loader.impl.ImageRendered;
import org.apache.xmlgraphics.ps.ImageEncodingHelper;
import org.apache.xmlgraphics.util.MimeConstants;
@@ -43,27 +42,21 @@ public class AFPImageHandlerRenderedImage extends AFPImageHandler {
ImageFlavor.RENDERED_IMAGE
};
- private static final Class[] CLASSES = new Class[] {
- ImageBuffered.class,
- ImageRendered.class
- };
-
/** {@inheritDoc} */
public AFPDataObjectInfo generateDataObjectInfo(
AFPRendererImageInfo rendererImageInfo) throws IOException {
AFPImageObjectInfo imageObjectInfo
= (AFPImageObjectInfo)super.generateDataObjectInfo(rendererImageInfo);
- imageObjectInfo.setMimeType(MimeConstants.MIME_AFP_IOCA_FS45);
-
- AFPObjectAreaInfo objectAreaInfo = imageObjectInfo.getObjectAreaInfo();
AFPRendererContext rendererContext
= (AFPRendererContext)rendererImageInfo.getRendererContext();
AFPInfo afpInfo = rendererContext.getInfo();
AFPPaintingState paintingState = afpInfo.getPaintingState();
int resolution = paintingState.getResolution();
- objectAreaInfo.setWidthRes(resolution);
- objectAreaInfo.setHeightRes(resolution);
+
+ imageObjectInfo.setMimeType(MimeConstants.MIME_AFP_IOCA_FS45);
+ imageObjectInfo.setDataHeightRes(resolution);
+ imageObjectInfo.setDataWidthRes(resolution);
ImageRendered imageRendered = (ImageRendered) rendererImageInfo.img;
RenderedImage renderedImage = imageRendered.getRenderedImage();
@@ -92,6 +85,11 @@ public class AFPImageHandlerRenderedImage extends AFPImageHandler {
}
imageObjectInfo.setData(imageData);
+ // set object area info
+ AFPObjectAreaInfo objectAreaInfo = imageObjectInfo.getObjectAreaInfo();
+ objectAreaInfo.setWidthRes(resolution);
+ objectAreaInfo.setHeightRes(resolution);
+
return imageObjectInfo;
}
@@ -106,8 +104,8 @@ public class AFPImageHandlerRenderedImage extends AFPImageHandler {
}
/** {@inheritDoc} */
- public Class[] getSupportedImageClasses() {
- return CLASSES;
+ public Class getSupportedImageClass() {
+ return ImageRendered.class;
}
/** {@inheritDoc} */
diff --git a/src/java/org/apache/fop/render/afp/AFPImageHandlerXML.java b/src/java/org/apache/fop/render/afp/AFPImageHandlerXML.java
index b7345811a..7ea1a7a10 100644
--- a/src/java/org/apache/fop/render/afp/AFPImageHandlerXML.java
+++ b/src/java/org/apache/fop/render/afp/AFPImageHandlerXML.java
@@ -39,10 +39,6 @@ public class AFPImageHandlerXML extends AFPImageHandler {
ImageFlavor.XML_DOM,
};
- private static final Class[] CLASSES = new Class[] {
- ImageXMLDOM.class,
- };
-
/** {@inheritDoc} */
public AFPDataObjectInfo generateDataObjectInfo(AFPRendererImageInfo rendererImageInfo)
throws IOException {
@@ -64,8 +60,8 @@ public class AFPImageHandlerXML extends AFPImageHandler {
}
/** {@inheritDoc} */
- public Class[] getSupportedImageClasses() {
- return CLASSES;
+ public Class getSupportedImageClass() {
+ return ImageXMLDOM.class;
}
/** {@inheritDoc} */
diff --git a/src/java/org/apache/fop/render/afp/AFPRenderer.java b/src/java/org/apache/fop/render/afp/AFPRenderer.java
index 903099610..b73b036c3 100644
--- a/src/java/org/apache/fop/render/afp/AFPRenderer.java
+++ b/src/java/org/apache/fop/render/afp/AFPRenderer.java
@@ -71,7 +71,6 @@ import org.apache.fop.render.Graphics2DAdapter;
import org.apache.fop.render.RendererContext;
import org.apache.fop.render.afp.extensions.AFPElementMapping;
import org.apache.fop.render.afp.extensions.AFPPageSetup;
-import org.apache.fop.util.AbstractPaintingState;
import org.apache.xmlgraphics.image.loader.ImageException;
import org.apache.xmlgraphics.image.loader.ImageFlavor;
import org.apache.xmlgraphics.image.loader.ImageInfo;
@@ -743,15 +742,6 @@ public class AFPRenderer extends AbstractPathOrientedRenderer {
}
/**
- * Returns the current AFP state
- *
- * @return the current AFP state
- */
- public AbstractPaintingState getState() {
- return this.paintingState;
- }
-
- /**
* Sets the default resource group file path
* @param filePath the default resource group file path
*/
diff --git a/src/java/org/apache/fop/render/afp/AFPRendererImageInfo.java b/src/java/org/apache/fop/render/afp/AFPRendererImageInfo.java
index 0aa3eb6ab..2687d9071 100644
--- a/src/java/org/apache/fop/render/afp/AFPRendererImageInfo.java
+++ b/src/java/org/apache/fop/render/afp/AFPRendererImageInfo.java
@@ -146,4 +146,17 @@ public class AFPRendererImageInfo {
return this.pos;
}
+ /** {@inheritDoc} */
+ public String toString() {
+ return "AFPRendererImageInfo{\n"
+ + "\turi=" + uri + ",\n"
+ + "\tinfo=" + info + ",\n"
+ + "\tpos=" + pos + ",\n"
+ + "\torigin=" + origin + ",\n"
+ + "\timg=" + img + ",\n"
+ + "\tforeignAttributes=" + foreignAttributes + ",\n"
+ + "\trendererContext=" + rendererContext + "\n"
+ + "}";
+
+ }
}
diff --git a/src/java/org/apache/fop/render/afp/AbstractAFPImageHandlerRawStream.java b/src/java/org/apache/fop/render/afp/AbstractAFPImageHandlerRawStream.java
new file mode 100644
index 000000000..ae8ac9950
--- /dev/null
+++ b/src/java/org/apache/fop/render/afp/AbstractAFPImageHandlerRawStream.java
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* $Id$ */
+
+package org.apache.fop.render.afp;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.fop.afp.AFPDataObjectInfo;
+import org.apache.fop.afp.AFPObjectAreaInfo;
+import org.apache.fop.afp.AFPPaintingState;
+import org.apache.xmlgraphics.image.loader.ImageInfo;
+import org.apache.xmlgraphics.image.loader.ImageSize;
+import org.apache.xmlgraphics.image.loader.impl.ImageRawStream;
+
+/**
+ * A base abstract AFP raw stream image handler
+ */
+public abstract class AbstractAFPImageHandlerRawStream extends AFPImageHandler {
+
+ /** {@inheritDoc} */
+ public AFPDataObjectInfo generateDataObjectInfo(
+ AFPRendererImageInfo rendererImageInfo) throws IOException {
+ AFPDataObjectInfo dataObjectInfo = super.generateDataObjectInfo(rendererImageInfo);
+
+ ImageInfo imageInfo = rendererImageInfo.getImageInfo();
+ String mimeType = imageInfo.getMimeType();
+ if (mimeType != null) {
+ dataObjectInfo.setMimeType(mimeType);
+ }
+ ImageRawStream rawStream = (ImageRawStream) rendererImageInfo.getImage();
+ InputStream inputStream = rawStream.createInputStream();
+ try {
+ dataObjectInfo.setData(IOUtils.toByteArray(inputStream));
+ } finally {
+ IOUtils.closeQuietly(inputStream);
+ }
+
+ int dataHeight = rawStream.getSize().getHeightPx();
+ dataObjectInfo.setDataHeight(dataHeight);
+
+ int dataWidth = rawStream.getSize().getWidthPx();
+ dataObjectInfo.setDataWidth(dataWidth);
+
+ ImageSize imageSize = rawStream.getSize();
+ dataObjectInfo.setDataHeightRes((int) (imageSize.getDpiHorizontal() * 10));
+ dataObjectInfo.setDataWidthRes((int) (imageSize.getDpiVertical() * 10));
+
+ // set object area info
+ AFPObjectAreaInfo objectAreaInfo = dataObjectInfo.getObjectAreaInfo();
+ AFPRendererContext rendererContext
+ = (AFPRendererContext)rendererImageInfo.getRendererContext();
+ AFPInfo afpInfo = rendererContext.getInfo();
+ AFPPaintingState paintingState = afpInfo.getPaintingState();
+ int resolution = paintingState.getResolution();
+ objectAreaInfo.setWidthRes(resolution);
+ objectAreaInfo.setHeightRes(resolution);
+
+ return dataObjectInfo;
+ }
+
+}