aboutsummaryrefslogtreecommitdiffstats
path: root/test/java/org/apache/fop/visual/BitmapProducerJava2D.java
diff options
context:
space:
mode:
Diffstat (limited to 'test/java/org/apache/fop/visual/BitmapProducerJava2D.java')
-rw-r--r--test/java/org/apache/fop/visual/BitmapProducerJava2D.java97
1 files changed, 97 insertions, 0 deletions
diff --git a/test/java/org/apache/fop/visual/BitmapProducerJava2D.java b/test/java/org/apache/fop/visual/BitmapProducerJava2D.java
new file mode 100644
index 000000000..f2894850d
--- /dev/null
+++ b/test/java/org/apache/fop/visual/BitmapProducerJava2D.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed 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.visual;
+
+import java.awt.image.BufferedImage;
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.OutputStream;
+
+import javax.xml.transform.Transformer;
+import javax.xml.transform.sax.SAXResult;
+import javax.xml.transform.stream.StreamSource;
+
+import org.apache.avalon.framework.configuration.Configurable;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.commons.io.IOUtils;
+import org.apache.fop.apps.FOUserAgent;
+import org.apache.fop.apps.Fop;
+import org.apache.fop.fo.Constants;
+
+/**
+ * BitmapProducer implementation that uses the Java2DRenderer to create bitmaps.
+ * <p>
+ * Here's what the configuration element looks like for the class:
+ * <p>
+ * <pre>
+ * <producer classname="org.apache.fop.visual.BitmapProducerJava2D">
+ * <delete-temp-files>false</delete-temp-files>
+ * </producer>
+ * </pre>
+ * <p>
+ * The "delete-temp-files" element is optional and defaults to true.
+ */
+public class BitmapProducerJava2D extends AbstractBitmapProducer implements Configurable {
+
+ private boolean deleteTempFiles;
+
+ /** @see org.apache.avalon.framework.configuration.Configurable */
+ public void configure(Configuration cfg) throws ConfigurationException {
+ this.deleteTempFiles = cfg.getChild("delete-temp-files").getValueAsBoolean(true);
+ }
+
+ /** @see org.apache.fop.visual.BitmapProducer */
+ public BufferedImage produce(File src, ProducerContext context) {
+ try {
+ FOUserAgent userAgent = new FOUserAgent();
+ userAgent.setResolution(context.getResolution());
+ userAgent.setBaseURL(src.getParentFile().toURL().toString());
+
+ File outputFile = new File(context.getTargetDir(), src.getName() + ".java2d.png");
+ OutputStream out = new FileOutputStream(outputFile);
+ out = new BufferedOutputStream(out);
+ try {
+ Fop fop = new Fop(Constants.RENDER_PNG, userAgent);
+ fop.setOutputStream(out);
+ SAXResult res = new SAXResult(fop.getDefaultHandler());
+
+ Transformer transformer = getTransformer(context);
+ transformer.transform(new StreamSource(src), res);
+ } finally {
+ IOUtils.closeQuietly(out);
+ }
+
+ BufferedImage img = BitmapComparator.getImage(outputFile);
+ if (deleteTempFiles) {
+ if (!outputFile.delete()) {
+ log.warn("Cannot delete " + outputFile);
+ outputFile.deleteOnExit();
+ }
+ }
+ return img;
+ } catch (Exception e) {
+ e.printStackTrace();
+ log.error(e);
+ return null;
+ }
+ }
+
+}