Class MarginsCollapseHandler
java.lang.Object
com.itextpdf.layout.margincollapse.MarginsCollapseHandler
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 Summary
FieldsModifier and TypeFieldDescriptionprivate MarginsCollapseInfoprivate Rectangleprivate MarginsCollapseInfoprivate MarginsCollapseInfoprivate intprivate booleanprivate MarginsCollapseInfoprivate intprivate IRenderer -
Constructor Summary
ConstructorsConstructorDescriptionMarginsCollapseHandler(IRenderer renderer, MarginsCollapseInfo marginsCollapseInfo) -
Method Summary
Modifier and TypeMethodDescriptionprivate voidaddNotYetAppliedTopMargin(Rectangle layoutBox) private voidapplyBottomMargin(Rectangle box, float bottomIndent) voidapplyClearance(float clearHeightCorrection) private voidprivate voidapplyTopMargin(Rectangle box, float topIndent) private MarginsCollapseInfocreateMarginsInfoForBlockChild(int childIndex) private static floatdefineBottomMarginValueForCollapse(IRenderer renderer) private static floatdefineMarginValueForCollapse(IRenderer renderer, int property) private static floatdefineTopMarginValueForCollapse(IRenderer renderer) voidendChildMarginsHandling(Rectangle layoutBox) This method shall be called after child occupied area is included into parent occupied area.voidendMarginsCollapse(Rectangle layoutBox) private static booleanprivate voidfixPrevChildOccupiedArea(int childIndex) private IRenderergetRendererChild(int index) private voidprivate static booleanhasBottomBorders(IRenderer renderer) private static booleanhasBottomPadding(IRenderer renderer) private static booleanhasHeightProp(IRenderer renderer) private static booleanhasPadding(IRenderer renderer, int property) private static booleanhasPositiveHeight(IRenderer renderer) private static booleanhasTopBorders(IRenderer renderer) private static booleanhasTopPadding(IRenderer renderer) private static voidignoreModelBottomMargin(IRenderer renderer) private static voidignoreModelTopMargin(IRenderer renderer) private static booleanisBlockElement(IRenderer renderer) private static booleanprivate static booleanmarginsCouldBeSelfCollapsing(IRenderer renderer) private static voidoverrideModelBottomMargin(IRenderer renderer, float collapsedMargins) private static voidoverrideModelMargin(IRenderer renderer, int property, float collapsedMargins) private static voidoverrideModelTopMargin(IRenderer renderer, float collapsedMargins) private voidprepareBoxForLayoutAttempt(Rectangle layoutBox, int childIndex, boolean childIsBlockElement) voidprocessFixedHeightAdjustment(float heightDelta) private voidprocessUsedChildBufferSpaceOnTop(Rectangle layoutBox) private IRendererremoveRendererChild(int index) private static booleanrendererIsFloated(IRenderer renderer) private voidstartChildMarginsHandling(IRenderer child, Rectangle layoutBox) voidstartMarginsCollapse(Rectangle parentBBox) private voidsubtractUsedTopBufferFromBottomBuffer(float usedTopBuffer) private void
-
Field Details
-
renderer
-
collapseInfo
-
childMarginInfo
-
prevChildMarginInfo
-
firstNotEmptyKidIndex
private int firstNotEmptyKidIndex -
processedChildrenNum
private int processedChildrenNum -
rendererChildren
-
backupLayoutBox
-
backupCollapseInfo
-
lastKidCollapsedAfterHasClearanceApplied
private boolean lastKidCollapsedAfterHasClearanceApplied
-
-
Constructor Details
-
MarginsCollapseHandler
-
-
Method Details
-
processFixedHeightAdjustment
public void processFixedHeightAdjustment(float heightDelta) -
startChildMarginsHandling
-
applyClearance
public void applyClearance(float clearHeightCorrection) -
createMarginsInfoForBlockChild
-
endChildMarginsHandling
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
-
endMarginsCollapse
-
updateCollapseBeforeIfPrevKidIsFirstAndSelfCollapsed
-
prepareBoxForLayoutAttempt
private void prepareBoxForLayoutAttempt(Rectangle layoutBox, int childIndex, boolean childIsBlockElement) -
restoreLayoutBoxAfterFailedLayoutAttempt
-
applyTopMargin
-
applyBottomMargin
-
processUsedChildBufferSpaceOnTop
-
subtractUsedTopBufferFromBottomBuffer
private void subtractUsedTopBufferFromBottomBuffer(float usedTopBuffer) -
fixPrevChildOccupiedArea
private void fixPrevChildOccupiedArea(int childIndex) -
addNotYetAppliedTopMargin
-
applySelfCollapsedKidMarginWithClearance
-
getRendererChild
-
removeRendererChild
-
getRidOfCollapseArtifactsAtopOccupiedArea
private void getRidOfCollapseArtifactsAtopOccupiedArea() -
marginsCouldBeSelfCollapsing
-
firstChildMarginAdjoinedToParent
-
lastChildMarginAdjoinedToParent
-
isBlockElement
-
hasHeightProp
-
hasPositiveHeight
-
hasTopPadding
-
hasBottomPadding
-
hasTopBorders
-
hasBottomBorders
-
rendererIsFloated
-
defineTopMarginValueForCollapse
-
ignoreModelTopMargin
-
overrideModelTopMargin
-
defineBottomMarginValueForCollapse
-
ignoreModelBottomMargin
-
overrideModelBottomMargin
-
defineMarginValueForCollapse
-
overrideModelMargin
-
hasPadding
-