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 2003/01/08 15:04:29 UTC
cvs commit: xml-fop/src/org/apache/fop/tools AreaTreeBuilder.java
jeremias 2003/01/08 06:04:29
Modified: src/org/apache/fop/tools AreaTreeBuilder.java
Log:
Adjustments for font refactoring
Lots of Javadocs
Fixed Checkstyle errors
Revision Changes Path
1.15 +101 -55 xml-fop/src/org/apache/fop/tools/AreaTreeBuilder.java
Index: AreaTreeBuilder.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/tools/AreaTreeBuilder.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- AreaTreeBuilder.java 22 Dec 2002 22:40:31 -0000 1.14
+++ AreaTreeBuilder.java 8 Jan 2003 14:04:28 -0000 1.15
@@ -1,45 +1,76 @@
/*
* $Id$
- * Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
+ * Copyright (C) 2001-2003 The Apache Software Foundation. All rights reserved.
* For details on use and redistribution please refer to the
* LICENSE file included with these sources.
*/
package org.apache.fop.tools;
-// FOP
-import org.apache.fop.area.*;
-import org.apache.fop.area.inline.*;
-import org.apache.fop.area.inline.Character;
-import org.apache.fop.render.*;
-import org.apache.fop.render.pdf.*;
-import org.apache.fop.render.svg.*;
-import org.apache.fop.render.xml.*;
-import org.apache.fop.layout.FontInfo;
-import org.apache.fop.layout.FontState;
-import org.apache.fop.layout.FontMetric;
-import org.apache.fop.fo.FOUserAgent;
-import org.apache.fop.fo.properties.RuleStyle;
-
-// Avalon
-import org.apache.avalon.framework.logger.ConsoleLogger;
-import org.apache.avalon.framework.logger.AbstractLogEnabled;
-
// Java
-import java.io.*;
-import java.util.*;
import java.awt.geom.Rectangle2D;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.List;
import java.util.StringTokenizer;
// JAXP
import javax.xml.parsers.DocumentBuilderFactory;
// DOM
-import org.w3c.dom.*;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Element;
+import org.w3c.dom.Document;
// Batik
import org.apache.batik.dom.svg.SVGDOMImplementation;
+// FOP
+import org.apache.fop.area.Area;
+import org.apache.fop.area.AreaTree;
+import org.apache.fop.area.AreaTreeModel;
+import org.apache.fop.area.BeforeFloat;
+import org.apache.fop.area.Block;
+import org.apache.fop.area.BodyRegion;
+import org.apache.fop.area.CTM;
+import org.apache.fop.area.Flow;
+import org.apache.fop.area.Footnote;
+import org.apache.fop.area.LineArea;
+import org.apache.fop.area.MainReference;
+import org.apache.fop.area.Page;
+import org.apache.fop.area.PageViewport;
+import org.apache.fop.area.RegionReference;
+import org.apache.fop.area.RegionViewport;
+import org.apache.fop.area.Span;
+import org.apache.fop.area.StorePagesModel;
+import org.apache.fop.area.Title;
+import org.apache.fop.area.Trait;
+import org.apache.fop.area.inline.Character;
+import org.apache.fop.area.inline.Container;
+import org.apache.fop.area.inline.ForeignObject;
+import org.apache.fop.area.inline.Image;
+import org.apache.fop.area.inline.InlineArea;
+import org.apache.fop.area.inline.Leader;
+import org.apache.fop.area.inline.Space;
+import org.apache.fop.area.inline.Viewport;
+import org.apache.fop.area.inline.Word;
+import org.apache.fop.layout.FontInfo;
+import org.apache.fop.layout.FontState;
+import org.apache.fop.render.Renderer;
+import org.apache.fop.render.pdf.PDFRenderer;
+import org.apache.fop.render.svg.SVGRenderer;
+import org.apache.fop.render.xml.XMLRenderer;
+import org.apache.fop.fo.FOUserAgent;
+import org.apache.fop.fo.properties.RuleStyle;
+import org.apache.fop.fonts.FontMetrics;
+
+// Avalon
+import org.apache.avalon.framework.logger.ConsoleLogger;
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+
+
/**
* Area tree tester.
* The purpose of this class is to create and render an area tree
@@ -55,6 +86,8 @@
public class AreaTreeBuilder extends AbstractLogEnabled {
/**
+ * Main method
+ * @param args command line arguments
*/
public static void main(String[] args) {
AreaTreeBuilder atb = new AreaTreeBuilder();
@@ -65,7 +98,10 @@
}
/**
- *
+ * Run the tests.
+ * @param in input filename
+ * @param type output format
+ * @param out output filename
*/
protected void runTests(String in, String type, String out) {
getLogger().debug("Starting tests");
@@ -74,6 +110,10 @@
}
/**
+ * Run a test.
+ * @param in input filename
+ * @param type output format
+ * @param out output filename
*/
protected void runTest(String in, String type, String out) {
Renderer rend = null;
@@ -93,10 +133,11 @@
StorePagesModel sm = AreaTree.createStorePagesModel();
TreeLoader tl = new TreeLoader(fi);
+ setupLogger(tl);
tl.setTreeModel(sm);
try {
InputStream is =
- new BufferedInputStream(new FileInputStream(in));
+ new java.io.BufferedInputStream(new java.io.FileInputStream(in));
tl.buildAreaTree(is);
renderAreaTree(sm, rend, out);
} catch (IOException e) {
@@ -104,11 +145,17 @@
}
}
+ /**
+ * Renders an area tree to a target format using a renderer.
+ * @param sm area tree pages
+ * @param rend renderer to use for output
+ * @param out target filename
+ */
protected void renderAreaTree(StorePagesModel sm,
Renderer rend, String out) {
try {
OutputStream os =
- new BufferedOutputStream(new FileOutputStream(out));
+ new java.io.BufferedOutputStream(new java.io.FileOutputStream(out));
rend.startRenderer(os);
@@ -154,11 +201,11 @@
// this loads an area tree from an xml file
// the xml format is the same as the xml renderer output
-class TreeLoader {
- AreaTree areaTree;
- AreaTreeModel model;
- FontInfo fontInfo;
- FontState currentFontState;
+class TreeLoader extends AbstractLogEnabled {
+ private AreaTree areaTree;
+ private AreaTreeModel model;
+ private FontInfo fontInfo;
+ private FontState currentFontState;
TreeLoader(FontInfo fi) {
fontInfo = fi;
@@ -248,7 +295,7 @@
}
public Page readPage(Element root) {
- String bounds = root.getAttribute("bounds");
+ //String bounds = root.getAttribute("bounds");
Page page = new Page();
NodeList childs = root.getChildNodes();
for (int i = 0; i < childs.getLength(); i++) {
@@ -362,7 +409,7 @@
}
List getSpans(Element root) {
- ArrayList list = new ArrayList();
+ List list = new java.util.ArrayList();
NodeList childs = root.getChildNodes();
for (int i = 0; i < childs.getLength(); i++) {
Node obj = childs.item(i);
@@ -380,7 +427,7 @@
}
List getFlows(Element root) {
- ArrayList list = new ArrayList();
+ List list = new java.util.ArrayList();
NodeList childs = root.getChildNodes();
for (int i = 0; i < childs.getLength(); i++) {
Node obj = childs.item(i);
@@ -409,7 +456,7 @@
List getBlocks(Element root) {
- ArrayList list = new ArrayList();
+ List list = new java.util.ArrayList();
NodeList childs = root.getChildNodes();
for (int i = 0; i < childs.getLength(); i++) {
Node obj = childs.item(i);
@@ -460,7 +507,7 @@
// children of element are inline areas
List getInlineAreas(Element root) {
- ArrayList list = new ArrayList();
+ List list = new java.util.ArrayList();
NodeList childs = root.getChildNodes();
for (int i = 0; i < childs.getLength(); i++) {
Node obj = childs.item(i);
@@ -469,11 +516,11 @@
new Character(getString((Element) obj).charAt(0));
addTraits((Element) obj, ch);
String fname = fontInfo.fontLookup("sans-serif", "normal", FontInfo.NORMAL);
- FontMetric metrics = fontInfo.getMetricsFor(fname);
+ FontMetrics metrics = fontInfo.getMetricsFor(fname);
currentFontState =
new FontState(fname, metrics, 12000);
- ch.setWidth(currentFontState.width(ch.getChar()));
+ ch.setWidth(currentFontState.getWidth(ch.getChar()));
ch.setOffset(currentFontState.getCapHeight());
list.add(ch);
} else if (obj.getNodeName().equals("space")) {
@@ -494,7 +541,7 @@
}
} else if (obj.getNodeName().equals("word")) {
String fname = fontInfo.fontLookup("sans-serif", "normal", FontInfo.NORMAL);
- FontMetric metrics = fontInfo.getMetricsFor(fname);
+ FontMetrics metrics = fontInfo.getMetricsFor(fname);
currentFontState =
new FontState(fname, metrics, 12000);
Word word = getWord((Element) obj);
@@ -563,11 +610,11 @@
DocumentBuilderFactory.newInstance();
fact.setNamespaceAware(true);
- doc = fact. newDocumentBuilder().newDocument();
+ doc = fact.newDocumentBuilder().newDocument();
Node node = doc.importNode(obj, true);
doc.appendChild(node);
- DOMImplementation impl =
- SVGDOMImplementation.getDOMImplementation();
+ //DOMImplementation impl =
+ // SVGDOMImplementation.getDOMImplementation();
// due to namespace problem attributes are not cloned
// serializing causes an npe
//doc = DOMUtilities.deepCloneDocument(doc, impl);
@@ -582,7 +629,7 @@
DocumentBuilderFactory fact =
DocumentBuilderFactory.newInstance();
fact.setNamespaceAware(true);
- doc = fact. newDocumentBuilder().newDocument();
+ doc = fact.newDocumentBuilder().newDocument();
Node node = doc.importNode(obj, true);
doc.appendChild(node);
ForeignObject fo = new ForeignObject(doc, space);
@@ -638,7 +685,7 @@
addTraits(root, word);
int width = 0;
for (int count = 0; count < str.length(); count++) {
- width += currentFontState.width(str.charAt(count));
+ width += currentFontState.getWidth(str.charAt(count));
}
word.setWidth(width);
word.setOffset(currentFontState.getCapHeight());
@@ -654,24 +701,23 @@
String tok = st.nextToken();
int index = tok.indexOf(":");
String id = tok.substring(0, index);
- Object traitCode = Trait.getTraitCode(id);
- if (traitCode != null) {
- area.addTrait(traitCode,
- Trait.makeTraitValue(traitCode,
- tok.substring(index + 1)));
- }
- else {
- System.err.println("Unknown trait: " + id );
- }
+ Object traitCode = Trait.getTraitCode(id);
+ if (traitCode != null) {
+ area.addTrait(traitCode,
+ Trait.makeTraitValue(traitCode,
+ tok.substring(index + 1)));
+ } else {
+ getLogger().error("Unknown trait: " + id);
+ }
}
}
public List getRanges(Element ele) {
- ArrayList list = new ArrayList();
+ List list = new java.util.ArrayList();
String str = ele.getAttribute("ranges");
StringTokenizer st = new StringTokenizer(str, ";");
while (st.hasMoreTokens()) {
- String tok = st.nextToken();
+ /*String tok =*/ st.nextToken();
}
return list;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: fop-cvs-help@xml.apache.org