Class FlexUtil


  • final class FlexUtil
    extends java.lang.Object
    • Field Detail

      • 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
    • Constructor Detail

      • FlexUtil

        private FlexUtil()
    • 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 rendered
        flexContainerRenderer - flex container's renderer
        Returns:
        list of lines
      • 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)
      • resolveUnitValue

        private static java.lang.Float resolveUnitValue​(FlexContainerRenderer renderer,
                                                        int property,
                                                        float baseValue)
      • determineFlexBasisAndHypotheticalMainSizeForFlexItems

        static void determineFlexBasisAndHypotheticalMainSizeForFlexItems​(java.util.List<FlexUtil.FlexItemCalculationInfo> flexItemCalculationInfos,
                                                                          float crossSize,
                                                                          boolean isColumnDirection)
      • 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)
      • retrieveMaxHeightForMainDirection

        private static java.lang.Float retrieveMaxHeightForMainDirection​(AbstractRenderer renderer)
      • retrieveMinHeightForMainDirection

        private static java.lang.Float retrieveMinHeightForMainDirection​(AbstractRenderer renderer)
      • isZero

        static boolean isZero​(float value)
      • 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)