Package org.apache.fop.fo
Class XMLWhiteSpaceHandler
java.lang.Object
org.apache.fop.fo.XMLWhiteSpaceHandler
Class encapsulating the functionality for white-space-handling
during refinement stage.
The
Each time one of the variants is called, white-space is handled for all
The iteration always starts at
Note: if the method is called from an inline's endOfNode(), there is too little context to decide whether trailing white-space may be removed, so the pending inline is stored in a List, together with an iterator for which the next() method returns the first in the trailing sequence of white- space characters. This List is processed again at the end of the ancestor block.
handleWhiteSpace()
methods are called during
FOTree-building and marker-cloning:
- from
FObjMixed.addChildNode()
- from
FObjMixed.endOfNode()
- from
FObjMixed.handleWhiteSpaceFor()
Each time one of the variants is called, white-space is handled for all
FOText
or Character
nodes that
were added:
- either prior to
newChild
(and after the previous non-text child node) - or, if
newChild
isnull
, after the previous non-text child
The iteration always starts at
firstTextNode
,
goes on until the last text-node is reached, and deals only
with FOText
or Character
nodes.
Note: if the method is called from an inline's endOfNode(), there is too little context to decide whether trailing white-space may be removed, so the pending inline is stored in a List, together with an iterator for which the next() method returns the first in the trailing sequence of white- space characters. This List is processed again at the end of the ancestor block.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate class
Helper class, used during white-space handling to look ahead, and see if the next character is a linefeed (or if there will be an equivalent effect during layout, i.e.private class
Helper class to store unfinished inline nodes together with an iterator that starts at the first white-space character in the sequence of trailing white-space -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate boolean
True if the last char was a linefeedprivate RecursiveCharIterator
private boolean
private CharIterator
private boolean
True if we are in a run of white spaceprivate int
private Stack
private boolean
private int
Counter, increased every time a non-white-space is encounteredprivate List
private int
private int
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate void
private void
private void
void
handleWhiteSpace
(FObjMixed fo, FONode firstTextNode) Handle white-space for the fo that is passed in, starting at firstTextNode (when a nested FO is encountered)void
handleWhiteSpace
(FObjMixed fo, FONode firstTextNode, FONode nextChild) Handle white-space for the fo that is passed in, starting at firstTextNodeprotected final void
reset()
Reset the handler, release all references
-
Field Details
-
inWhiteSpace
private boolean inWhiteSpaceTrue if we are in a run of white space -
afterLinefeed
private boolean afterLinefeedTrue if the last char was a linefeed -
nonWhiteSpaceCount
private int nonWhiteSpaceCountCounter, increased every time a non-white-space is encountered -
linefeedTreatment
private int linefeedTreatment -
whiteSpaceTreatment
private int whiteSpaceTreatment -
whiteSpaceCollapse
private int whiteSpaceCollapse -
endOfBlock
private boolean endOfBlock -
nextChildIsBlockLevel
private boolean nextChildIsBlockLevel -
charIter
-
pendingInlines
-
nestedBlockStack
-
firstWhiteSpaceInSeq
-
-
Constructor Details
-
XMLWhiteSpaceHandler
public XMLWhiteSpaceHandler()
-
-
Method Details
-
handleWhiteSpace
Handle white-space for the fo that is passed in, starting at firstTextNode- Parameters:
fo
- the FO for which to handle white-spacefirstTextNode
- the node at which to startnextChild
- the node that will be added to the list after firstTextNode
-
reset
protected final void reset()Reset the handler, release all references -
handleWhiteSpace
Handle white-space for the fo that is passed in, starting at firstTextNode (when a nested FO is encountered)- Parameters:
fo
- the FO for which to handle white-spacefirstTextNode
- the node at which to start
-
handleWhiteSpace
private void handleWhiteSpace() -
addPendingInline
private void addPendingInline() -
handlePendingInlines
private void handlePendingInlines()
-