Skip to content

Commit e5f8c0b

Browse files
committed
Minor changes in AbstractRenderer & ImageRenderer
Rename method building AffineTransform from css property; make createTransformationInsideOccupiedArea private; apply generic transformation when calculating AbsolutePdfBBox. DEVSIX-1310
1 parent b5a1ddf commit e5f8c0b

File tree

2 files changed

+8
-18
lines changed

2 files changed

+8
-18
lines changed

layout/src/main/java/com/itextpdf/layout/renderer/AbstractRenderer.java

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1523,17 +1523,8 @@ protected Rectangle calculateAbsolutePdfBBox() {
15231523
}
15241524

15251525
if (renderer.<List<String[]>>getProperty(Property.TRANSFORM) != null) {
1526-
if (renderer instanceof BlockRenderer) {
1527-
BlockRenderer blockRenderer = (BlockRenderer) renderer;
1528-
AffineTransform rotationTransform = blockRenderer.createTransformationInsideOccupiedArea();
1529-
transformPoints(contentBoxPoints, rotationTransform);
1530-
} else if (renderer instanceof ImageRenderer) {
1531-
ImageRenderer imageRenderer = (ImageRenderer) renderer;
1532-
AffineTransform rotationTransform = imageRenderer.createTransformationInsideOccupiedArea();
1533-
transformPoints(contentBoxPoints, rotationTransform);
1534-
} else if (renderer instanceof TableRenderer) {
1535-
TableRenderer tableRenderer = (TableRenderer) renderer;
1536-
AffineTransform rotationTransform = tableRenderer.createTransformationInsideOccupiedArea();
1526+
if (renderer instanceof BlockRenderer || renderer instanceof ImageRenderer || renderer instanceof TableRenderer) {
1527+
AffineTransform rotationTransform = renderer.createTransformationInsideOccupiedArea();
15371528
transformPoints(contentBoxPoints, rotationTransform);
15381529
}
15391530
}
@@ -1822,15 +1813,15 @@ private static float calculatePaddingBorderHeight(AbstractRenderer renderer) {
18221813
*
18231814
* @return {@link AffineTransform} that transforms the content and places it inside occupied area.
18241815
*/
1825-
protected AffineTransform createTransformationInsideOccupiedArea() {
1816+
private AffineTransform createTransformationInsideOccupiedArea() {
18261817
Rectangle backgroundArea = applyMargins(occupiedArea.clone().getBBox(), false);
18271818
float x = backgroundArea.getX();
18281819
float y = backgroundArea.getY();
18291820
float height = backgroundArea.getHeight();
18301821
float width = backgroundArea.getWidth();
18311822

18321823
AffineTransform transform = AffineTransform.getTranslateInstance(-1 * (x + width / 2), -1 * (y + height / 2));
1833-
transform.preConcatenate(new AffineTransform(this.getCssTransformMatrix(width, height)));
1824+
transform.preConcatenate(new AffineTransform(this.getTransformMatrix(width, height)));
18341825
transform.preConcatenate(AffineTransform.getTranslateInstance(x + width / 2, y + height / 2));
18351826

18361827
return transform;
@@ -1849,7 +1840,7 @@ protected void endTranformationIfApplied(PdfCanvas canvas) {
18491840
}
18501841
}
18511842

1852-
private AffineTransform getCssTransformMatrix(float width, float height) {
1843+
private AffineTransform getTransformMatrix(float width, float height) {
18531844
List<String[]> multipleTransform = this.<List<String[]>>getProperty(Property.TRANSFORM);
18541845
AffineTransform affineTransform = new AffineTransform();
18551846
for (int k = multipleTransform.size() - 1; k >=0; k--) {

layout/src/main/java/com/itextpdf/layout/renderer/ImageRenderer.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,8 @@ public void draw(DrawContext drawContext) {
316316
}
317317
}
318318

319+
beginTranformationIfApplied(drawContext.getCanvas());
320+
319321
Float angle = this.getPropertyAsFloat(Property.ROTATION_ANGLE);
320322
if (angle != null) {
321323
fixedXPosition += rotatedDeltaX;
@@ -324,8 +326,6 @@ public void draw(DrawContext drawContext) {
324326
applyConcatMatrix(drawContext, angle);
325327
}
326328

327-
beginTranformationIfApplied(drawContext.getCanvas());
328-
329329
super.draw(drawContext);
330330
if (angle != null) {
331331
drawContext.getCanvas().restoreState();
@@ -345,9 +345,8 @@ public void draw(DrawContext drawContext) {
345345
beginElementOpacityApplying(drawContext);
346346
canvas.addXObject(xObject, matrix[0], matrix[1], matrix[2], matrix[3], (float) fixedXPosition + deltaX, (float) fixedYPosition);
347347

348-
endTranformationIfApplied(drawContext.getCanvas());
349-
350348
endElementOpacityApplying(drawContext);
349+
endTranformationIfApplied(drawContext.getCanvas());
351350
if (Boolean.TRUE.equals(getPropertyAsBoolean(Property.FLUSH_ON_DRAW))) {
352351
xObject.flush();
353352
}

0 commit comments

Comments
 (0)