Class ListRenderer
- All Implemented Interfaces:
IPropertyContainer
,IRenderer
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static final class
-
Field Summary
Fields inherited from class com.itextpdf.layout.renderer.AbstractRenderer
BOTTOM_SIDE, childRenderers, EPS, flushed, INF, isLastRendererForModelElement, LEFT_SIDE, modelElement, occupiedArea, OVERLAP_EPSILON, parent, positionedRenderers, properties, RIGHT_SIDE, TOP_SIDE
-
Constructor Summary
ConstructorsConstructorDescriptionListRenderer
(List modelElement) Creates a ListRenderer from its corresponding layout object. -
Method Summary
Modifier and TypeMethodDescriptionprivate LayoutResult
correctListSplitting
(IRenderer splitRenderer, IRenderer overflowRenderer, IRenderer causeOfNothing, LayoutArea occupiedArea) Corrects split and overflow renderers whenProperty.FORCED_PLACEMENT
is applied.private IRenderer
createListSymbolRenderer
(int index, IRenderer renderer) protected AbstractRenderer
createOverflowRenderer
(int layoutResult) Creates an overflow renderer.protected AbstractRenderer
createSplitRenderer
(int layoutResult) Creates a split renderer.(package private) static Object
getListItemOrListProperty
(IRenderer listItem, IRenderer list, int propertyId) Calculates min and max width values for current renderer.Gets a new instance of this class to be used as a next renderer, after this renderer is used, iflayout(LayoutContext)
is called more than once.private LayoutResult
initializeListSymbols
(LayoutContext layoutContext) layout
(LayoutContext layoutContext) This method simulates positioning of the renderer, including all of its children, and returns theLayoutResult
, representing the layout result, including occupied area, status, i.e.protected IRenderer
makeListSymbolRenderer
(int index, IRenderer renderer) private LineRenderer
surroundTextBullet
(IRenderer bulletRenderer) Methods inherited from class com.itextpdf.layout.renderer.BlockRenderer
applyMaxHeight, applyMinHeight, applyRotationLayout, applyVerticalAlignment, applyWidth, beginRotationIfApplied, correctFixedLayout, createRotationTransformInsideOccupiedArea, createSplitAndOverflowRenderers, decreaseLayoutBoxAfterChildPlacement, draw, endRotationIfApplied, fixOccupiedAreaIfOverflowedX, fixOccupiedAreaIfOverflowedY, getOccupiedAreaBBox, getResolvedFont, handleForcedPlacement, processNotFullChildResult, recalculateLayoutBoxBeforeChildLayout, recalculateOccupiedAreaAfterChildLayout, startChildMarginsHandling, stopLayoutingChildrenIfChildResultNotFull
Methods inherited from class com.itextpdf.layout.renderer.AbstractRenderer
addAllChildRenderers, addAllChildRenderers, addAllProperties, addChild, addChildRenderer, alignChildHorizontally, allowLastYLineRecursiveExtraction, applyAbsolutePosition, applyAbsolutePositionIfNeeded, applyAction, applyBorderBox, applyBorderBox, applyDestination, applyDestinationsAndAnnotation, applyLinkAnnotation, applyMargins, applyMargins, applyMarginsBordersPaddings, applyPaddings, applyPaddings, applyRelativePositioningTranslation, beginElementOpacityApplying, beginTransformationIfApplied, calculateAbsolutePdfBBox, calculateAdditionalWidth, calculateBBox, calculatePaddingBorderHeight, calculatePaddingBorderWidth, calculateShiftToPositionBBoxOfPointsAt, clipBackgroundArea, clipBackgroundArea, clipBorderArea, createFontCharacteristics, createXObject, deleteOwnProperty, deleteProperty, drawBackground, drawBorder, drawChildren, drawPositionedChildren, endElementOpacityApplying, endTransformationIfApplied, getAspectRatio, getBackgroundArea, getBorderAreaBBox, getBorderRadii, getBorders, getBorders, getChildRenderers, getDefaultProperty, getFirstYLineRecursively, getInnerAreaBBox, getLastYLineRecursively, getMargins, getModelElement, getOccupiedArea, getOwnProperties, getOwnProperty, getPaddings, getParent, getPdfDocument, getProperty, getProperty, getPropertyAsBoolean, getPropertyAsColor, getPropertyAsFloat, getPropertyAsFloat, getPropertyAsFloat, getPropertyAsFont, getPropertyAsInteger, getPropertyAsTransparentColor, getPropertyAsUnitValue, getPropertyAsUnitValue, getRootRenderer, hasAbsoluteUnitValue, hasAspectRatio, hasOwnOrModelProperty, hasOwnProperty, hasProperty, hasRelativeUnitValue, initElementAreas, isAbsolutePosition, isBorderBoxSizing, isFirstOnRootArea, isFirstOnRootArea, isFixedLayout, isFlushed, isKeepTogether, isKeepTogether, isNotFittingHeight, isNotFittingLayoutArea, isNotFittingWidth, isOverflowFit, isOverflowProperty, isOverflowProperty, isOverflowProperty, isPositioned, isRelativePosition, isStaticLayout, logWarningIfGetNextRendererNotOverridden, move, noAbsolutePositionInfo, preparePositionedRendererAndAreaForLayout, processWaitingDrawing, rectangleToPointsList, removeAllChildRenderers, removeChildRenderer, replaceOwnProperty, resolveFirstPdfFont, resolveFirstPdfFont, retrieveHeight, retrieveMaxHeight, retrieveMaxWidth, retrieveMinHeight, retrieveMinWidth, retrieveUnitValue, retrieveUnitValue, retrieveWidth, returnBackOwnProperty, setBorders, setChildRenderer, setChildRenderers, setMinMaxWidthBasedOnFixedWidth, setParent, setProperty, setThisAsParent, shrinkOccupiedAreaForAbsolutePosition, toString, transformPoints, updateHeight, updateHeightsOnSplit, updateHeightsOnSplit, updateMaxHeight, updateMinHeight, updateWidth
-
Constructor Details
-
ListRenderer
Creates a ListRenderer from its corresponding layout object.- Parameters:
modelElement
- theList
which this object should manage
-
-
Method Details
-
layout
Description copied from class:BlockRenderer
This method simulates positioning of the renderer, including all of its children, and returns theLayoutResult
, representing the layout result, including occupied area, status, i.e. if there was enough place to fit the renderer subtree, etc.LayoutResult
can be extended to return custom layout results for custom elements, e.g.TextRenderer
usesTextLayoutResult
as its result. This method can be called standalone to learn how much area the renderer subtree needs, or can be called beforeIRenderer.draw(DrawContext)
, to prepare the renderer to be flushed to the output stream.- Specified by:
layout
in interfaceIRenderer
- Overrides:
layout
in classBlockRenderer
- Parameters:
layoutContext
- the description of layout area and any other additional information- Returns:
- result of the layout process
-
getNextRenderer
Gets a new instance of this class to be used as a next renderer, after this renderer is used, iflayout(LayoutContext)
is called more than once.If a renderer overflows to the next area, iText uses this method to create a renderer for the overflow part. So if one wants to extend
ListRenderer
, one should override this method: otherwise the default method will be used and thus the default rather than the custom renderer will be created.- Returns:
- new renderer instance
-
createSplitRenderer
Description copied from class:BlockRenderer
Creates a split renderer.- Overrides:
createSplitRenderer
in classBlockRenderer
- Parameters:
layoutResult
- the result of content layouting- Returns:
- a new
AbstractRenderer
instance
-
createOverflowRenderer
Description copied from class:BlockRenderer
Creates an overflow renderer.- Overrides:
createOverflowRenderer
in classBlockRenderer
- Parameters:
layoutResult
- the result of content layouting- Returns:
- a new
AbstractRenderer
instance
-
getMinMaxWidth
Description copied from class:BlockRenderer
Calculates min and max width values for current renderer.- Overrides:
getMinMaxWidth
in classBlockRenderer
- Returns:
- instance of
MinMaxWidth
-
makeListSymbolRenderer
-
getListItemOrListProperty
-
createListSymbolRenderer
-
surroundTextBullet
-
correctListSplitting
private LayoutResult correctListSplitting(IRenderer splitRenderer, IRenderer overflowRenderer, IRenderer causeOfNothing, LayoutArea occupiedArea) Corrects split and overflow renderers whenProperty.FORCED_PLACEMENT
is applied.We assume that
Property.FORCED_PLACEMENT
is applied when the firstListItemRenderer
cannot be fully layouted. This means that the problem has occurred in one of the first list item renderer's children. In that case we force the placement of all first item renderer's children before the one, which was the cause ofLayoutResult.NOTHING
, including this child.Notice that we do not expect
Property.FORCED_PLACEMENT
to be applied if we can render the first item renderer and strongly recommend not to setProperty.FORCED_PLACEMENT
manually.- Parameters:
splitRenderer
- thesplit renderer
before correctionoverflowRenderer
- theoverflow renderer
before correctioncauseOfNothing
- the renderer which has producedLayoutResult.NOTHING
occupiedArea
- the area occupied by layout before correction- Returns:
- corrected
layout result
-
initializeListSymbols
-