org.jfree.layouting.renderer.process
Class ParagraphLineBreakStep

java.lang.Object
  extended by org.jfree.layouting.renderer.process.IterateStructuralProcessStep
      extended by org.jfree.layouting.renderer.process.ParagraphLineBreakStep

public 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

Constructor Summary
ParagraphLineBreakStep()
           
 
Method Summary
 void compute(LogicalPageBox root)
           
protected  void finishBlockBox(BlockRenderBox box)
           
protected  void finishInlineBox(InlineRenderBox box)
           
protected  void finishOtherBox(RenderBox box)
           
protected  boolean startBlockBox(BlockRenderBox box)
           
protected  boolean startInlineBox(InlineRenderBox box)
           
protected  boolean startOtherBox(RenderBox box)
           
protected  void startOtherNode(RenderNode node)
           
 
Methods inherited from class org.jfree.layouting.renderer.process.IterateStructuralProcessStep
finishNormalFlow, finishOtherNode, processBoxChilds, processParagraphChilds, startNormalFlow, startProcessing
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ParagraphLineBreakStep

public ParagraphLineBreakStep()
Method Detail

compute

public void compute(LogicalPageBox root)

startBlockBox

protected boolean startBlockBox(BlockRenderBox box)
Overrides:
startBlockBox in class IterateStructuralProcessStep

finishBlockBox

protected void finishBlockBox(BlockRenderBox box)
Overrides:
finishBlockBox in class IterateStructuralProcessStep

startInlineBox

protected boolean startInlineBox(InlineRenderBox box)
Overrides:
startInlineBox in class IterateStructuralProcessStep

finishInlineBox

protected void finishInlineBox(InlineRenderBox box)
Overrides:
finishInlineBox in class IterateStructuralProcessStep

startOtherNode

protected void startOtherNode(RenderNode node)
Overrides:
startOtherNode in class IterateStructuralProcessStep

startOtherBox

protected boolean startOtherBox(RenderBox box)
Overrides:
startOtherBox in class IterateStructuralProcessStep

finishOtherBox

protected void finishOtherBox(RenderBox box)
Overrides:
finishOtherBox in class IterateStructuralProcessStep