Class MarginsCollapseHandler


  • public class MarginsCollapseHandler
    extends java.lang.Object
    Rules of the margins collapsing are taken from Mozilla Developer Network: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Box_Model/Mastering_margin_collapsing See also: https://www.w3.org/TR/CSS2/box.html#collapsing-margins
    • Field Detail

      • firstNotEmptyKidIndex

        private int firstNotEmptyKidIndex
      • processedChildrenNum

        private int processedChildrenNum
      • rendererChildren

        private java.util.List<IRenderer> rendererChildren
      • backupLayoutBox

        private Rectangle backupLayoutBox
      • lastKidCollapsedAfterHasClearanceApplied

        private boolean lastKidCollapsedAfterHasClearanceApplied
    • Method Detail

      • processFixedHeightAdjustment

        public void processFixedHeightAdjustment​(float heightDelta)
      • applyClearance

        public void applyClearance​(float clearHeightCorrection)
      • createMarginsInfoForBlockChild

        private MarginsCollapseInfo createMarginsInfoForBlockChild​(int childIndex)
      • endChildMarginsHandling

        public void endChildMarginsHandling​(Rectangle layoutBox)
        This method shall be called after child occupied area is included into parent occupied area.
        Parameters:
        layoutBox - available area for child and its siblings layout. It might be adjusted inside the method
      • startMarginsCollapse

        public void startMarginsCollapse​(Rectangle parentBBox)
      • endMarginsCollapse

        public void endMarginsCollapse​(Rectangle layoutBox)
      • updateCollapseBeforeIfPrevKidIsFirstAndSelfCollapsed

        private void updateCollapseBeforeIfPrevKidIsFirstAndSelfCollapsed​(MarginsCollapse collapseAfter)
      • prepareBoxForLayoutAttempt

        private void prepareBoxForLayoutAttempt​(Rectangle layoutBox,
                                                int childIndex,
                                                boolean childIsBlockElement)
      • restoreLayoutBoxAfterFailedLayoutAttempt

        private void restoreLayoutBoxAfterFailedLayoutAttempt​(Rectangle layoutBox)
      • applyTopMargin

        private void applyTopMargin​(Rectangle box,
                                    float topIndent)
      • applyBottomMargin

        private void applyBottomMargin​(Rectangle box,
                                       float bottomIndent)
      • processUsedChildBufferSpaceOnTop

        private void processUsedChildBufferSpaceOnTop​(Rectangle layoutBox)
      • subtractUsedTopBufferFromBottomBuffer

        private void subtractUsedTopBufferFromBottomBuffer​(float usedTopBuffer)
      • fixPrevChildOccupiedArea

        private void fixPrevChildOccupiedArea​(int childIndex)
      • addNotYetAppliedTopMargin

        private void addNotYetAppliedTopMargin​(Rectangle layoutBox)
      • applySelfCollapsedKidMarginWithClearance

        private void applySelfCollapsedKidMarginWithClearance​(Rectangle layoutBox)
      • getRendererChild

        private IRenderer getRendererChild​(int index)
      • removeRendererChild

        private IRenderer removeRendererChild​(int index)
      • getRidOfCollapseArtifactsAtopOccupiedArea

        private void getRidOfCollapseArtifactsAtopOccupiedArea()
      • marginsCouldBeSelfCollapsing

        private static boolean marginsCouldBeSelfCollapsing​(IRenderer renderer)
      • firstChildMarginAdjoinedToParent

        private static boolean firstChildMarginAdjoinedToParent​(IRenderer parent)
      • lastChildMarginAdjoinedToParent

        private static boolean lastChildMarginAdjoinedToParent​(IRenderer parent)
      • isBlockElement

        private static boolean isBlockElement​(IRenderer renderer)
      • hasHeightProp

        private static boolean hasHeightProp​(IRenderer renderer)
      • hasPositiveHeight

        private static boolean hasPositiveHeight​(IRenderer renderer)
      • hasTopPadding

        private static boolean hasTopPadding​(IRenderer renderer)
      • hasBottomPadding

        private static boolean hasBottomPadding​(IRenderer renderer)
      • hasTopBorders

        private static boolean hasTopBorders​(IRenderer renderer)
      • hasBottomBorders

        private static boolean hasBottomBorders​(IRenderer renderer)
      • rendererIsFloated

        private static boolean rendererIsFloated​(IRenderer renderer)
      • defineTopMarginValueForCollapse

        private static float defineTopMarginValueForCollapse​(IRenderer renderer)
      • ignoreModelTopMargin

        private static void ignoreModelTopMargin​(IRenderer renderer)
      • overrideModelTopMargin

        private static void overrideModelTopMargin​(IRenderer renderer,
                                                   float collapsedMargins)
      • defineBottomMarginValueForCollapse

        private static float defineBottomMarginValueForCollapse​(IRenderer renderer)
      • ignoreModelBottomMargin

        private static void ignoreModelBottomMargin​(IRenderer renderer)
      • overrideModelBottomMargin

        private static void overrideModelBottomMargin​(IRenderer renderer,
                                                      float collapsedMargins)
      • defineMarginValueForCollapse

        private static float defineMarginValueForCollapse​(IRenderer renderer,
                                                          int property)
      • overrideModelMargin

        private static void overrideModelMargin​(IRenderer renderer,
                                                int property,
                                                float collapsedMargins)
      • hasPadding

        private static boolean hasPadding​(IRenderer renderer,
                                          int property)
      • hasBorders

        private static boolean hasBorders​(IRenderer renderer,
                                          int property)