Class MarginsCollapseHandler
- java.lang.Object
-
- com.itextpdf.layout.margincollapse.MarginsCollapseHandler
-
public class MarginsCollapseHandler extends java.lang.ObjectRules 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
Fields Modifier and Type Field Description private MarginsCollapseInfobackupCollapseInfoprivate RectanglebackupLayoutBoxprivate MarginsCollapseInfochildMarginInfoprivate MarginsCollapseInfocollapseInfoprivate intfirstNotEmptyKidIndexprivate booleanlastKidCollapsedAfterHasClearanceAppliedprivate MarginsCollapseInfoprevChildMarginInfoprivate intprocessedChildrenNumprivate IRendererrendererprivate java.util.List<IRenderer>rendererChildren
-
Constructor Summary
Constructors Constructor Description MarginsCollapseHandler(IRenderer renderer, MarginsCollapseInfo marginsCollapseInfo)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidaddNotYetAppliedTopMargin(Rectangle layoutBox)private voidapplyBottomMargin(Rectangle box, float bottomIndent)voidapplyClearance(float clearHeightCorrection)private voidapplySelfCollapsedKidMarginWithClearance(Rectangle layoutBox)private 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 booleanfirstChildMarginAdjoinedToParent(IRenderer parent)private voidfixPrevChildOccupiedArea(int childIndex)private IRenderergetRendererChild(int index)private voidgetRidOfCollapseArtifactsAtopOccupiedArea()private 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 booleanlastChildMarginAdjoinedToParent(IRenderer parent)private 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 voidrestoreLayoutBoxAfterFailedLayoutAttempt(Rectangle layoutBox)MarginsCollapseInfostartChildMarginsHandling(IRenderer child, Rectangle layoutBox)voidstartMarginsCollapse(Rectangle parentBBox)private voidsubtractUsedTopBufferFromBottomBuffer(float usedTopBuffer)private voidupdateCollapseBeforeIfPrevKidIsFirstAndSelfCollapsed(MarginsCollapse collapseAfter)
-
-
-
Field Detail
-
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 java.util.List<IRenderer> rendererChildren
-
backupLayoutBox
private Rectangle backupLayoutBox
-
backupCollapseInfo
private MarginsCollapseInfo backupCollapseInfo
-
lastKidCollapsedAfterHasClearanceApplied
private boolean lastKidCollapsedAfterHasClearanceApplied
-
-
Constructor Detail
-
MarginsCollapseHandler
public MarginsCollapseHandler(IRenderer renderer, MarginsCollapseInfo marginsCollapseInfo)
-
-
Method Detail
-
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)
-
-