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 2016/12/13 19:38:21 UTC

svn commit: r1774086 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox: contentstream/PDFStreamEngine.java rendering/PageDrawer.java

Author: tilman
Date: Tue Dec 13 19:38:20 2016
New Revision: 1774086

URL: http://svn.apache.org/viewvc?rev=1774086&view=rev
Log:
PDFBOX-3000: pass initial CTM of softmask to transparency group

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/PDFStreamEngine.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/PDFStreamEngine.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/PDFStreamEngine.java?rev=1774086&r1=1774085&r2=1774086&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/PDFStreamEngine.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/PDFStreamEngine.java Tue Dec 13 19:38:20 2016
@@ -187,6 +187,8 @@ public abstract class PDFStreamEngine
     protected void processSoftMask(PDTransparencyGroup group) throws IOException
     {
         saveGraphicsState();
+        Matrix softMaskCTM = getGraphicsState().getSoftMask().getInitialTransformationMatrix();
+        getGraphicsState().setCurrentTransformationMatrix(softMaskCTM);
         processTransparencyGroup(group);
         restoreGraphicsState();
     }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java?rev=1774086&r1=1774085&r2=1774086&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java Tue Dec 13 19:38:20 2016
@@ -428,7 +428,7 @@ public class PageDrawer extends PDFGraph
         {
             return parentPaint;
         }
-        TransparencyGroup transparencyGroup = new TransparencyGroup(softMask.getGroup(), true);
+        TransparencyGroup transparencyGroup = new TransparencyGroup(softMask.getGroup(), true, softMask.getInitialTransformationMatrix());
         BufferedImage image = transparencyGroup.getImage();
         BufferedImage gray = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_BYTE_GRAY);
         if (COSName.ALPHA.equals(softMask.getSubType()))
@@ -1058,7 +1058,8 @@ public class PageDrawer extends PDFGraph
     @Override
     public void showTransparencyGroup(PDTransparencyGroup form) throws IOException
     {
-        TransparencyGroup group = new TransparencyGroup(form, false);
+        TransparencyGroup group =
+                new TransparencyGroup(form, false, getGraphicsState().getCurrentTransformationMatrix());
 
         graphics.setComposite(getGraphicsState().getNonStrokingJavaComposite());
         setClip();
@@ -1131,13 +1132,12 @@ public class PageDrawer extends PDFGraph
         /**
          * Creates a buffered image for a transparency group result.
          */
-        private TransparencyGroup(PDTransparencyGroup form, boolean isSoftMask) throws IOException
+        private TransparencyGroup(PDTransparencyGroup form, boolean isSoftMask, Matrix ctm) throws IOException
         {
             Graphics2D g2dOriginal = graphics;
             Area lastClipOriginal = lastClip;
 
             // get the CTM x Form Matrix transform
-            Matrix ctm = getGraphicsState().getCurrentTransformationMatrix();
             Matrix transform = Matrix.concatenate(ctm, form.getMatrix());
 
             // transform the bbox