aboutsummaryrefslogtreecommitdiffstats
path: root/src/documentation/content/xdocs/design/architecture.xml
diff options
context:
space:
mode:
Diffstat (limited to 'src/documentation/content/xdocs/design/architecture.xml')
-rw-r--r--src/documentation/content/xdocs/design/architecture.xml63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/documentation/content/xdocs/design/architecture.xml b/src/documentation/content/xdocs/design/architecture.xml
new file mode 100644
index 000000000..2adab8f1b
--- /dev/null
+++ b/src/documentation/content/xdocs/design/architecture.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd">
+
+<document>
+ <header>
+ <title>Architecture</title>
+ <subtitle>Architecture information for FOP</subtitle>
+ <authors>
+ <person name="Arved Sandstrom" email=""/>
+ </authors>
+ </header>
+
+ <body>
+
+<section>
+ <title>FOP Mechanics</title>
+
+<section>
+ <title>Introduction</title>
+<p>
+The overall process is controlled by <em>org.apache.fop.apps.Driver</em>.
+This class handles the FO Tree building, renderers, output and logging.
+</p>
+<p>
+The process in general is that the FO document is sent to the tree
+builder via SAX events. This creates an FO Tree. The FO Tree is then
+handled by the layout processor which converts the FO Tree into an area
+tree. This area tree is then given to the renderer and the renderer converts
+the area tree into a stream of data containing the output document.
+</p>
+</section>
+
+<section>
+ <title>Formatting Object Tree</title>
+<p>
+The class <em>org.apache.fop.fo.FOTreeBuilder</em> is responsible for
+actually constructing the FO tree. The key SAX events used are </p>
+<p><code>startElement()</code>,</p>
+<p><code>endElement()</code> and <code>characters()</code>.</p>
+
+<p>All formatting objects derive from abstract class
+<em>org.apache.fop.fo.FONode</em>. The other FO classes inherit from
+<em>FONode</em> as follows:</p>
+
+</section>
+
+<section>
+ <title>Rendering</title>
+<p>
+This is a separate process. The <code>render()</code> method in
+<em>Driver</em> is invoked (say,
+by <em>CommandLine</em>) with the laid-out <em>AreaTree</em> and a
+<em>PrintWriter</em> as arguments.
+This actually calls the <code>render()</code> method in a specific implementation of
+the <em>Renderer</em> interface, typically <em>PDFRenderer</em> or
+<em>AWTRenderer</em>.
+</p>
+</section>
+
+</section>
+ </body>
+</document>
+