### org.jfree.layouting.renderer.process

# Class ComputeICMMetricsStep

- `java.lang.Object`
- - `org.jfree.layouting.renderer.process.IterateVisualProcessStep`
  - - `org.jfree.layouting.renderer.process.ComputeICMMetricsStep`

`public class ComputeICMMetricsStep`
`extends IterateVisualProcessStep`

This step performs the first layouting step. The ICM-step computes the preferred size of all elements (that is the minimum size the element would consume if there were infinite space available) and the minimum chunk size (that is the biggest unbreakable content in an element).

The preferred size is based on the box size (that means: No margins included!).

That step produces the preferred size for the nodes.

As long as paragraphs can be nested, we cannot assume anything here. A nested paragraph can have linebreaks all the time and thus it is dangerous to skip the ICM-Computation on such nodes. Maybe we can tweak something with a change counter or so.

Author:
  Thomas Morgner

  ## Constructor Summary

  `ComputeICMMetricsStep()`

  ## Method Summary

  `void`

  `compute(LogicalPageBox root)`

  `protected void`

  `finishBlockLevelBox(RenderBox box)`

  `protected void`

  `finishInlineLevelBox(RenderBox box)`

  `protected void`

  `processBlockLevelNode(RenderNode node)`

  `protected void`

  `processInlineLevelNode(RenderNode node)`

  `protected void`

  `processParagraphChilds(ParagraphRenderBox box)`

  `protected boolean`

  `startBlockLevelBox(RenderBox box)`

  `protected boolean`

  `startInlineLevelBox(RenderBox box)`

  ### Methods inherited from class org.jfree.layouting.renderer.process.IterateVisualProcessStep

  `finishBlockLevelBox`, `finishInlineLevelBox`, `processBlockLevelChild`, `processBlockLevelNode`, `processBoxChilds`, `processFlow`, `processInlineLevelChild`, `processInlineLevelNode`, `processOtherLevelChild`, `processParagraphChilds`, `startBlockLevelBox`, `startInlineLevelBox`, `startProcessing`

## Constructor Details

### ComputeICMMetricsStep

    public ComputeICMMetricsStep()

## Method Details

### compute

    public void compute(LogicalPageBox root)

### finishBlockLevelBox

    protected void finishBlockLevelBox(RenderBox box)

> Overrides:
>   finishBlockLevelBox in interface IterateVisualProcessStep

### finishInlineLevelBox

    protected void finishInlineLevelBox(RenderBox box)

> Overrides:
>   finishInlineLevelBox in interface IterateVisualProcessStep

### processBlockLevelNode

    protected void processBlockLevelNode(RenderNode node)

> Overrides:
>   processBlockLevelNode in interface IterateVisualProcessStep

### processInlineLevelNode

    protected void processInlineLevelNode(RenderNode node)

> Overrides:
>   processInlineLevelNode in interface IterateVisualProcessStep

### processParagraphChilds

    protected void processParagraphChilds(ParagraphRenderBox box)

> Overrides:
>   processParagraphChilds in interface IterateVisualProcessStep

### startBlockLevelBox

    protected boolean startBlockLevelBox(RenderBox box)

> Overrides:
>   startBlockLevelBox in interface IterateVisualProcessStep

### startInlineLevelBox

    protected boolean startInlineLevelBox(RenderBox box)

> Overrides:
>   startInlineLevelBox in interface IterateVisualProcessStep