Package com.itextpdf.layout.renderer
Class FlexContainerRenderer
java.lang.Object
com.itextpdf.layout.renderer.AbstractRenderer
com.itextpdf.layout.renderer.BlockRenderer
com.itextpdf.layout.renderer.DivRenderer
com.itextpdf.layout.renderer.FlexContainerRenderer
- All Implemented Interfaces:
IPropertyContainer
,IRenderer
-
Field Summary
FieldsFields 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
ConstructorsConstructorDescriptionFlexContainerRenderer
(Div modelElement) Creates a FlexContainerRenderer from its corresponding layout object. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Adds a child to the current rendererprivate static void
addSimulateDiv
(AbstractRenderer overflowRenderer, float width) private void
adjustLayoutResultToHandleOverflowRenderers
(LayoutResult result, List<IRenderer> renderersToOverflow) private void
Apply wrap-reverse property.private IFlexItemMainDirector
(package private) AbstractRenderer[]
createSplitAndOverflowRenderers
(int childPos, int layoutStatus, LayoutResult childResult, Map<Integer, IRenderer> waitingFloatsSplitRenderers, List<IRenderer> waitingOverflowFloatRenderers) (package private) void
decreaseLayoutBoxAfterChildPlacement
(Rectangle layoutBox, LayoutResult result, IRenderer childRenderer) (package private) void
decreaseLayoutBoxAfterChildPlacementColumnLayout
(Rectangle layoutBox, IRenderer childRenderer) (package private) void
decreaseLayoutBoxAfterChildPlacementRowLayout
(Rectangle layoutBox, LayoutResult result, IRenderer childRenderer) private void
fillSplitOverflowRenderersForPartialResult
(AbstractRenderer splitRenderer, AbstractRenderer overflowRenderer, List<FlexItemInfo> line, IRenderer childRenderer, LayoutResult childResult) private FlexItemInfo
findFlexItemInfo
(AbstractRenderer renderer) private List
<FlexItemInfo> private void
findMinMaxWidth
(float initialMinWidth, float initialMaxWidth, AbstractWidthHandler minMaxWidthHandler, List<IRenderer> childRenderers) private void
findMinMaxWidthIfCorrespondingPropertiesAreNotSet
(MinMaxWidth minMaxWidth, AbstractWidthHandler minMaxWidthHandler) (package private) void
fixOccupiedAreaIfOverflowedX
(OverflowPropertyValue overflowX, Rectangle layoutBox) (package private) IFlexItemMainDirector
(package private) Float
getHypotheticalCrossSize
(Float mainSize) 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.(package private) LayoutArea
getOccupiedAreaInCaseNothingWasWrappedWithFull
(LayoutResult result, IRenderer splitRenderer) (package private) void
handleForcedPlacement
(boolean anythingPlaced) private boolean
private boolean
Check if flex container direction is row reverse.(package private) boolean
Check if flex container is wrapped reversely.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.(package private) LayoutResult
processNotFullChildResult
(LayoutContext layoutContext, Map<Integer, IRenderer> waitingFloatsSplitRenderers, List<IRenderer> waitingOverflowFloatRenderers, boolean wasHeightClipped, List<Rectangle> floatRendererAreas, boolean marginsCollapsingEnabled, float clearHeightCorrection, Border[] borders, UnitValue[] paddings, List<Rectangle> areas, int currentAreaPos, Rectangle layoutBox, Set<Rectangle> nonChildFloatingRendererAreas, IRenderer causeOfNothing, boolean anythingPlaced, int childPos, LayoutResult result) (package private) Rectangle
recalculateLayoutBoxBeforeChildLayout
(Rectangle layoutBox, IRenderer childRenderer, Rectangle initialLayoutBox) (package private) void
recalculateOccupiedAreaAfterChildLayout
(Rectangle resultBBox, Float blockMaxHeight) retrieveRenderersToOverflow
(Rectangle flexContainerBBox) (package private) void
setHypotheticalCrossSize
(Float mainSize, Float hypotheticalCrossSize) (package private) MarginsCollapseInfo
startChildMarginsHandling
(IRenderer childRenderer, Rectangle layoutBox, MarginsCollapseHandler marginsCollapseHandler) (package private) boolean
stopLayoutingChildrenIfChildResultNotFull
(LayoutResult returnResult) Methods inherited from class com.itextpdf.layout.renderer.BlockRenderer
applyMaxHeight, applyMinHeight, applyRotationLayout, applyVerticalAlignment, applyWidth, beginRotationIfApplied, correctFixedLayout, createOverflowRenderer, createRotationTransformInsideOccupiedArea, createSplitRenderer, draw, endRotationIfApplied, fixOccupiedAreaIfOverflowedY, getOccupiedAreaBBox, getResolvedFont
Methods inherited from class com.itextpdf.layout.renderer.AbstractRenderer
addAllChildRenderers, addAllChildRenderers, addAllProperties, 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
-
Field Details
-
hypotheticalCrossSizes
-
lines
-
flexItemMainDirector
-
-
Constructor Details
-
FlexContainerRenderer
Creates a FlexContainerRenderer from its corresponding layout object.- Parameters:
modelElement
- theDiv
which this object should manage
-
-
Method Details
-
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
FlexContainerRenderer
, one should override this method: otherwise the default method will be used and thus the default rather than the custom renderer will be created.- Specified by:
getNextRenderer
in interfaceIRenderer
- Overrides:
getNextRenderer
in classDivRenderer
- Returns:
- new renderer instance
-
layout
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
-
getMinMaxWidth
Calculates min and max width values for current renderer.- Overrides:
getMinMaxWidth
in classBlockRenderer
- Returns:
- instance of
MinMaxWidth
-
getFlexItemMainDirector
IFlexItemMainDirector getFlexItemMainDirector() -
isWrapReverse
boolean isWrapReverse()Check if flex container is wrapped reversely.- Returns:
true
if flex-wrap property is set to wrap-reverse,false
otherwise.
-
createSplitAndOverflowRenderers
AbstractRenderer[] createSplitAndOverflowRenderers(int childPos, int layoutStatus, LayoutResult childResult, Map<Integer, IRenderer> waitingFloatsSplitRenderers, List<IRenderer> waitingOverflowFloatRenderers) - Overrides:
createSplitAndOverflowRenderers
in classBlockRenderer
-
processNotFullChildResult
LayoutResult processNotFullChildResult(LayoutContext layoutContext, Map<Integer, IRenderer> waitingFloatsSplitRenderers, List<IRenderer> waitingOverflowFloatRenderers, boolean wasHeightClipped, List<Rectangle> floatRendererAreas, boolean marginsCollapsingEnabled, float clearHeightCorrection, Border[] borders, UnitValue[] paddings, List<Rectangle> areas, int currentAreaPos, Rectangle layoutBox, Set<Rectangle> nonChildFloatingRendererAreas, IRenderer causeOfNothing, boolean anythingPlaced, int childPos, LayoutResult result) - Overrides:
processNotFullChildResult
in classBlockRenderer
-
getOccupiedAreaInCaseNothingWasWrappedWithFull
LayoutArea getOccupiedAreaInCaseNothingWasWrappedWithFull(LayoutResult result, IRenderer splitRenderer) -
stopLayoutingChildrenIfChildResultNotFull
- Overrides:
stopLayoutingChildrenIfChildResultNotFull
in classBlockRenderer
-
recalculateOccupiedAreaAfterChildLayout
- Overrides:
recalculateOccupiedAreaAfterChildLayout
in classBlockRenderer
-
startChildMarginsHandling
MarginsCollapseInfo startChildMarginsHandling(IRenderer childRenderer, Rectangle layoutBox, MarginsCollapseHandler marginsCollapseHandler) - Overrides:
startChildMarginsHandling
in classBlockRenderer
-
decreaseLayoutBoxAfterChildPlacement
void decreaseLayoutBoxAfterChildPlacement(Rectangle layoutBox, LayoutResult result, IRenderer childRenderer) - Overrides:
decreaseLayoutBoxAfterChildPlacement
in classBlockRenderer
-
decreaseLayoutBoxAfterChildPlacementRowLayout
void decreaseLayoutBoxAfterChildPlacementRowLayout(Rectangle layoutBox, LayoutResult result, IRenderer childRenderer) -
decreaseLayoutBoxAfterChildPlacementColumnLayout
-
recalculateLayoutBoxBeforeChildLayout
Rectangle recalculateLayoutBoxBeforeChildLayout(Rectangle layoutBox, IRenderer childRenderer, Rectangle initialLayoutBox) - Overrides:
recalculateLayoutBoxBeforeChildLayout
in classBlockRenderer
-
handleForcedPlacement
void handleForcedPlacement(boolean anythingPlaced) - Overrides:
handleForcedPlacement
in classBlockRenderer
-
setHypotheticalCrossSize
-
getHypotheticalCrossSize
-
applyWrapReverse
private void applyWrapReverse()Apply wrap-reverse property. -
findFlexItemInfo
-
findLine
-
fixOccupiedAreaIfOverflowedX
- Overrides:
fixOccupiedAreaIfOverflowedX
in classBlockRenderer
-
addChild
Adds a child to the current renderer- Specified by:
addChild
in interfaceIRenderer
- Overrides:
addChild
in classAbstractRenderer
- Parameters:
renderer
- a child to be added
-
addSimulateDiv
-
fillSplitOverflowRenderersForPartialResult
private void fillSplitOverflowRenderersForPartialResult(AbstractRenderer splitRenderer, AbstractRenderer overflowRenderer, List<FlexItemInfo> line, IRenderer childRenderer, LayoutResult childResult) -
findMinMaxWidthIfCorrespondingPropertiesAreNotSet
private void findMinMaxWidthIfCorrespondingPropertiesAreNotSet(MinMaxWidth minMaxWidth, AbstractWidthHandler minMaxWidthHandler) -
findMinMaxWidth
private void findMinMaxWidth(float initialMinWidth, float initialMaxWidth, AbstractWidthHandler minMaxWidthHandler, List<IRenderer> childRenderers) -
isRowReverse
private boolean isRowReverse()Check if flex container direction is row reverse.- Returns:
true
if flex-direction property is set to row-reverse,false
otherwise.
-
isColumnReverse
private boolean isColumnReverse() -
createMainDirector
-
retrieveRenderersToOverflow
-
adjustLayoutResultToHandleOverflowRenderers
private void adjustLayoutResultToHandleOverflowRenderers(LayoutResult result, List<IRenderer> renderersToOverflow)
-