Package com.itextpdf.layout.renderer
Class FlexUtil
- java.lang.Object
-
- com.itextpdf.layout.renderer.FlexUtil
-
final class FlexUtil extends java.lang.Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static class
FlexUtil.FlexItemCalculationInfo
-
Field Summary
Fields Modifier and Type Field Description private static float
EPSILON
private static float
FLEX_GROW_INITIAL_VALUE
private static float
FLEX_SHRINK_INITIAL_VALUE
private static org.slf4j.Logger
logger
-
Constructor Summary
Constructors Modifier Constructor Description private
FlexUtil()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description private static void
applyAlignContent(java.util.List<java.util.List<FlexUtil.FlexItemCalculationInfo>> lines, AlignContentPropertyValue alignContent, float freeSpace, boolean isColumnDirection)
private static void
applyAlignContent(java.util.List<java.util.List<FlexUtil.FlexItemCalculationInfo>> lines, FlexContainerRenderer renderer, java.lang.Float crossSize, Rectangle layoutBox)
private static void
applyAlignItemsAndAlignSelf(java.util.List<java.util.List<FlexUtil.FlexItemCalculationInfo>> lines, FlexContainerRenderer renderer, java.util.List<java.lang.Float> lineCrossSizes)
private static void
applyCentralAlignment(java.util.List<java.util.List<FlexUtil.FlexItemCalculationInfo>> lines, float freeSpace, boolean isColumnDirection)
private static void
applyFlexEndAlignment(java.util.List<java.util.List<FlexUtil.FlexItemCalculationInfo>> lines, float freeSpace, boolean isColumnDirection)
private static void
applyJustifyContent(java.util.List<java.util.List<FlexUtil.FlexItemCalculationInfo>> lines, FlexContainerRenderer renderer, float mainSize, float containerMainSize)
private static void
applySpaceAroundAlignment(java.util.List<java.util.List<FlexUtil.FlexItemCalculationInfo>> lines, float freeSpace, boolean isColumnDirection)
private static void
applySpaceBetweenAlignment(java.util.List<java.util.List<FlexUtil.FlexItemCalculationInfo>> lines, float freeSpace, boolean isColumnDirection)
private static void
applySpaceEvenlyAlignment(java.util.List<java.util.List<FlexUtil.FlexItemCalculationInfo>> lines, float freeSpace, boolean isColumnDirection)
static java.util.List<java.util.List<FlexItemInfo>>
calculateChildrenRectangles(Rectangle flexContainerBBox, FlexContainerRenderer flexContainerRenderer)
Performs flex layout algorithm.(package private) static java.util.List<java.lang.Float>
calculateColumnDirectionCrossSizes(java.util.List<java.util.List<FlexItemInfo>> lines)
(package private) static java.util.List<java.lang.Float>
calculateCrossSizeOfEachFlexLine(java.util.List<java.util.List<FlexUtil.FlexItemCalculationInfo>> lines, java.lang.Float minCrossSize, java.lang.Float crossSize, java.lang.Float maxCrossSize)
private static float
calculateFreeSpace(java.util.List<FlexUtil.FlexItemCalculationInfo> line, float initialFreeSpace)
private static float
calculateHeight(AbstractRenderer flexItemRenderer, float width)
private static float
calculateMaxMainSize(AbstractRenderer flexItemRenderer, float flexContainerMainSize, boolean isColumnDirection, float crossSize)
(package private) static java.util.List<java.util.List<FlexUtil.FlexItemCalculationInfo>>
collectFlexItemsIntoFlexLines(java.util.List<FlexUtil.FlexItemCalculationInfo> flexItemCalculationInfos, float mainSize, boolean isSingleLine)
private static java.util.List<FlexUtil.FlexItemCalculationInfo>
createFlexItemCalculationInfos(FlexContainerRenderer flexContainerRenderer, float flexContainerMainSize, float crossSize)
(package private) static void
determineFlexBasisAndHypotheticalMainSizeForFlexItems(java.util.List<FlexUtil.FlexItemCalculationInfo> flexItemCalculationInfos, float crossSize, boolean isColumnDirection)
private static void
determineHypotheticalCrossSizeForFlexItem(FlexUtil.FlexItemCalculationInfo info, boolean isColumnDirection, float crossSize)
(package private) static void
determineHypotheticalCrossSizeForFlexItems(java.util.List<java.util.List<FlexUtil.FlexItemCalculationInfo>> lines, boolean isColumnDirection, float crossSize)
(package private) static void
determineUsedCrossSizeOfEachFlexItem(java.util.List<java.util.List<FlexUtil.FlexItemCalculationInfo>> lines, java.util.List<java.lang.Float> lineCrossSizes, FlexContainerRenderer flexContainerRenderer)
private static java.lang.Float[]
getCrossSizes(FlexContainerRenderer renderer, Rectangle layoutBox)
private static float
getItemMaxCrossSize(java.util.List<FlexUtil.FlexItemCalculationInfo> line)
(package private) static float
getMainSize(FlexContainerRenderer renderer, Rectangle layoutBox)
(package private) static void
handleAlignContentStretch(FlexContainerRenderer flexContainerRenderer, java.util.List<java.util.List<FlexUtil.FlexItemCalculationInfo>> lines, java.lang.Float crossSize, java.util.List<java.lang.Float> lineCrossSizes, Rectangle layoutBox)
private static boolean
hasFlexibleItems(java.util.List<FlexUtil.FlexItemCalculationInfo> line)
(package private) static boolean
isColumnDirection(FlexContainerRenderer renderer)
(package private) static boolean
isZero(float value)
(package private) static void
resolveFlexibleLengths(java.util.List<java.util.List<FlexUtil.FlexItemCalculationInfo>> lines, float mainSize)
private static void
resolveFlexibleLengths(java.util.List<java.util.List<FlexUtil.FlexItemCalculationInfo>> lines, float layoutBoxSize, float containerSize)
private static java.lang.Float
resolveUnitValue(FlexContainerRenderer renderer, int property, float baseValue)
private static java.util.List<java.lang.Float>
retrieveCurrentPageLineCrossSizes(FlexContainerRenderer flexContainerRenderer, java.util.List<java.util.List<FlexUtil.FlexItemCalculationInfo>> lines, java.util.List<java.lang.Float> lineCrossSizes, java.lang.Float crossSize, Rectangle layoutBox)
private static java.lang.Float
retrieveMaxHeightForMainDirection(AbstractRenderer renderer)
private static java.lang.Float
retrieveMinHeightForMainDirection(AbstractRenderer renderer)
-
-
-
Field Detail
-
EPSILON
private static final float EPSILON
- See Also:
- Constant Field Values
-
FLEX_GROW_INITIAL_VALUE
private static final float FLEX_GROW_INITIAL_VALUE
- See Also:
- Constant Field Values
-
FLEX_SHRINK_INITIAL_VALUE
private static final float FLEX_SHRINK_INITIAL_VALUE
- See Also:
- Constant Field Values
-
logger
private static final org.slf4j.Logger logger
-
-
Method Detail
-
calculateChildrenRectangles
public static java.util.List<java.util.List<FlexItemInfo>> calculateChildrenRectangles(Rectangle flexContainerBBox, FlexContainerRenderer flexContainerRenderer)
Performs flex layout algorithm.The algorithm could be found here: {@see https://www.w3.org/TR/css-flexbox-1/#layout-algorithm}
- Parameters:
flexContainerBBox
- bounding box in which flex container should be renderedflexContainerRenderer
- flex container's renderer- Returns:
- list of lines
-
applyAlignContent
private static void applyAlignContent(java.util.List<java.util.List<FlexUtil.FlexItemCalculationInfo>> lines, FlexContainerRenderer renderer, java.lang.Float crossSize, Rectangle layoutBox)
-
applyAlignContent
private static void applyAlignContent(java.util.List<java.util.List<FlexUtil.FlexItemCalculationInfo>> lines, AlignContentPropertyValue alignContent, float freeSpace, boolean isColumnDirection)
-
applyFlexEndAlignment
private static void applyFlexEndAlignment(java.util.List<java.util.List<FlexUtil.FlexItemCalculationInfo>> lines, float freeSpace, boolean isColumnDirection)
-
applySpaceBetweenAlignment
private static void applySpaceBetweenAlignment(java.util.List<java.util.List<FlexUtil.FlexItemCalculationInfo>> lines, float freeSpace, boolean isColumnDirection)
-
applySpaceEvenlyAlignment
private static void applySpaceEvenlyAlignment(java.util.List<java.util.List<FlexUtil.FlexItemCalculationInfo>> lines, float freeSpace, boolean isColumnDirection)
-
applySpaceAroundAlignment
private static void applySpaceAroundAlignment(java.util.List<java.util.List<FlexUtil.FlexItemCalculationInfo>> lines, float freeSpace, boolean isColumnDirection)
-
applyCentralAlignment
private static void applyCentralAlignment(java.util.List<java.util.List<FlexUtil.FlexItemCalculationInfo>> lines, float freeSpace, boolean isColumnDirection)
-
getItemMaxCrossSize
private static float getItemMaxCrossSize(java.util.List<FlexUtil.FlexItemCalculationInfo> line)
-
isColumnDirection
static boolean isColumnDirection(FlexContainerRenderer renderer)
-
getMainSize
static float getMainSize(FlexContainerRenderer renderer, Rectangle layoutBox)
-
resolveUnitValue
private static java.lang.Float resolveUnitValue(FlexContainerRenderer renderer, int property, float baseValue)
-
getCrossSizes
private static java.lang.Float[] getCrossSizes(FlexContainerRenderer renderer, Rectangle layoutBox)
-
determineFlexBasisAndHypotheticalMainSizeForFlexItems
static void determineFlexBasisAndHypotheticalMainSizeForFlexItems(java.util.List<FlexUtil.FlexItemCalculationInfo> flexItemCalculationInfos, float crossSize, boolean isColumnDirection)
-
collectFlexItemsIntoFlexLines
static java.util.List<java.util.List<FlexUtil.FlexItemCalculationInfo>> collectFlexItemsIntoFlexLines(java.util.List<FlexUtil.FlexItemCalculationInfo> flexItemCalculationInfos, float mainSize, boolean isSingleLine)
-
resolveFlexibleLengths
static void resolveFlexibleLengths(java.util.List<java.util.List<FlexUtil.FlexItemCalculationInfo>> lines, float mainSize)
-
resolveFlexibleLengths
private static void resolveFlexibleLengths(java.util.List<java.util.List<FlexUtil.FlexItemCalculationInfo>> lines, float layoutBoxSize, float containerSize)
-
determineHypotheticalCrossSizeForFlexItems
static void determineHypotheticalCrossSizeForFlexItems(java.util.List<java.util.List<FlexUtil.FlexItemCalculationInfo>> lines, boolean isColumnDirection, float crossSize)
-
determineHypotheticalCrossSizeForFlexItem
private static void determineHypotheticalCrossSizeForFlexItem(FlexUtil.FlexItemCalculationInfo info, boolean isColumnDirection, float crossSize)
-
calculateColumnDirectionCrossSizes
static java.util.List<java.lang.Float> calculateColumnDirectionCrossSizes(java.util.List<java.util.List<FlexItemInfo>> lines)
-
calculateCrossSizeOfEachFlexLine
static java.util.List<java.lang.Float> calculateCrossSizeOfEachFlexLine(java.util.List<java.util.List<FlexUtil.FlexItemCalculationInfo>> lines, java.lang.Float minCrossSize, java.lang.Float crossSize, java.lang.Float maxCrossSize)
-
handleAlignContentStretch
static void handleAlignContentStretch(FlexContainerRenderer flexContainerRenderer, java.util.List<java.util.List<FlexUtil.FlexItemCalculationInfo>> lines, java.lang.Float crossSize, java.util.List<java.lang.Float> lineCrossSizes, Rectangle layoutBox)
-
determineUsedCrossSizeOfEachFlexItem
static void determineUsedCrossSizeOfEachFlexItem(java.util.List<java.util.List<FlexUtil.FlexItemCalculationInfo>> lines, java.util.List<java.lang.Float> lineCrossSizes, FlexContainerRenderer flexContainerRenderer)
-
retrieveMaxHeightForMainDirection
private static java.lang.Float retrieveMaxHeightForMainDirection(AbstractRenderer renderer)
-
retrieveMinHeightForMainDirection
private static java.lang.Float retrieveMinHeightForMainDirection(AbstractRenderer renderer)
-
applyAlignItemsAndAlignSelf
private static void applyAlignItemsAndAlignSelf(java.util.List<java.util.List<FlexUtil.FlexItemCalculationInfo>> lines, FlexContainerRenderer renderer, java.util.List<java.lang.Float> lineCrossSizes)
-
applyJustifyContent
private static void applyJustifyContent(java.util.List<java.util.List<FlexUtil.FlexItemCalculationInfo>> lines, FlexContainerRenderer renderer, float mainSize, float containerMainSize)
-
calculateFreeSpace
private static float calculateFreeSpace(java.util.List<FlexUtil.FlexItemCalculationInfo> line, float initialFreeSpace)
-
hasFlexibleItems
private static boolean hasFlexibleItems(java.util.List<FlexUtil.FlexItemCalculationInfo> line)
-
isZero
static boolean isZero(float value)
-
createFlexItemCalculationInfos
private static java.util.List<FlexUtil.FlexItemCalculationInfo> createFlexItemCalculationInfos(FlexContainerRenderer flexContainerRenderer, float flexContainerMainSize, float crossSize)
-
calculateMaxMainSize
private static float calculateMaxMainSize(AbstractRenderer flexItemRenderer, float flexContainerMainSize, boolean isColumnDirection, float crossSize)
-
retrieveCurrentPageLineCrossSizes
private static java.util.List<java.lang.Float> retrieveCurrentPageLineCrossSizes(FlexContainerRenderer flexContainerRenderer, java.util.List<java.util.List<FlexUtil.FlexItemCalculationInfo>> lines, java.util.List<java.lang.Float> lineCrossSizes, java.lang.Float crossSize, Rectangle layoutBox)
-
calculateHeight
private static float calculateHeight(AbstractRenderer flexItemRenderer, float width)
-
-