org.pentaho.reporting.engine.classic.core.layout.process
Class ParagraphLineBreakStep
java.lang.Object
org.pentaho.reporting.engine.classic.core.layout.process.IterateStructuralProcessStep
org.pentaho.reporting.engine.classic.core.layout.process.ParagraphLineBreakStep
public final class ParagraphLineBreakStep
- extends IterateStructuralProcessStep
This static computation step performs manual linebreaks on all paragraphs. This transforms the pool-collection into
the lines-collection.
For now, we follow a very simple path: A paragraph cannot be validated, if it is not yet closed. The linebreaking, be
it the static one here or the dynamic one later, must be redone when the paragraph changes.
Splitting for linebreaks happens only between inline-boxes. BlockBoxes that are contained in inline-boxes (like
'inline-block' elements or 'inline-tables') are considered unbreakable according to the CSS specs. Linebreaking can
be suspended in these cases.
As paragraphs itself are block elements, the linebreaks can be done iterative, using a simple stack to store the
context of possibly nested paragraphs. The paragraph's pool contains the elements that should be processed, and the
line-container will receive the pool's content (contained in an artificial inline element, as the linecontainer is a
block-level element).
Change-tracking should take place on the paragraph's pool element instead of the paragraph itself. This way, only
structural changes are taken into account.
- Author:
- Thomas Morgner
ParagraphLineBreakStep
public ParagraphLineBreakStep()
compute
public void compute(LogicalPageBox root)
startCanvasBox
public boolean startCanvasBox(CanvasRenderBox box)
finishCanvasBox
public void finishCanvasBox(CanvasRenderBox box)
startRowBox
public boolean startRowBox(RenderBox box)
finishRowBox
public void finishRowBox(RenderBox box)