From 3fb0398c6dedd3a583bba4bfb27898fbad386af5 Mon Sep 17 00:00:00 2001
From: William Victor Mote
The Area Tree consists of a set of pages, which the actual implemenation places in a set of page sequences.
-The area tree is a root element that has a list of page-viewport-areas. Each page viewport has a page-reference-area which holds the contents of the page. To handle the processing better FOP does not maintain a list at the root level but lets the area tree model handle each page as it is added.
A page consists of a page+viewport pair.
The PageViewPort and Page with the regions is created by the @@ -43,7 +43,7 @@ The flow areas are then created inside these normal flow reference areas.
The layout manager then uses the page to add areas into the normal flow reference areas and floats and footnotes. After adding the areas for the body region then the other regions can be done layed out and added.Block level areas contain either other blocks or line areas (which is a special block area).
@@ -52,7 +52,7 @@ special block area). The spacing between block areas is handled by an empty block area. A block area is stacked with other block areas in a particular direction, it has a size and it contains line areas made from a group of inline areas and/or block areas.A line areas is simply a collection of inline areas that are stacked in the inline progression direction. A line area has a height and a start position. @@ -60,7 +60,7 @@ The line area is rendered by handling each inline area.
A line area gets a set of inline areas added until complete then it is justified and vertically alignedi when adding the areas. If the line area contains unresolved areas then there will be a line resolver that retains the justification information until all areas in the line are resolved.
There are a few different types of inline areas. All inline areas have a height and width.
@@ -73,14 +73,14 @@ A special inline area Word is also used for a group of consecutive characters. The leader (with use content) and unresolved page number areas are resolved to other inline areas.Once a LineArea is filled with inline areas then the inline areas need to be aligned and adjusted to fill the line properly.
There are cases where the same subtree could be repeated in the area tree. These areas will be returned by the same layout managers. So it is possible to put a flag on the created areas so that the subtree data can be cached in the output. Examples of this are: static areas, table header/footer, svg.
A trait is information associated with an area. This could be information such as text colour or is-first.
@@ -94,15 +94,15 @@ Since setting the same value on every area would use a lot of memory then the tr every line area with the same dominant value can derive it. The text inline areas then get the font colour set on the inline area or from the line area or from the block area.The following class structure will be used to represent the area tree.
-The page area classes hold the top level layout of a page. The areas are created by the page master and should be ready to have flow areas added.
The block areas hold other block areas and/or line areas. The child areas are stacked in a particular direction.
@@ -110,7 +110,7 @@ The child areas are stacked in a particular direction. These areas a placed with an absolute positioning. The absolute positioning is where the blocks are placed with an offset from the parent reference area.The inline areas are used to make up a line area. An inline area typically has a height, width and some content. @@ -118,7 +118,7 @@ The inline area is offset from the baseline of the current line area. The content of the inline area can be other inline areas or a simple atomic object.
The Area Tree maintains a set of mappings from the reference to pages.
The PageViewPort holds the list of forward references that need resolving so that if a references is resolved during layout the page can be easily found and then fixed. @@ -126,7 +126,7 @@ Once all the forward references are resolved then the page is ready to be render
To layout a page any areas that cannot be resolved need to reserve space. Once the inline area is resolved then the complete line should be adjusted to accomodate any change in space used by the area.
We may need to cache pages due to forward references or when keeping all pages.
@@ -136,7 +136,7 @@ The Page is serialized to an object stream and then all of the page contents are The Page is then recoved by reading from the object stream.The PageViewport retains information about id areas for easy access.
The Area Tree holds the Output Document extensions. This is information such as pdf bookmarks or other output document specific information that @@ -144,7 +144,7 @@ is not handled by XSL:FO.
It is also possible to create custom areas that extend a normal area. The actual data that is rendered could be set in a different way or depend on resolving a forward reference.
To handle different situations the handler for the Area Tree handles each page as it is added.
-- 2.39.5