Class MarginsCollapseHandler

java.lang.Object
com.itextpdf.layout.margincollapse.MarginsCollapseHandler

public class MarginsCollapseHandler extends 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 Details

    • renderer

      private IRenderer renderer
    • collapseInfo

      private MarginsCollapseInfo collapseInfo
    • childMarginInfo

      private MarginsCollapseInfo childMarginInfo
    • prevChildMarginInfo

      private MarginsCollapseInfo prevChildMarginInfo
    • firstNotEmptyKidIndex

      private int firstNotEmptyKidIndex
    • processedChildrenNum

      private int processedChildrenNum
    • rendererChildren

      private List<IRenderer> rendererChildren
    • backupLayoutBox

      private Rectangle backupLayoutBox
    • backupCollapseInfo

      private MarginsCollapseInfo backupCollapseInfo
    • lastKidCollapsedAfterHasClearanceApplied

      private boolean lastKidCollapsedAfterHasClearanceApplied
  • Constructor Details

  • Method Details

    • processFixedHeightAdjustment

      public void processFixedHeightAdjustment(float heightDelta)
    • startChildMarginsHandling

      public MarginsCollapseInfo startChildMarginsHandling(IRenderer child, Rectangle layoutBox)
    • 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)