You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2019/06/29 16:14:11 UTC
svn commit: r1862318 -
/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
Author: tilman
Date: Sat Jun 29 16:14:11 2019
New Revision: 1862318
URL: http://svn.apache.org/viewvc?rev=1862318&view=rev
Log:
PDFBOX-4583: remember and apply initial clip of a graphics device
Modified:
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java?rev=1862318&r1=1862317&r2=1862318&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java Sat Jun 29 16:14:11 2019
@@ -140,6 +140,9 @@ public class PageDrawer extends PDFGraph
// last clipping path
private Area lastClip;
+ // clip when drawPage() is called, can be null, must be intersected when clipping
+ private Shape initialClip;
+
// shapes of glyphs being drawn to be used for clipping
private List<Shape> textClippings;
@@ -250,6 +253,7 @@ public class PageDrawer extends PDFGraph
{
graphics = (Graphics2D) g;
xform = graphics.getTransform();
+ initialClip = graphics.getClip();
this.pageSize = pageSize;
setRenderingHints();
@@ -293,6 +297,8 @@ public class PageDrawer extends PDFGraph
Area oldLastClip = lastClip;
lastClip = null;
+ Shape oldInitialClip = initialClip;
+ initialClip = null;
boolean oldFlipTG = flipTG;
flipTG = true;
@@ -304,6 +310,7 @@ public class PageDrawer extends PDFGraph
graphics = oldGraphics;
linePath = oldLinePath;
lastClip = oldLastClip;
+ initialClip = oldInitialClip;
clipWindingRule = oldClipWindingRule;
}
@@ -370,6 +377,11 @@ public class PageDrawer extends PDFGraph
if (clippingPath != lastClip)
{
graphics.setClip(clippingPath);
+ if (initialClip != null)
+ {
+ // apply the remembered initial clip, but transform it first
+ graphics.clip(graphics.getTransform().createTransformedShape(initialClip));
+ }
lastClip = clippingPath;
}
}
@@ -1476,6 +1488,7 @@ public class PageDrawer extends PDFGraph
{
Graphics2D g2dOriginal = graphics;
Area lastClipOriginal = lastClip;
+ Shape oldInitialClip = initialClip;
// get the CTM x Form Matrix transform
Matrix transform = Matrix.concatenate(ctm, form.getMatrix());
@@ -1619,6 +1632,7 @@ public class PageDrawer extends PDFGraph
lastClip = lastClipOriginal;
graphics.dispose();
graphics = g2dOriginal;
+ initialClip = oldInitialClip;
clipWindingRule = clipWindingRuleOriginal;
linePath = linePathOriginal;
pageSize = pageSizeOriginal;