Generalized FOValidationEventListenerProxy into FOPEventListenerProxy, the main proxy for FOP's own event manipulation proxy. Done because of support for overflow="hidden" vs. overflow="error-if-overflow".
Refactoring in the fo package:
-> removal of the childNodes instance member in fop.fo.FObj
-> addition of a firstChild instance member in fop.fo.FObj
-> addition of a siblings instance member in fop.fo.FONode
-> addition of a FONodeIterator interface in FONode + corresponding implementation in FObj
-> changed implementations of FObj.addChildNode(), .removeChild() and .getChildNodes()
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@554104 13f79535-47bb-0310-9956-ffa450edef68
- avoid unnecessary calls to getLogger(); LengthBase gets its own logger, LMs log to the AbstractLM logger
- CommonBorderPaddingBackground no longer implements Cloneable
(changes suggested by Richard Wheeldon)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@495371 13f79535-47bb-0310-9956-ffa450edef68
Made the FO tree a little more consistent by renaming getName() to getLocalName() and adding additional methods like: getNamespaceURI() and getNormalNamespacePrefix(). getName() now returns the fully qualified name combined from getLocalName() and getNormalNamespacePrefix(). For special cases you can call getName(String) to return a different namespace prefix.
Background images were incorrectly positioned in some absolute positioned blocks.
Some additional attributes output by the XMLRenderer.
Refactored the layout for e-g and i-f-o. Introduced common base classes for the
corresponding flow objects as well as the e-g and i-f-o LMs.
Fixed incorrectly applied margins on region-body when writing mode is not lr.
Fixed application of correct percent base for margins and extents on regions
when the reference orientation is 90 degrees.
Fixed incorrectly positioned regions when writing mode is different between the
simple-page-master setting and the setting on the region.
Several updates to the layout engine test cases.
Submitted by: Manuel Mall <mm.at.arcus.com.au>
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@278690 13f79535-47bb-0310-9956-ffa450edef68
Initial work on enhancing the extension facilities to register special extensions which create so-called ExtensionAttachment objects which are attached to the formatting object they are attached to. These objects can be evaluated by standard or custom layout managers or simply passed through to the area tree (the latter is NYI). The AreaTreeHandler currently takes ExtensionAttachment objects from fo:root and fo:declarations and wraps them in OffDocumentItems that Renderers can react on to provide additional functionality on document-level (like PDF metadata or PostScript media dictionaries). Since the simple-page-master is available directly from the PageViewport the renderer can take ExtensionAttachment objects directly from there (see PSRenderer.renderPage()).
Extension Elements that provide ExtensionAttachments are not added as such to the child element list of a formatting object since they work a little differently and should free memory as soon as possible.
The PostScript extension described in http://wiki.apache.org/xmlgraphics-fop/ExtensionsForPostScript are now fully implemented but under the namespace URI "http://xmlgraphics.apache.org/fop/postscript", not "http://xml.apache.org/fop/extensions". I'll need to look at namespaces again separately, later.
The new PSExtensionElementMapping is currently hard-coded into FOTreeBuilder as are the other ElementMapping classes.
OffDocumentItem is now an interface, AbstractOffDocumentItem now providing the base functionality of the former OffDocumentItem class.
Lots of clean-up and javadocs while working through this, for example: FObj.childNodes is not public anymore. Instead a special method on fo.flow.InstreamForeignObject provides the child in the one case childNodes was directly accessed. PropertyMaker access in FObj is also done through a method now, propertyListTable is now private.
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@267209 13f79535-47bb-0310-9956-ffa450edef68
Revised percentage resolution system.
Submitted by: Manuel Mall <mm.at.arcus.com.au>
Slightly modified to avoid early evaluation of getValue().
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@265577 13f79535-47bb-0310-9956-ffa450edef68
Access to intrinsic image size for eg/ifo through getLayoutDimension() instead of through separate interface.
Added a todo item about replacing the use of propertyList along with a reference to the related post on fop-dev.
Made the LayoutDimension keys a subclass of Avalon Framework's Enum to make the thing more debugger-friendly and more type-safe.
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@198217 13f79535-47bb-0310-9956-ffa450edef68
This patch implements a pluggable LayoutManagers system, according
to the ideas of Finn Bock and his patch in bug 30500.
Created a LayoutManagerMaker interface, with method
makeLayoutManagers(FONode, List), and two convenience methods on top
of it.
Created an implementation: LayoutManagerMapping. This is along the
pattern of FOElementMapping. It creates a Map from FObj class to Maker
objects. There are many static inner classes which are subclasses of
Maker. Each subclass implements its own version of the make method.
FOUserAgent has a setter and getter for
LayoutManagerMakerOverride. AreaTreeHandler creates a
LayoutManagerMaker, taking the user's override into account, using
LayoutManagerMapping as the default. It has a get method for it.
The LayoutManager interface has a get method for the AreaTreeHandler
object, a reference to which is held in PageSequenceLM, the top of the
LM tree.
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@198208 13f79535-47bb-0310-9956-ffa450edef68
Obtained from:
Submitted by:
Reviewed by:
1.) Removed unneeded enumeration interfaces from fo.Constants.
2.) Appended EN_ to enumeration constants to make them better S&R'able throughout app.
3.) Added an EN_INHERIT enumeration constant (although not currently used in the system.)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@198175 13f79535-47bb-0310-9956-ffa450edef68
Obtained from:
Submitted by:
Reviewed by:
Start of work to move FOText from extending FObj to extending FONode instead.
All work is done except for changing FObj's parent from FObj to
FONode. The RTF library works fine with the switch, but simple.fo and
franklin_alt.fo (among others I guess) will not work properly when FOText's
parent is switched. (Layout problems occur--lines don't break properly
with the switch.)
Switch to super() constructor (instead of super(fobj) one) within
within TextLayoutManager, as it is not needed for this subclass, also to
facilitate the change above.
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@198040 13f79535-47bb-0310-9956-ffa450edef68
2. Centralized determination of generatesInlineAreas() from multiple FObj subclasses into fo.PropertySets BitSet object.
3. validateChildNode() implemented for fo:list-item.
4. fo:initial-property-set now extending FObj instead of ToBeImplementedElement; burden of implementation on individual FOInputHandler subclasses.
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@197882 13f79535-47bb-0310-9956-ffa450edef68
1. fo:leader layout initialization logic moved from AddLMVisitor to
fo.flow.Leader.
2. fo:leader layout logic moved from AddLMVisitor to new
layoutmgr.LayoutLeaderManager class.
3. validateChildNode() for fo:list-block implemented.
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@197876 13f79535-47bb-0310-9956-ffa450edef68
1.) fo:Instream-Foreign-Object initialization logic moved from AddLMVisitor
to flow.InstreamForiegnObject.java, and the layout logic itself moved to
a new layoutmgr.InstreamForeignObjectLM.java. (Broke with usual nomenclature of adding
~LayoutManager to end, given that newer 1.1 and post-1.1 FO names are
getting even larger.)
2.) validateChildNode() added for fo:inline.
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@197871 13f79535-47bb-0310-9956-ffa450edef68
1. new FONode.invalidChildError method added that will takes a "ruleViolated" string for more detailed error messages.
2. FO_URI added to FONode to decrease the number of imports of FOElementMapping within the FONode subclasses.
3. Layout logic moved from fo.flow.BasicLink to a new BasicLinkLayoutManager class.
4. BidiLayoutManager constructor modified, now needs the flow.BidiOverride object.
5. ListItemLayoutManager setup moved from AddLMManager to flow.Listitem and layoutmgr.list.ListItemLayoutManager.
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@197859 13f79535-47bb-0310-9956-ffa450edef68
Obtained from:
Submitted by:
Reviewed by:
1.) Continued conversion/deprecation of AddLMVisitor. About 16 FO's remaining.
2.) Created a *temporary* LMVisited interface to mark those FO's still
needing conversion. This will be dropped once the process is complete.
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@197857 13f79535-47bb-0310-9956-ffa450edef68
Created a validateChildNode() in FONode for better syntax checking in the
fo document: e.g., preventing two fo:layout-master-set's from occurring within
an fo:root, requiring fo:page-sequence to follow the fo:l-m-s
(and fo:declarations, if present). Currently just validates fo:root's children--validateChildNode() needs to be overridden in other FObj subclasses
to do the same for other formatting objects. Comments most welcome.
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@197703 13f79535-47bb-0310-9956-ffa450edef68
Moved the interfaces into the Constants class on a trial basis (we may still
choose to remove them in favor of strictly using Constants.) Two interfaces
(span and position) were removed because of conflicts with other class names.
The interface generation was moved into Constants.xsl, which is run manually
via the XsltToJava ant task and its output is then checked in. As a result,
no more autogeneration of these interfaces at build time will be done.
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@197213 13f79535-47bb-0310-9956-ffa450edef68