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
FieldsModifier and TypeFieldDescriptionprivate IFlexItemMainDirectorChild renderers and their heights and min heights before the layout.Used for caching purposes in FlexUtil We couldn't find the real use case when this map contains more than 1 entry but let it still be a map to be on a safe(r) side Map mainSize (always width in our case) - hypotheticalCrossSizeprivate List<List<FlexItemInfo>> Fields inherited from class 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 TypeMethodDescriptionvoidAdds a child to the current rendererprivate static voidaddSimulateDiv(AbstractRenderer overflowRenderer, float width) private voidadjustLayoutResultToHandleOverflowRenderers(LayoutResult result, List<IRenderer> renderersToOverflow) private voidApply wrap-reverse property.private IFlexItemMainDirector(package private) AbstractRenderer[]createSplitAndOverflowRenderers(int childPos, int layoutStatus, LayoutResult childResult, Map<Integer, IRenderer> waitingFloatsSplitRenderers, List<IRenderer> waitingOverflowFloatRenderers) (package private) voiddecreaseLayoutBoxAfterChildPlacement(Rectangle layoutBox, LayoutResult result, IRenderer childRenderer) (package private) voiddecreaseLayoutBoxAfterChildPlacementColumnLayout(Rectangle layoutBox, IRenderer childRenderer) (package private) voiddecreaseLayoutBoxAfterChildPlacementRowLayout(Rectangle layoutBox, LayoutResult result, IRenderer childRenderer) private voidfillSplitOverflowRenderersForPartialResult(AbstractRenderer splitRenderer, AbstractRenderer overflowRenderer, List<FlexItemInfo> line, IRenderer childRenderer, LayoutResult childResult) private FlexItemInfofindFlexItemInfo(AbstractRenderer renderer) private List<FlexItemInfo> private voidfindMinMaxWidth(float initialMinWidth, float initialMaxWidth, AbstractWidthHandler minMaxWidthHandler, List<IRenderer> childRenderers) private voidfindMinMaxWidthIfCorrespondingPropertiesAreNotSet(MinMaxWidth minMaxWidth, AbstractWidthHandler minMaxWidthHandler) (package private) voidfixOccupiedAreaIfOverflowedX(OverflowPropertyValue overflowX, Rectangle layoutBox) (package private) IFlexItemMainDirector(package private) FloatgetHypotheticalCrossSize(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) LayoutAreagetOccupiedAreaInCaseNothingWasWrappedWithFull(LayoutResult result, IRenderer splitRenderer) (package private) voidhandleForcedPlacement(boolean anythingPlaced) private booleanprivate booleanCheck if flex container direction is row reverse.(package private) booleanCheck 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) LayoutResultprocessNotFullChildResult(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) RectanglerecalculateLayoutBoxBeforeChildLayout(Rectangle layoutBox, IRenderer childRenderer, Rectangle initialLayoutBox) (package private) voidrecalculateOccupiedAreaAfterChildLayout(Rectangle resultBBox, Float blockMaxHeight) private voidrestoreHeightForOverflowRenderer(IRenderer childRenderer, IRenderer overflowRenderer) retrieveRenderersToOverflow(Rectangle flexContainerBBox) private voidsetAlignSelfIfNotStretch(IRenderer overflowRenderer) (package private) voidsetHypotheticalCrossSize(Float mainSize, Float hypotheticalCrossSize) (package private) MarginsCollapseInfostartChildMarginsHandling(IRenderer childRenderer, Rectangle layoutBox, MarginsCollapseHandler marginsCollapseHandler) (package private) booleanstopLayoutingChildrenIfChildResultNotFull(LayoutResult returnResult) Methods inherited from class BlockRenderer
applyMaxHeight, applyMinHeight, applyRotationLayout, applyVerticalAlignment, applyWidth, beginRotationIfApplied, correctFixedLayout, createOverflowRenderer, createRotationTransformInsideOccupiedArea, createSplitRenderer, draw, endRotationIfApplied, fixOccupiedAreaIfOverflowedY, getMinMaxWidth, getOccupiedAreaBBox, getResolvedFontMethods inherited from class 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, retrieveResolvedDeclaredHeight, 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
-
heights
-
-
Constructor Details
-
FlexContainerRenderer
-
-
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:
getNextRendererin interfaceIRenderer- Overrides:
getNextRendererin 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.LayoutResultcan be extended to return custom layout results for custom elements, e.g.TextRendererusesTextLayoutResultas 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:
layoutin interfaceIRenderer- Overrides:
layoutin 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:
getMinMaxWidthin classBlockRenderer- Returns:
- instance of
MinMaxWidth
-
getFlexItemMainDirector
IFlexItemMainDirector getFlexItemMainDirector() -
isWrapReverse
boolean isWrapReverse()Check if flex container is wrapped reversely.- Returns:
trueif flex-wrap property is set to wrap-reverse,falseotherwise.
-
createSplitAndOverflowRenderers
AbstractRenderer[] createSplitAndOverflowRenderers(int childPos, int layoutStatus, LayoutResult childResult, Map<Integer, IRenderer> waitingFloatsSplitRenderers, List<IRenderer> waitingOverflowFloatRenderers) - Overrides:
createSplitAndOverflowRenderersin 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:
processNotFullChildResultin classBlockRenderer
-
getOccupiedAreaInCaseNothingWasWrappedWithFull
LayoutArea getOccupiedAreaInCaseNothingWasWrappedWithFull(LayoutResult result, IRenderer splitRenderer) -
stopLayoutingChildrenIfChildResultNotFull
- Overrides:
stopLayoutingChildrenIfChildResultNotFullin classBlockRenderer
-
recalculateOccupiedAreaAfterChildLayout
- Overrides:
recalculateOccupiedAreaAfterChildLayoutin classBlockRenderer
-
startChildMarginsHandling
MarginsCollapseInfo startChildMarginsHandling(IRenderer childRenderer, Rectangle layoutBox, MarginsCollapseHandler marginsCollapseHandler) - Overrides:
startChildMarginsHandlingin classBlockRenderer
-
decreaseLayoutBoxAfterChildPlacement
void decreaseLayoutBoxAfterChildPlacement(Rectangle layoutBox, LayoutResult result, IRenderer childRenderer) - Overrides:
decreaseLayoutBoxAfterChildPlacementin classBlockRenderer
-
decreaseLayoutBoxAfterChildPlacementRowLayout
void decreaseLayoutBoxAfterChildPlacementRowLayout(Rectangle layoutBox, LayoutResult result, IRenderer childRenderer) -
decreaseLayoutBoxAfterChildPlacementColumnLayout
-
recalculateLayoutBoxBeforeChildLayout
Rectangle recalculateLayoutBoxBeforeChildLayout(Rectangle layoutBox, IRenderer childRenderer, Rectangle initialLayoutBox) - Overrides:
recalculateLayoutBoxBeforeChildLayoutin classBlockRenderer
-
handleForcedPlacement
void handleForcedPlacement(boolean anythingPlaced) - Overrides:
handleForcedPlacementin classBlockRenderer
-
setHypotheticalCrossSize
-
getHypotheticalCrossSize
-
applyWrapReverse
private void applyWrapReverse()Apply wrap-reverse property. -
findFlexItemInfo
-
findLine
-
fixOccupiedAreaIfOverflowedX
- Overrides:
fixOccupiedAreaIfOverflowedXin classBlockRenderer
-
addChild
Adds a child to the current renderer- Specified by:
addChildin interfaceIRenderer- Overrides:
addChildin classAbstractRenderer- Parameters:
renderer- a child to be added
-
addSimulateDiv
-
fillSplitOverflowRenderersForPartialResult
private void fillSplitOverflowRenderersForPartialResult(AbstractRenderer splitRenderer, AbstractRenderer overflowRenderer, List<FlexItemInfo> line, IRenderer childRenderer, LayoutResult childResult) -
setAlignSelfIfNotStretch
-
restoreHeightForOverflowRenderer
-
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:
trueif flex-direction property is set to row-reverse,falseotherwise.
-
isColumnReverse
private boolean isColumnReverse() -
createMainDirector
-
retrieveRenderersToOverflow
-
adjustLayoutResultToHandleOverflowRenderers
private void adjustLayoutResultToHandleOverflowRenderers(LayoutResult result, List<IRenderer> renderersToOverflow)
-