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 MarginsCollapseInfo
private Rectangle
private MarginsCollapseInfo
private MarginsCollapseInfo
private int
private boolean
private MarginsCollapseInfo
private int
private IRenderer
-
Constructor Summary
ConstructorsConstructorDescriptionMarginsCollapseHandler
(IRenderer renderer, MarginsCollapseInfo marginsCollapseInfo) -
Method Summary
Modifier and TypeMethodDescriptionprivate void
addNotYetAppliedTopMargin
(Rectangle layoutBox) private void
applyBottomMargin
(Rectangle box, float bottomIndent) void
applyClearance
(float clearHeightCorrection) private void
private void
applyTopMargin
(Rectangle box, float topIndent) private MarginsCollapseInfo
createMarginsInfoForBlockChild
(int childIndex) private static float
defineBottomMarginValueForCollapse
(IRenderer renderer) private static float
defineMarginValueForCollapse
(IRenderer renderer, int property) private static float
defineTopMarginValueForCollapse
(IRenderer renderer) void
endChildMarginsHandling
(Rectangle layoutBox) This method shall be called after child occupied area is included into parent occupied area.void
endMarginsCollapse
(Rectangle layoutBox) private static boolean
private void
fixPrevChildOccupiedArea
(int childIndex) private IRenderer
getRendererChild
(int index) private void
private static boolean
hasBottomBorders
(IRenderer renderer) private static boolean
hasBottomPadding
(IRenderer renderer) private static boolean
hasHeightProp
(IRenderer renderer) private static boolean
hasPadding
(IRenderer renderer, int property) private static boolean
hasPositiveHeight
(IRenderer renderer) private static boolean
hasTopBorders
(IRenderer renderer) private static boolean
hasTopPadding
(IRenderer renderer) private static void
ignoreModelBottomMargin
(IRenderer renderer) private static void
ignoreModelTopMargin
(IRenderer renderer) private static boolean
isBlockElement
(IRenderer renderer) private static boolean
private static boolean
marginsCouldBeSelfCollapsing
(IRenderer renderer) private static void
overrideModelBottomMargin
(IRenderer renderer, float collapsedMargins) private static void
overrideModelMargin
(IRenderer renderer, int property, float collapsedMargins) private static void
overrideModelTopMargin
(IRenderer renderer, float collapsedMargins) private void
prepareBoxForLayoutAttempt
(Rectangle layoutBox, int childIndex, boolean childIsBlockElement) void
processFixedHeightAdjustment
(float heightDelta) private void
processUsedChildBufferSpaceOnTop
(Rectangle layoutBox) private IRenderer
removeRendererChild
(int index) private static boolean
rendererIsFloated
(IRenderer renderer) private void
startChildMarginsHandling
(IRenderer child, Rectangle layoutBox) void
startMarginsCollapse
(Rectangle parentBBox) private void
subtractUsedTopBufferFromBottomBuffer
(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
-