Skip to content

Commit 13c0680

Browse files
yulian-gaponenkoLodrKumquat
authored andcommitted
Handle collapsing margins info in relayouting context
DEVSIX-1858
1 parent 1e3aa61 commit 13c0680

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

layout/src/main/java/com/itextpdf/layout/margincollapse/MarginsCollapseInfo.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,41 @@ public void copyTo(MarginsCollapseInfo destInfo) {
105105
destInfo.setClearanceApplied(clearanceApplied);
106106
}
107107

108+
public static MarginsCollapseInfo createDeepCopy(MarginsCollapseInfo instance) {
109+
MarginsCollapseInfo copy = new MarginsCollapseInfo();
110+
instance.copyTo(copy);
111+
112+
copy.collapseBefore = instance.collapseBefore.clone();
113+
copy.collapseAfter = instance.collapseAfter.clone();
114+
if (instance.ownCollapseAfter != null) {
115+
copy.setOwnCollapseAfter(instance.ownCollapseAfter.clone());
116+
}
117+
118+
return copy;
119+
}
120+
121+
public static void updateFromCopy(MarginsCollapseInfo originalInstance, MarginsCollapseInfo processedCopy) {
122+
originalInstance.ignoreOwnMarginTop = processedCopy.ignoreOwnMarginTop;
123+
originalInstance.ignoreOwnMarginBottom = processedCopy.ignoreOwnMarginBottom;
124+
125+
originalInstance.collapseBefore.joinMargin(processedCopy.collapseBefore);
126+
originalInstance.collapseAfter.joinMargin(processedCopy.collapseAfter);
127+
128+
if (processedCopy.getOwnCollapseAfter() != null) {
129+
if (originalInstance.getOwnCollapseAfter() == null) {
130+
originalInstance.setOwnCollapseAfter(new MarginsCollapse());
131+
}
132+
originalInstance.getOwnCollapseAfter().joinMargin(processedCopy.getOwnCollapseAfter());
133+
}
134+
originalInstance.setSelfCollapsing(processedCopy.isSelfCollapsing);
135+
originalInstance.setBufferSpaceOnTop(processedCopy.bufferSpaceOnTop);
136+
originalInstance.setBufferSpaceOnBottom(processedCopy.bufferSpaceOnBottom);
137+
originalInstance.setUsedBufferSpaceOnTop(processedCopy.usedBufferSpaceOnTop);
138+
originalInstance.setUsedBufferSpaceOnBottom(processedCopy.usedBufferSpaceOnBottom);
139+
140+
originalInstance.setClearanceApplied(processedCopy.clearanceApplied);
141+
}
142+
108143
MarginsCollapse getCollapseBefore() {
109144
return this.collapseBefore;
110145
}

0 commit comments

Comments
 (0)