The trees in FOP
Overview
The FO document. Each XML document and therefore
also an FO document has a hierarchical structure that can be modeled
as a tree.
The FO DOM tree. This tree has the same
hierarchical structure as an FO document, and is often built from an
XML document.
FOP can work from either an FO document or an FO DOM tree.
FOP does not build a DOM tree from an FO document.
The FO tree. FOP builds this tree from either the FO document or
the FO DOM tree. The FO nodes in this tree correspond to the
elements in the FO document or the XML nodes in the FO DOM
tree. Note, however, that they are different from DOM tree
nodes.
When a sufficient part of the FO tree has been built (in
current FOP the subtree of a PageSequence FO node), the layout process
is started. This process builds three trees.
The LM tree. This tree corresponds closely to the FO
tree because each FO node creates a layout manager. But there are
deviations. For example, a BlockLayoutManager creates a
LineLayoutManager for each consecutive sequence of child FO nodes that
generate inline areas.
The BP tree. Each layout manager returns zero or more
BreakPoss to its parent. These BreakPoss are connected to BreakPoss
that the layout manager received from its child layout managers. This
is not a real tree. There are many BP without a parent BP. They are
connected to their siblings by their LM.
The Area tree. Using the information stored in the BP
tree and in the LMs connected with the BPs, layout areas are
constructed. These areas are placed within other areas, which is
expressed in a tree hierarchy.
The tree of BreakPoss
Each LM contains a list of BPs belonging to and returned
to it by the childLMs during the getNextBreakPoss
stack. These are the BPs that end an area of the childLM. The BP
contains an index position.iLeafPos, which connects
it to the BP with that index in the list of BPs of its own LM (the
childLM).
For example, BlockLM's list childBreaks
contains the BPs that end a line (if the childLM is a LineLM).
LineLM's list vecInlineBreaks contains the BPs that
were returned to it as possible linebreaks by TextLM (if the childLM
is a TextLM). TextLM's list vecAreaInfo contains
AreaInfo objects. A BP in BlockLM's list
childBreaks belongs e.g. to a LineLM. Its index
position.iLeafPos points to the BP with that index
in vecInlineBreaks in ListLM. That BP belongs e.g.
to a TextLM, and its index position.iLeafPos points
to the AreaInfo object with that index in
vecAreaInfo in TextLM.
+-----------------+
LM | bp0 bp1 bp2 bp3 |
+-++--++--++--++--+
.......................:|..:| :| :|
: +----------+ | :| :|
: | +----------+ :| :+----------------------+
: | | ........:| :....... |
: | | : | : |
: +----------+---+--+ : +------+------+ : +--------------+------+
LM | bp0 bp1 bp2 bp3 | LM | bp0 bp1 bp2 | LM | bp0 bp1 bp2 bp3 bp4 |
+-----------------+ +-------------+ +---------------------+
The BPs are held in a list by the LM shown in front of
them. They are associated with one of the childLMs, which is shown by
the dotted lines. Their member position.iLeafPos
connects them with the BP in their LM's list with that index, as shown
by the dashed lines.
Example of an FO and area tree
The corresponding FO tree
In the listing below the notation has been shortened;
.[n] denotes the nth child, for which the full
notation is .children.elementData[n] . A number of
static members are not shown.
The root:
root = "fo:root at line 2:44"
root = {
layoutMasterSet: instance of org.apache.fop.fo.pagination.LayoutMasterSet(id=1089)
pageSequences: instance of java.util.ArrayList(id=1102)
runningPageNumberCounter: 0
foTreeControl: instance of org.apache.fop.apps.Document(id=1103)
org.apache.fop.fo.FObj.propertyListTable: instance of org.apache.fop.fo.Property$Maker[248] (id=1094)
org.apache.fop.fo.FObj.propertyList: instance of org.apache.fop.fo.PropertyList(id=1104)
org.apache.fop.fo.FObj.propMgr: instance of org.apache.fop.fo.PropertyManager(id=1105)
org.apache.fop.fo.FObj.id: null
org.apache.fop.fo.FObj.children: instance of java.util.ArrayList(id=1106)
org.apache.fop.fo.FObj.markers: null
org.apache.fop.fo.FObj.systemId: "file:/path/to/fo-file"
org.apache.fop.fo.FObj.line: 2
org.apache.fop.fo.FObj.column: 44
org.apache.fop.fo.FONode.parent: null
org.apache.fop.fo.FONode.name: "fo:root"
}
The root has no properties; the namespace nodes do not result in
properties:
root.propertyList = "{}"
The root has two children:
root.children = "[
fo:layout-master-set at line 3:25
fo:page-sequence at line 12:49
]"
The first child of root is the layout master set:
root.[0] = "fo:layout-master-set at line 3:25"
root.[0] = {
simplePageMasters: instance of java.util.HashMap(id=1111)
pageSequenceMasters: instance of java.util.HashMap(id=1112)
org.apache.fop.fo.FObj.propertyListTable: instance of org.apache.fop.fo.Property$Maker[248] (id=1094)
org.apache.fop.fo.FObj.propertyList: instance of org.apache.fop.fo.PropertyList(id=1113)
org.apache.fop.fo.FObj.propMgr: instance of org.apache.fop.fo.PropertyManager(id=1114)
org.apache.fop.fo.FObj.id: null
org.apache.fop.fo.FObj.children: instance of java.util.ArrayList(id=1115)
org.apache.fop.fo.FObj.markers: null
org.apache.fop.fo.FObj.systemId: "file:/path/to/fo-file"
org.apache.fop.fo.FObj.line: 3
org.apache.fop.fo.FObj.column: 25
org.apache.fop.fo.FONode.parent: instance of org.apache.fop.fo.pagination.Root(id=1088)
org.apache.fop.fo.FONode.name: "fo:layout-master-set"
}
root.[0].propertyList = "{}"
The layout master set contains a simple page master:
root.[0].children = "[
fo:simple-page-master at line 8:28
]"
root.[0].[0] = "fo:simple-page-master at line 8:28"
root.[0].[0] = {
regions: instance of java.util.HashMap(id=1120)
masterName: "simpleA4"
org.apache.fop.fo.FObj.propertyListTable: instance of org.apache.fop.fo.Property$Maker[248] (id=1094)
org.apache.fop.fo.FObj.propertyList: instance of org.apache.fop.fo.PropertyList(id=1122)
org.apache.fop.fo.FObj.propMgr: instance of org.apache.fop.fo.PropertyManager(id=1123)
org.apache.fop.fo.FObj.id: null
org.apache.fop.fo.FObj.children: null
org.apache.fop.fo.FObj.markers: null
org.apache.fop.fo.FObj.systemId: "file:/path/to/fo-file"
org.apache.fop.fo.FObj.line: 8
org.apache.fop.fo.FObj.column: 28
org.apache.fop.fo.FONode.parent: instance of org.apache.fop.fo.pagination.LayoutMasterSet(id=1089)
org.apache.fop.fo.FONode.name: "fo:simple-page-master"
}
The properties of the simple page master:
root.[0].[0].propertyList = "{
master-name=org.apache.fop.fo.StringProperty@1958bf9
margin-top=org.apache.fop.fo.LengthProperty@118958e
margin-right=org.apache.fop.fo.LengthProperty@102b2b6
margin-bottom=org.apache.fop.fo.LengthProperty@22d166
margin-left=org.apache.fop.fo.LengthProperty@1e1962d
page-width=org.apache.fop.fo.LengthProperty@14a75bb
page-height=org.apache.fop.fo.LengthProperty@17779e3
}"
root.[0].[0].propertyList.get("master-name") = {
str: "simpleA4"
org.apache.fop.fo.Property.specVal: null
}
root.[0].[0].propertyList.get("page-height") = {
length: instance of org.apache.fop.datatypes.FixedLength(id=1329)
org.apache.fop.fo.Property.specVal: null
}
root.[0].[0].propertyList.get("page-height").length = "841889mpt"
The simple page master has only one region, the body:
root.[0].[0].regions = "{body=fo:region-body at line 9:24}"
The region body:
root.[0].[0].regions.get("body") = "fo:region-body at line 9:24"
root.[0].[0].regions.get("body") = {
backgroundColor: null
org.apache.fop.fo.pagination.Region.layoutMaster: instance of org.apache.fop.fo.pagination.SimplePageMaster(id=1082)
org.apache.fop.fo.pagination.Region.regionName: "xsl-region-body"
org.apache.fop.fo.pagination.Region.overflow: 8
org.apache.fop.fo.pagination.Region.wm: 49
org.apache.fop.fo.FObj.propertyListTable: instance of org.apache.fop.fo.Property$Maker[248] (id=1094)
org.apache.fop.fo.FObj.propertyList: instance of org.apache.fop.fo.PropertyList(id=1344)
org.apache.fop.fo.FObj.propMgr: instance of org.apache.fop.fo.PropertyManager(id=1345)
org.apache.fop.fo.FObj.id: null
org.apache.fop.fo.FObj.children: null
org.apache.fop.fo.FObj.markers: null
org.apache.fop.fo.FObj.systemId: "file:/path/to/fo-file"
org.apache.fop.fo.FObj.line: 9
org.apache.fop.fo.FObj.column: 24
org.apache.fop.fo.FONode.parent: instance of org.apache.fop.fo.pagination.SimplePageMaster(id=1082)
org.apache.fop.fo.FONode.name: "fo:region-body"
}
root.[0].[0].regions.get("body").propertyList = "{}"
The second child of root is the page sequence:
root.[1] = "fo:page-sequence at line 12:49"
root.[1] = {
root: instance of org.apache.fop.fo.pagination.Root(id=1088)
layoutMasterSet: instance of org.apache.fop.fo.pagination.LayoutMasterSet(id=1089)
flowMap: instance of java.util.HashMap(id=1090)
sequenceStarted: true
ipnValue: "auto"
currentPageNumber: 1
explicitFirstNumber: 0
firstPageNumber: 1
pageNumberGenerator: instance of org.apache.fop.fo.pagination.PageNumberGenerator(id=1074)
forcePageCount: 8
pageCount: 0
isForcing: false
pageNumberType: 1
thisIsFirstPage: true
simplePageMaster: instance of org.apache.fop.fo.pagination.SimplePageMaster(id=1082)
pageSequenceMaster: null
mainFlow: instance of org.apache.fop.fo.pagination.Flow(id=1092)
titleFO: null
org.apache.fop.fo.FObj.propertyListTable: instance of org.apache.fop.fo.Property$Maker[248] (id=1094)
org.apache.fop.fo.FObj.propertyList: instance of org.apache.fop.fo.PropertyList(id=1096)
org.apache.fop.fo.FObj.propMgr: instance of org.apache.fop.fo.PropertyManager(id=1097)
org.apache.fop.fo.FObj.id: null
org.apache.fop.fo.FObj.children: instance of java.util.ArrayList(id=1098)
org.apache.fop.fo.FObj.markers: null
org.apache.fop.fo.FObj.systemId: "file:/path/to/fo-file"
org.apache.fop.fo.FObj.line: 12
org.apache.fop.fo.FObj.column: 49
org.apache.fop.fo.FONode.parent: instance of org.apache.fop.fo.pagination.Root(id=1088)
org.apache.fop.fo.FONode.name: "fo:page-sequence"
}
The page-sequence has one property, the reference to the page master:
root.[1].propertyList = "{
master-reference=org.apache.fop.fo.StringProperty@104e28b
}"
root.[1].propertyList.get("master-reference") = {
str: "simpleA4"
org.apache.fop.fo.Property.specVal: null
}
The page-sequence has one child, the flow:
root.[1].children = "[
fo:flow at line 13:42
]"
root.[1].[0] = "fo:flow at line 13:42"
root.[1].[0] = {
pageSequence: instance of org.apache.fop.fo.pagination.PageSequence(id=1081)
markerSnapshot: null
flowName: "xsl-region-body"
contentWidth: 0
org.apache.fop.fo.FObj.propertyListTable: instance of org.apache.fop.fo.Property$Maker[248] (id=1094)
org.apache.fop.fo.FObj.propertyList: instance of org.apache.fop.fo.PropertyList(id=1367)
org.apache.fop.fo.FObj.propMgr: instance of org.apache.fop.fo.PropertyManager(id=1368)
org.apache.fop.fo.FObj.id: null
org.apache.fop.fo.FObj.children: instance of java.util.ArrayList(id=1369)
org.apache.fop.fo.FObj.markers: null
org.apache.fop.fo.FObj.systemId: "file:/path/to/fo-file"
org.apache.fop.fo.FObj.line: 13
org.apache.fop.fo.FObj.column: 42
org.apache.fop.fo.FONode.parent: instance of org.apache.fop.fo.pagination.PageSequence(id=1081)
org.apache.fop.fo.FONode.name: "fo:flow"
}
The flow has one property, the flow name:
root.[1].[0].propertyList = "{
flow-name=org.apache.fop.fo.StringProperty@6458a6
}"
root.[1].[0].propertyList.get("flow-name") = {
str: "xsl-region-body"
org.apache.fop.fo.Property.specVal: null
}
The flow has one child, a block:
root.children.elementData[1].children.elementData[0].children = "[
fo:block at line 15:28
]"
root.[1].[0].[0] = "fo:block at line 15:28"
root.[1].[0].[0] = {
align: 0
alignLast: 0
breakAfter: 0
lineHeight: 0
startIndent: 0
endIndent: 0
spaceBefore: 0
spaceAfter: 0
textIndent: 0
keepWithNext: 0
backgroundColor: null
blockWidows: 0
blockOrphans: 0
id: null
span: 59
wsTreatment: 41
lfTreatment: 98
bWScollapse: true
anythingLaidOut: false
firstInlineChild: null
org.apache.fop.fo.FObjMixed.textInfo: instance of org.apache.fop.fo.TextInfo(id=1377)
org.apache.fop.fo.FObj.propertyListTable: instance of org.apache.fop.fo.Property$Maker[248] (id=1094)
org.apache.fop.fo.FObj.propertyList: instance of org.apache.fop.fo.PropertyList(id=1378)
org.apache.fop.fo.FObj.propMgr: instance of org.apache.fop.fo.PropertyManager(id=1379)
org.apache.fop.fo.FObj.id: null
org.apache.fop.fo.FObj.children: instance of java.util.ArrayList(id=1380)
org.apache.fop.fo.FObj.markers: null
org.apache.fop.fo.FObj.systemId: "file:/path/to/fo-file"
org.apache.fop.fo.FObj.line: 15
org.apache.fop.fo.FObj.column: 28
org.apache.fop.fo.FONode.parent: instance of org.apache.fop.fo.pagination.Flow(id=1092)
org.apache.fop.fo.FONode.name: "fo:block"
}
root.[1].[0].[0].propertyList = "{
font-size=org.apache.fop.fo.LengthProperty@ae4646
font-weight=org.apache.fop.fo.StringProperty@187b287
space-after=org.apache.fop.fo.SpaceProperty@1d9e2c7
}"
The block has two children:
root.[1].[0].[0].children = "[
fo:text at line 15:35
fo:text at line 16:7
]"
root.[1].[0].[0].[0] = "fo:text at line 15:35"
root.[1].[0].[0].[0] = {
ca: instance of char[7] (id=1386)
start: 0
length: 7
textInfo: instance of org.apache.fop.fo.TextInfo(id=1377)
lastFOTextProcessed: instance of org.apache.fop.fo.FOText(id=1387)
prevFOTextThisBlock: null
nextFOTextThisBlock: instance of org.apache.fop.fo.FOText(id=1387)
ancestorBlock: instance of org.apache.fop.fo.flow.Block(id=1375)
org.apache.fop.fo.FObj.propertyListTable: instance of org.apache.fop.fo.Property$Maker[248] (id=1094)
org.apache.fop.fo.FObj.propertyList: null
org.apache.fop.fo.FObj.propMgr: null
org.apache.fop.fo.FObj.id: null
org.apache.fop.fo.FObj.children: null
org.apache.fop.fo.FObj.markers: null
org.apache.fop.fo.FObj.systemId: "file:/path/to/fo-file"
org.apache.fop.fo.FObj.line: 15
org.apache.fop.fo.FObj.column: 35
org.apache.fop.fo.FONode.parent: instance of org.apache.fop.fo.flow.Block(id=1375)
org.apache.fop.fo.FONode.name: "fo:text"
}
This text node contains the text "Test FO":
root.[1].[0].[0].[0].ca = {
T, e, s, t, , F, O
}
root.[1].[0].[0].[1] = "fo:text at line 16:7"
root.[1].[0].[0].[1] = {
ca: instance of char[1] (id=1390)
start: 0
length: 1
textInfo: instance of org.apache.fop.fo.TextInfo(id=1377)
lastFOTextProcessed: instance of org.apache.fop.fo.FOText(id=1387)
prevFOTextThisBlock: instance of org.apache.fop.fo.FOText(id=1384)
nextFOTextThisBlock: null
ancestorBlock: instance of org.apache.fop.fo.flow.Block(id=1375)
org.apache.fop.fo.FObj.propertyListTable: instance of org.apache.fop.fo.Property$Maker[248] (id=1094)
org.apache.fop.fo.FObj.propertyList: null
org.apache.fop.fo.FObj.propMgr: null
org.apache.fop.fo.FObj.id: null
org.apache.fop.fo.FObj.children: null
org.apache.fop.fo.FObj.markers: null
org.apache.fop.fo.FObj.systemId: "file:/path/to/fo-file"
org.apache.fop.fo.FObj.line: 16
org.apache.fop.fo.FObj.column: 7
org.apache.fop.fo.FONode.parent: instance of org.apache.fop.fo.flow.Block(id=1375)
org.apache.fop.fo.FONode.name: "fo:text"
}
This text node contains the text "\n":
root.[1].[0].[0].[1].ca = {
}
The corresponding area tree
PageViewport has a Page page and a Rectangle2D
viewArea (reference/viewport pair).
Page has five RegionViewports.
RegionViewport has a RegionReference region and a
Rectangle2D viewArea (reference/viewport pair).
BodyRegion has a MainReference mainReference, a
BeforeFloat beforeFloat, and a Footnote footnote.
MainReference has a list of Spans.
Span has a list of Flows.
Flow has a list of Blocks.
Block has a list of Blocks or LineAreas.
LineArea has a list of InlineAreas.
Text Area (subclass of InlineArea) has text.
The structure of the area tree is as follows:
PageViewport
|
+-Page
|
+-RegionViewport
|
+-BodyRegion
|
+-MainReference
| |
| +-Span
| | |
| | +-Flow
| |
| +-Span
| | |
| | +-Flow
| | |
| | +-Block
| | | |
| | | +-LineArea
| | | |
| | | +-TextArea
| | |
| | +-Block
| |
| +-Span
| | |
| | +-Flow
| |
| +-Span
| | |
| | +-Flow
| |
| +-Span
| |
| +-Flow
|
+blocks
|
+CTM
In the listing below members of an
arraylist are indicated by [n],
which stands for get(n). If the
arraylist is called children,
the word children has been omitted, so that
[n] then stands for
children.get(n).
Type: org.apache.fop.area.PageViewport:
curPage = "PageViewport: page=1"
curPage = {
page: instance of org.apache.fop.area.Page(id=1394)
viewArea: instance of java.awt.Rectangle(id=1395)
clip: false
pageNumber: "1"
idReferences: null
unresolved: null
pendingResolved: null
markerFirstStart: null
markerLastStart: null
markerFirstAny: null
markerLastEnd: null
markerLastAny: null
}
Type: org.apache.fop.area.Page:
curPage.page = {
regionBefore: null
regionStart: null
regionBody: instance of org.apache.fop.area.RegionViewport(id=1397)
regionEnd: null
regionAfter: null
unresolved: null
}
Type: org.apache.fop.area.RegionViewport:
curPage.page.regionBody = {
region: instance of org.apache.fop.area.BodyRegion(id=1077)
viewArea: instance of java.awt.Rectangle(id=1399)
clip: false
org.apache.fop.area.Area.areaClass: 0
org.apache.fop.area.Area.ipd: 0
org.apache.fop.area.Area.props: null
}
Type: org.apache.fop.area.BodyRegion:
curPage.page.regionBody.region = {
beforeFloat: null
mainReference: instance of org.apache.fop.area.MainReference(id=1401)
footnote: null
columnGap: 18000
columnCount: 1
refIPD: 0
org.apache.fop.area.RegionReference.regionClass: 2
org.apache.fop.area.RegionReference.ctm: instance of org.apache.fop.area.CTM(id=1402)
org.apache.fop.area.RegionReference.blocks: instance of java.util.ArrayList(id=1403)
org.apache.fop.area.Area.areaClass: 0
org.apache.fop.area.Area.ipd: 0
org.apache.fop.area.Area.props: null
}
Type: org.apache.fop.area.MainReference:
curPage.page.regionBody.region.mainReference = {
spanAreas: instance of java.util.ArrayList(id=1405)
columnGap: 0
width: 0
org.apache.fop.area.Area.areaClass: 0
org.apache.fop.area.Area.ipd: 0
org.apache.fop.area.Area.props: null
}
The main reference contains five span areas. Four are
empty. Number 1 contains the text of this page.
curPage.page.regionBody.region.mainReference.spanAreas = "[
org.apache.fop.area.Span@53c3f5
org.apache.fop.area.Span@101ac93
org.apache.fop.area.Span@125d61e
org.apache.fop.area.Span@155d3a3
org.apache.fop.area.Span@718242
]"
Type: org.apache.fop.area.Span:
curPage.page.regionBody.region.mainReference.spanAreas[0] = {
flowAreas: instance of java.util.ArrayList(id=1409)
height: 0
org.apache.fop.area.Area.areaClass: 0
org.apache.fop.area.Area.ipd: 481891
org.apache.fop.area.Area.props: null
}
curPage.page.regionBody.region.mainReference.spanAreas[0].flowAreas = "[
org.apache.fop.area.Flow@e33e18
]"
Type: org.apache.fop.area.Flow:
curPage.page.regionBody.region.mainReference.spanAreas[0].flowAreas[0] = {
stacking: 2
width: 0
org.apache.fop.area.BlockParent.xOffset: 0
org.apache.fop.area.BlockParent.yOffset: 0
org.apache.fop.area.BlockParent.width: 0
org.apache.fop.area.BlockParent.height: 0
org.apache.fop.area.BlockParent.children: null
org.apache.fop.area.BlockParent.orientation: 0
org.apache.fop.area.Area.areaClass: 0
org.apache.fop.area.Area.ipd: 481891
org.apache.fop.area.Area.props: null
}
Type: org.apache.fop.area.Span:
curPage.page.regionBody.region.mainReference.spanAreas[1] = {
flowAreas: instance of java.util.ArrayList(id=1412)
height: 0
org.apache.fop.area.Area.areaClass: 0
org.apache.fop.area.Area.ipd: 481891
org.apache.fop.area.Area.props: null
}
curPage.page.regionBody.region.mainReference.spanAreas[0].flowAreas = "[
org.apache.fop.area.Flow@e33e18
]"
Type: org.apache.fop.area.Flow:
curPage.page.regionBody.region.mainReference.spanAreas[1].flowAreas[0] = {
stacking: 2
width: 0
org.apache.fop.area.BlockParent.xOffset: 0
org.apache.fop.area.BlockParent.yOffset: 0
org.apache.fop.area.BlockParent.width: 0
org.apache.fop.area.BlockParent.height: 0
org.apache.fop.area.BlockParent.children: instance of java.util.ArrayList(id=1416)
org.apache.fop.area.BlockParent.orientation: 0
org.apache.fop.area.Area.areaClass: 0
org.apache.fop.area.Area.ipd: 481891
org.apache.fop.area.Area.props: null
}
curPage.page.regionBody.region.mainReference.spanAreas[1].flowAreas[0].children = "[
org.apache.fop.area.Block@61f533
org.apache.fop.area.Block@12922f6
]"
Type: org.apache.fop.area.Block:
curPage.page.regionBody.region.mainReference.spanAreas[1].flowAreas[0].[0] = {
stacking: 2
positioning: 0
org.apache.fop.area.BlockParent.xOffset: 0
org.apache.fop.area.BlockParent.yOffset: 0
org.apache.fop.area.BlockParent.width: 481891
org.apache.fop.area.BlockParent.height: 19200
org.apache.fop.area.BlockParent.children: instance of java.util.ArrayList(id=1419)
org.apache.fop.area.BlockParent.orientation: 0
org.apache.fop.area.Area.areaClass: 0
org.apache.fop.area.Area.ipd: 481891
org.apache.fop.area.Area.props: null
}
curPage.page.regionBody.region.mainReference.spanAreas[1].flowAreas[0].[0].children = "[
org.apache.fop.area.LineArea@9f0d
]"
Type: org.apache.fop.area.LineArea:
curPage.page.regionBody.region.mainReference.spanAreas[1].flowAreas[0].[0].[0] = {
stacking: 0
startIndent: 0
length: 0
lineHeight: 19200
baseLine: 0
inlineAreas: instance of java.util.ArrayList(id=1422)
org.apache.fop.area.Area.areaClass: 0
org.apache.fop.area.Area.ipd: 0
org.apache.fop.area.Area.props: null
}
curPage.page.regionBody.region.mainReference.spanAreas[1].flowAreas[0].[0].[0].inlineAreas = "[
org.apache.fop.area.inline.TextArea@21d23b
]"
Type: org.apache.fop.area.inline.TextArea:
curPage.page.regionBody.region.mainReference.spanAreas[1].flowAreas[0].[0].[0].inlineAreas[0] = {
text: "Test FO"
iTSadjust: 0
org.apache.fop.area.inline.InlineArea.height: 14800
org.apache.fop.area.inline.InlineArea.contentIPD: 59568
org.apache.fop.area.inline.InlineArea.verticalPosition: 13688
org.apache.fop.area.Area.areaClass: 0
org.apache.fop.area.Area.ipd: 0
org.apache.fop.area.Area.props: instance of java.util.HashMap(id=1426)
}
curPage.page.regionBody.region.mainReference.spanAreas[1].flowAreas[0].[0].[0].inlineAreas[0].props = "{
4=16000
3=F3
7=#000000
}"
3
org.apache.fop.area.Trait.FONT_NAME
4
org.apache.fop.area.Trait.FONT_SIZE
7
org.apache.fop.area.Trait.COLOR
Type: org.apache.fop.area.Block:
curPage.page.regionBody.region.mainReference.spanAreas[1].flowAreas[0].[1] = {
stacking: 2
positioning: 0
org.apache.fop.area.BlockParent.xOffset: 0
org.apache.fop.area.BlockParent.yOffset: 0
org.apache.fop.area.BlockParent.width: 0
org.apache.fop.area.BlockParent.height: 14173
org.apache.fop.area.BlockParent.children: null
org.apache.fop.area.BlockParent.orientation: 0
org.apache.fop.area.Area.areaClass: 0
org.apache.fop.area.Area.ipd: 0
org.apache.fop.area.Area.props: null
}
Type: org.apache.fop.area.Span:
curPage.page.regionBody.region.mainReference.spanAreas[2] = {
flowAreas: instance of java.util.ArrayList(id=1429)
height: 0
org.apache.fop.area.Area.areaClass: 0
org.apache.fop.area.Area.ipd: 481891
org.apache.fop.area.Area.props: null
}
curPage.page.regionBody.region.mainReference.spanAreas[2].flowAreas = "[
org.apache.fop.area.Flow@c72243
]"
Type: org.apache.fop.area.Flow:
curPage.page.regionBody.region.mainReference.spanAreas[2].flowAreas[0] = {
stacking: 2
width: 0
org.apache.fop.area.BlockParent.xOffset: 0
org.apache.fop.area.BlockParent.yOffset: 0
org.apache.fop.area.BlockParent.width: 0
org.apache.fop.area.BlockParent.height: 0
org.apache.fop.area.BlockParent.children: null
org.apache.fop.area.BlockParent.orientation: 0
org.apache.fop.area.Area.areaClass: 0
org.apache.fop.area.Area.ipd: 481891
org.apache.fop.area.Area.props: null
}
Type: org.apache.fop.area.Span:
curPage.page.regionBody.region.mainReference.spanAreas[3] = {
flowAreas: instance of java.util.ArrayList(id=1433)
height: 0
org.apache.fop.area.Area.areaClass: 0
org.apache.fop.area.Area.ipd: 481891
org.apache.fop.area.Area.props: null
}
curPage.page.regionBody.region.mainReference.spanAreas[3].flowAreas = "[
org.apache.fop.area.Flow@dc9766
]"
Type: org.apache.fop.area.Flow:
curPage.page.regionBody.region.mainReference.spanAreas[3].flowAreas[0] = {
stacking: 2
width: 0
org.apache.fop.area.BlockParent.xOffset: 0
org.apache.fop.area.BlockParent.yOffset: 0
org.apache.fop.area.BlockParent.width: 0
org.apache.fop.area.BlockParent.height: 0
org.apache.fop.area.BlockParent.children: null
org.apache.fop.area.BlockParent.orientation: 0
org.apache.fop.area.Area.areaClass: 0
org.apache.fop.area.Area.ipd: 481891
org.apache.fop.area.Area.props: null
}
Type: org.apache.fop.area.Span:
curPage.page.regionBody.region.mainReference.spanAreas[4] = {
flowAreas: instance of java.util.ArrayList(id=1436)
height: 0
org.apache.fop.area.Area.areaClass: 0
org.apache.fop.area.Area.ipd: 481891
org.apache.fop.area.Area.props: null
}
curPage.page.regionBody.region.mainReference.spanAreas[4].flowAreas = "[
org.apache.fop.area.Flow@1ec58a
]"
Type: org.apache.fop.area.Flow:
curPage.page.regionBody.region.mainReference.spanAreas[4].flowAreas[0] = {
stacking: 2
width: 0
org.apache.fop.area.BlockParent.xOffset: 0
org.apache.fop.area.BlockParent.yOffset: 0
org.apache.fop.area.BlockParent.width: 0
org.apache.fop.area.BlockParent.height: 0
org.apache.fop.area.BlockParent.children: null
org.apache.fop.area.BlockParent.orientation: 0
org.apache.fop.area.Area.areaClass: 0
org.apache.fop.area.Area.ipd: 481891
org.apache.fop.area.Area.props: null
}
curPage.page.regionBody.region.blocks = "[]"
Type: org.apache.fop.area.CTM:
curPage.page.regionBody.region.ctm = {
a: 1.0
b: 0.0
c: 0.0
d: 1.0
e: 56692.0
f: 56692.0
CTM_LRTB: instance of org.apache.fop.area.CTM(id=1439)
CTM_RLTB: instance of org.apache.fop.area.CTM(id=1440)
CTM_TBRL: instance of org.apache.fop.area.CTM(id=1441)
}