You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by je...@apache.org on 2005/12/20 13:54:07 UTC
svn commit: r357982 - in /xmlgraphics/fop/trunk/src/java/org/apache/fop:
area/Area.java area/AreaTreeHandler.java area/CachedRenderPagesModel.java
area/LineArea.java area/RenderPagesModel.java area/Trait.java
traits/BorderProps.java
Author: jeremias
Date: Tue Dec 20 04:53:50 2005
New Revision: 357982
URL: http://svn.apache.org/viewcvs?rev=357982&view=rev
Log:
First step towards reactivating CachedRenderPagesModel (helps preparing for the intermediate format).
Fix some serialization problems in the area tree.
Modified:
xmlgraphics/fop/trunk/src/java/org/apache/fop/area/Area.java (contents, props changed)
xmlgraphics/fop/trunk/src/java/org/apache/fop/area/AreaTreeHandler.java
xmlgraphics/fop/trunk/src/java/org/apache/fop/area/CachedRenderPagesModel.java (contents, props changed)
xmlgraphics/fop/trunk/src/java/org/apache/fop/area/LineArea.java (contents, props changed)
xmlgraphics/fop/trunk/src/java/org/apache/fop/area/RenderPagesModel.java (contents, props changed)
xmlgraphics/fop/trunk/src/java/org/apache/fop/area/Trait.java
xmlgraphics/fop/trunk/src/java/org/apache/fop/traits/BorderProps.java (contents, props changed)
Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/area/Area.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/src/java/org/apache/fop/area/Area.java?rev=357982&r1=357981&r2=357982&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/area/Area.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/area/Area.java Tue Dec 20 04:53:50 2005
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-/* $Id: Area.java,v 1.2 2004/02/27 17:41:26 jeremias Exp $ */
+/* $Id$ */
package org.apache.fop.area;
@@ -25,6 +25,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.fop.datatypes.ColorType;
import org.apache.fop.traits.BorderProps;
// If the area appears more than once in the output
@@ -390,7 +391,11 @@
if (props == null) {
props = new java.util.HashMap(20);
}
- props.put(traitCode, prop);
+ if (prop instanceof ColorType) {
+ props.put(traitCode, Trait.Color.makeSerializable((ColorType)prop));
+ } else {
+ props.put(traitCode, prop);
+ }
}
/**
Propchange: xmlgraphics/fop/trunk/src/java/org/apache/fop/area/Area.java
------------------------------------------------------------------------------
svn:keywords = Id
Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/area/AreaTreeHandler.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/src/java/org/apache/fop/area/AreaTreeHandler.java?rev=357982&r1=357981&r2=357982&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/area/AreaTreeHandler.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/area/AreaTreeHandler.java Tue Dec 20 04:53:50 2005
@@ -80,8 +80,8 @@
// the LayoutManager maker
private LayoutManagerMaker lmMaker;
- // AreaTreeModel in use
- private AreaTreeModel model;
+ /** AreaTreeModel in use */
+ protected AreaTreeModel model;
// The fo:root node of the document
private Root rootFObj;
@@ -111,8 +111,7 @@
OutputStream stream) throws FOPException {
super(userAgent);
- model = new RenderPagesModel(userAgent, outputFormat, fontInfo,
- stream);
+ setupModel(userAgent, outputFormat, stream);
lmMaker = userAgent.getLayoutManagerMakerOverride();
if (lmMaker == null) {
@@ -126,6 +125,19 @@
}
}
+ /**
+ * Sets up the AreaTreeModel instance for use by the AreaTreeHandler.
+ * @param userAgent FOUserAgent object for process
+ * @param outputFormat the MIME type of the output format to use (ex. "application/pdf").
+ * @param stream OutputStream
+ * @throws FOPException if the RenderPagesModel cannot be created
+ */
+ protected void setupModel(FOUserAgent userAgent, String outputFormat,
+ OutputStream stream) throws FOPException {
+ model = new RenderPagesModel(userAgent, outputFormat, fontInfo,
+ stream);
+ }
+
/**
* Get the area tree model for this area tree.
*
Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/area/CachedRenderPagesModel.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/src/java/org/apache/fop/area/CachedRenderPagesModel.java?rev=357982&r1=357981&r2=357982&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/area/CachedRenderPagesModel.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/area/CachedRenderPagesModel.java Tue Dec 20 04:53:50 2005
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2004 The Apache Software Foundation.
+ * Copyright 1999-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.
@@ -18,9 +18,11 @@
package org.apache.fop.area;
+import org.apache.commons.io.IOUtils;
import org.apache.fop.apps.FOPException;
import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.fonts.FontInfo;
+import org.xml.sax.SAXException;
import java.util.Map;
import java.util.HashMap;
@@ -44,13 +46,21 @@
public class CachedRenderPagesModel extends RenderPagesModel {
private Map pageMap = new HashMap();
+ /** Base directory to save temporary file in, typically points to the user's temp dir. */
+ protected File baseDir;
+
/**
- * Constructor
- * @see org.apache.fop.area.RenderPagesModel#RenderPagesModel(FOUserAgent, String, FontInfo, OutputStream)
+ * Main Constructor
+ * @param userAgent FOUserAgent object for process
+ * @param outputFormat the MIME type of the output format to use (ex. "application/pdf").
+ * @param fontInfo FontInfo object
+ * @param stream OutputStream
+ * @throws FOPException if the renderer cannot be properly initialized
*/
public CachedRenderPagesModel (FOUserAgent userAgent, String outputFormat,
FontInfo fontInfo, OutputStream stream) throws FOPException {
super(userAgent, outputFormat, fontInfo, stream);
+ this.baseDir = new File(System.getProperty("java.io.tmpdir"));
}
/**
@@ -64,14 +74,19 @@
try {
// load page from cache
String name = (String)pageMap.get(p);
- File temp = new File(name);
- log.debug("page serialized to: " + temp.length());
+ File tempFile = new File(baseDir, name);
+ log.debug("Loading page from: " + tempFile);
ObjectInputStream in = new ObjectInputStream(
new BufferedInputStream(
- new FileInputStream(temp)));
- p.loadPage(in);
- in.close();
- temp.delete();
+ new FileInputStream(tempFile)));
+ try {
+ p.loadPage(in);
+ } finally {
+ IOUtils.closeQuietly(in);
+ }
+ if (!tempFile.delete()) {
+ log.warn("Temporary file could not be deleted: " + tempFile);
+ }
pageMap.remove(p);
} catch (Exception e) {
log.error(e);
@@ -102,6 +117,7 @@
}
if (newpage != null && newpage.getPage() != null) {
savePage(newpage);
+ newpage.clear();
}
return renderer.supportsOutOfOrder() || prepared.isEmpty();
}
@@ -116,15 +132,28 @@
try {
// save page to cache
ObjectOutputStream tempstream;
- String fname = "page" + page.toString() + ".ser";
+ String fname = "fop-page-" + page.toString() + ".ser";
+ File tempFile = new File(baseDir, fname);
+ tempFile.deleteOnExit();
tempstream = new ObjectOutputStream(new BufferedOutputStream(
- new FileOutputStream(fname)));
- page.savePage(tempstream);
- tempstream.close();
+ new FileOutputStream(tempFile)));
+ try {
+ page.savePage(tempstream);
+ } finally {
+ IOUtils.closeQuietly(tempstream);
+ }
pageMap.put(page, fname);
+ if (log.isDebugEnabled()) {
+ log.debug("Page saved to temporary file: " + tempFile);
+ }
} catch (Exception e) {
log.error(e);
}
+ }
+
+ /** @see org.apache.fop.area.RenderPagesModel#endDocument() */
+ public void endDocument() throws SAXException {
+ super.endDocument();
}
}
Propchange: xmlgraphics/fop/trunk/src/java/org/apache/fop/area/CachedRenderPagesModel.java
------------------------------------------------------------------------------
svn:keywords = Id
Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/area/LineArea.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/src/java/org/apache/fop/area/LineArea.java?rev=357982&r1=357981&r2=357982&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/area/LineArea.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/area/LineArea.java Tue Dec 20 04:53:50 2005
@@ -21,6 +21,7 @@
import org.apache.fop.area.inline.InlineArea;
import org.apache.fop.fo.Constants;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
@@ -35,7 +36,7 @@
* that can be used in order to re-compute adjustement and / or indents when a
* page-number or a page-number-citation is resolved
*/
- private class LineAdjustingInfo {
+ private class LineAdjustingInfo implements Serializable {
private int lineAlignment;
private int difference;
private int availableStretch;
Propchange: xmlgraphics/fop/trunk/src/java/org/apache/fop/area/LineArea.java
------------------------------------------------------------------------------
svn:keywords = Id
Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/area/RenderPagesModel.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/src/java/org/apache/fop/area/RenderPagesModel.java?rev=357982&r1=357981&r2=357982&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/area/RenderPagesModel.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/area/RenderPagesModel.java Tue Dec 20 04:53:50 2005
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2004 The Apache Software Foundation.
+ * Copyright 1999-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.
@@ -32,7 +32,6 @@
import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.fonts.FontInfo;
import org.apache.fop.render.Renderer;
-import org.apache.fop.render.RendererFactory;
/**
* This uses the AreaTreeModel to store the pages
@@ -109,8 +108,8 @@
// it is more appropriate to do this after queued pages but
// it will mean that the renderer has not prepared a page that
// could be referenced
- boolean done = renderer.supportsOutOfOrder() && page.isResolved();
- if (done) {
+ boolean ready = renderer.supportsOutOfOrder() && page.isResolved();
+ if (ready) {
try {
renderer.renderPage(page);
} catch (Exception e) {
Propchange: xmlgraphics/fop/trunk/src/java/org/apache/fop/area/RenderPagesModel.java
------------------------------------------------------------------------------
svn:keywords = Id
Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/area/Trait.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/src/java/org/apache/fop/area/Trait.java?rev=357982&r1=357981&r2=357982&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/area/Trait.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/area/Trait.java Tue Dec 20 04:53:50 2005
@@ -423,6 +423,79 @@
}
/**
+ * Serializable ColorType implementation for the area tree.
+ * @TODO Think about switching to java.awt.Color entirely!
+ */
+ public static class Color implements ColorType, Serializable {
+
+ private float red;
+ private float green;
+ private float blue;
+ private float alpha;
+
+ /**
+ * Creates a new Color instance
+ * @param r the red component
+ * @param g the green component
+ * @param b the blue component
+ * @param a the alpha component
+ */
+ public Color(float r, float g, float b, float a) {
+ this.red = r;
+ this.green = g;
+ this.blue = b;
+ this.alpha = a;
+ }
+
+ /**
+ * Copy constructor
+ * @param col the ColorType instance which shall be duplicated
+ */
+ public Color(ColorType col) {
+ this(col.getRed(), col.getGreen(), col.getBlue(), col.getAlpha());
+ }
+
+ /** @see org.apache.fop.datatypes.ColorType#getRed() */
+ public float getRed() {
+ return this.red;
+ }
+
+ /** @see org.apache.fop.datatypes.ColorType#getGreen() */
+ public float getGreen() {
+ return this.green;
+ }
+
+ /** @see org.apache.fop.datatypes.ColorType#getBlue() */
+ public float getBlue() {
+ return this.blue;
+ }
+
+ /** @see org.apache.fop.datatypes.ColorType#getAlpha() */
+ public float getAlpha() {
+ return this.alpha;
+ }
+
+ /** @see org.apache.fop.datatypes.ColorType#getAWTColor() */
+ public java.awt.Color getAWTColor() {
+ return new java.awt.Color(red, green, blue, alpha);
+ }
+
+ /**
+ * Converts a given color to a serializable instance if necessary.
+ * @param col the color
+ * @return the serializable color value.
+ */
+ public static ColorType makeSerializable(ColorType col) {
+ if (col instanceof Serializable) {
+ return col;
+ } else {
+ return new Color(col);
+ }
+ }
+
+ }
+
+ /**
* Background trait structure.
* Used for storing back trait information which are related.
*/
@@ -499,7 +572,7 @@
* @param color The color to set
*/
public void setColor(ColorType color) {
- this.color = color;
+ this.color = Color.makeSerializable(color);
}
/**
Modified: xmlgraphics/fop/trunk/src/java/org/apache/fop/traits/BorderProps.java
URL: http://svn.apache.org/viewcvs/xmlgraphics/fop/trunk/src/java/org/apache/fop/traits/BorderProps.java?rev=357982&r1=357981&r2=357982&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/traits/BorderProps.java (original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/traits/BorderProps.java Tue Dec 20 04:53:50 2005
@@ -18,6 +18,7 @@
package org.apache.fop.traits;
+import org.apache.fop.area.Trait;
import org.apache.fop.datatypes.ColorType;
import org.apache.fop.fo.Constants;
@@ -55,7 +56,7 @@
public BorderProps(int style, int width, ColorType color, int mode) {
this.style = style;
this.width = width;
- this.color = color;
+ this.color = Trait.Color.makeSerializable(color);
this.mode = mode;
}
Propchange: xmlgraphics/fop/trunk/src/java/org/apache/fop/traits/BorderProps.java
------------------------------------------------------------------------------
svn:keywords = Id
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org