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 2014/08/06 21:52:34 UTC

svn commit: r1616329 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/

Author: tilman
Date: Wed Aug  6 19:52:34 2014
New Revision: 1616329

URL: http://svn.apache.org/r1616329
Log:
PDFBOX-1915: use PaintContext deviceBounds and BBox for types 1,4,5,6,7, as done by Shaola Ren in GSoC2014

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PatchMeshesShadingContext.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type1ShadingContext.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type4ShadingContext.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type4ShadingPaint.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type5ShadingContext.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type5ShadingPaint.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type6ShadingContext.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type6ShadingPaint.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type7ShadingContext.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type7ShadingPaint.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java?rev=1616329&r1=1616328&r2=1616329&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java Wed Aug  6 19:52:34 2014
@@ -19,6 +19,7 @@ package org.apache.pdfbox.pdmodel.graphi
 
 import java.awt.PaintContext;
 import java.awt.Point;
+import java.awt.Rectangle;
 import java.awt.Transparency;
 import java.awt.color.ColorSpace;
 import java.awt.geom.AffineTransform;
@@ -34,6 +35,7 @@ import javax.imageio.stream.ImageInputSt
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.pdfbox.pdmodel.common.PDRange;
+import org.apache.pdfbox.pdmodel.common.PDRectangle;
 import org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace;
 import org.apache.pdfbox.util.Matrix;
 
@@ -41,6 +43,7 @@ import org.apache.pdfbox.util.Matrix;
  * Shades Gouraud triangles for  Type4ShadingContext and Type5ShadingContext.
  * @author Andreas Lehmkühler
  * @author Tilman Hausherr
+ * @author Shaola Ren
  */
 abstract class GouraudShadingContext implements PaintContext
 {
@@ -48,6 +51,7 @@ abstract class GouraudShadingContext imp
 
     private ColorModel outputColorModel;
     private PDColorSpace shadingColorSpace;
+    private final Rectangle deviceBounds;
 
     /** number of color components. */
     protected int numberOfColorComponents;
@@ -66,6 +70,8 @@ abstract class GouraudShadingContext imp
 
     private final boolean hasFunction;
     private final PDShading gouraudShadingType;
+    private PDRectangle bboxRect;
+    private float[] bboxTab = new float[4];
 
     /**
      * Constructor creates an instance to be used for fill operations.
@@ -77,9 +83,10 @@ abstract class GouraudShadingContext imp
      * @throws IOException if something went wrong
      */
     protected GouraudShadingContext(PDShading shading, ColorModel colorModel, AffineTransform xform,
-                                    Matrix ctm, int pageHeight) throws IOException
+                                    Matrix ctm, int pageHeight, Rectangle dBounds) throws IOException
     {
         gouraudShadingType = shading;
+        deviceBounds = dBounds;
         triangleList = new ArrayList<GouraudTriangle>();
         hasFunction = shading.getFunction() != null;
         LOG.debug("hasFunction: " + hasFunction);
@@ -88,6 +95,30 @@ abstract class GouraudShadingContext imp
         LOG.debug("colorSpace: " + shadingColorSpace);
 
         numberOfColorComponents = hasFunction ? 1 : shadingColorSpace.getNumberOfComponents();
+        
+        bboxRect = shading.getBBox();
+        if (bboxRect != null)
+        {
+            bboxTab[0] = bboxRect.getLowerLeftX();
+            bboxTab[1] = bboxRect.getLowerLeftY();
+            bboxTab[2] = bboxRect.getUpperRightX();
+            bboxTab[3] = bboxRect.getUpperRightY();
+            if (ctm != null)
+            {
+                // transform the coords using the given matrix
+                ctm.createAffineTransform().transform(bboxTab, 0, bboxTab, 0, 2);
+            }
+            xform.transform(bboxTab, 0, bboxTab, 0, 2);
+        }
+        reOrder(bboxTab, 0, 2);
+        reOrder(bboxTab, 1, 3);
+        LOG.debug("BBox: " + shading.getBBox());
+        LOG.debug("Background: " + shading.getBackground());
+        if (bboxTab[0] >= bboxTab[2] || bboxTab[1] >= bboxTab[3])
+        {
+            bboxRect = null;
+        }
+        
         LOG.debug("numberOfColorComponents: " + numberOfColorComponents);
 
         LOG.debug("BBox: " + shading.getBBox());
@@ -129,6 +160,20 @@ abstract class GouraudShadingContext imp
         }
         return new Vertex(flag, new Point2D.Double(dstX, dstY), colorComponentTab);
     }
+    
+    // this method is used to arrange the array to denote the left upper corner and right lower corner of the BBox
+    private void reOrder(float[] array, int i, int j)
+    {
+        if (i < j && array[i] <= array[j])
+        {
+        }
+        else
+        {
+            float tmp = array[i];
+            array[i] = array[j];
+            array[j] = tmp;
+        }
+    }    
 
     /**
      * Transforms vertices from shading to user space (if applicable) and from user to device space.
@@ -191,8 +236,24 @@ abstract class GouraudShadingContext imp
         {
             for (int row = 0; row < h; row++)
             {
+                int currentY = y + row;
+                if (bboxRect != null)
+                {
+                    if (currentY < bboxTab[1] || currentY > bboxTab[3])
+                    {
+                        continue;
+                    }
+                }
                 for (int col = 0; col < w; col++)
                 {
+                    int currentX = x + col;
+                    if (bboxRect != null)
+                    {
+                        if (currentX < bboxTab[0] || currentX > bboxTab[2])
+                        {
+                            continue;
+                        }
+                    }
                     Point2D p = new Point(x + col, y + row);
                     GouraudTriangle triangle = null;
                     for (GouraudTriangle tryTriangle : triangleList)

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PatchMeshesShadingContext.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PatchMeshesShadingContext.java?rev=1616329&r1=1616328&r2=1616329&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PatchMeshesShadingContext.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PatchMeshesShadingContext.java Wed Aug  6 19:52:34 2014
@@ -18,6 +18,7 @@ package org.apache.pdfbox.pdmodel.graphi
 
 import java.awt.PaintContext;
 import java.awt.Point;
+import java.awt.Rectangle;
 import java.awt.Transparency;
 import java.awt.color.ColorSpace;
 import java.awt.geom.AffineTransform;
@@ -55,13 +56,14 @@ abstract class PatchMeshesShadingContext
     
     protected ColorModel outputColorModel;
     protected PDColorSpace shadingColorSpace;
+    private final Rectangle deviceBounds;
     protected final int numberOfColorComponents; // number of color components
     protected float[] background; // background values.
     protected int rgbBackground;
     protected final boolean hasFunction;
     protected final PDShading patchMeshesShadingType;
-    private PDRectangle rectBBox;
-    float minBBoxX, minBBoxY, maxBBoxX, maxBBoxY;
+    private PDRectangle bboxRect;
+    private float[] bboxTab = new float[4];
     
     // the following fields are not intialized in this abstract class
     protected ArrayList<Patch> patchList; // patch list
@@ -80,38 +82,35 @@ abstract class PatchMeshesShadingContext
      * @throws IOException if something went wrong
      */
     protected PatchMeshesShadingContext(PDShading shading, ColorModel colorModel, AffineTransform xform,
-                                Matrix ctm, int pageHeight) throws IOException
+                                Matrix ctm, int pageHeight, Rectangle dBounds) throws IOException
     {
         patchMeshesShadingType = shading;
-        patchList = new ArrayList<Patch>();
-        hasFunction = shading.getFunction() != null;
-        shadingColorSpace = shading.getColorSpace();
-        
-        rectBBox = shading.getBBox();
-        if (rectBBox != null)
-        {
-            float[] bboxTab = new float[4];
-            bboxTab[0] = rectBBox.getLowerLeftX();
-            bboxTab[1] = rectBBox.getLowerLeftY();
-            bboxTab[2] = rectBBox.getUpperRightX();
-            bboxTab[3] = rectBBox.getUpperRightY();
+        deviceBounds = dBounds;
+        bboxRect = shading.getBBox();
+        if (bboxRect != null)
+        {
+            bboxTab[0] = bboxRect.getLowerLeftX();
+            bboxTab[1] = bboxRect.getLowerLeftY();
+            bboxTab[2] = bboxRect.getUpperRightX();
+            bboxTab[3] = bboxRect.getUpperRightY();
             if (ctm != null)
             {
                 // transform the coords using the given matrix
                 ctm.createAffineTransform().transform(bboxTab, 0, bboxTab, 0, 2);
             }
             xform.transform(bboxTab, 0, bboxTab, 0, 2);
-            minBBoxX = Math.min(bboxTab[0],bboxTab[2]);
-            minBBoxY = Math.min(bboxTab[1],bboxTab[3]);
-            maxBBoxX = Math.max(bboxTab[0],bboxTab[2]);
-            maxBBoxY = Math.max(bboxTab[1],bboxTab[3]);
-            if (minBBoxX == maxBBoxX || minBBoxY == maxBBoxY)
-            {
-                LOG.warn("empty BBox is ignored");
-                rectBBox = null;
-            }
         }
-
+        reOrder(bboxTab, 0, 2);
+        reOrder(bboxTab, 1, 3);
+        if (bboxTab[0] >= bboxTab[2] || bboxTab[1] >= bboxTab[3])
+        {
+            bboxRect = null;
+        }
+        
+        patchList = new ArrayList<Patch>();
+        hasFunction = shading.getFunction() != null;
+        shadingColorSpace = shading.getColorSpace();
+        
         numberOfColorComponents = hasFunction ? 1 : shadingColorSpace.getNumberOfComponents();
         
         // create the output color model using RGB+alpha as color space
@@ -127,6 +126,20 @@ abstract class PatchMeshesShadingContext
         }
     }
     
+    // this method is used to arrange the array to denote the left upper corner and right lower corner of the BBox
+    private void reOrder(float[] array, int i, int j)
+    {
+        if (i < j && array[i] <= array[j])
+        {
+        }
+        else
+        {
+            float tmp = array[i];
+            array[i] = array[j];
+            array[j] = tmp;
+        }
+    }
+    
     // transform a point from source space to device space
     private void transformPoint(Point2D p, Matrix ctm, AffineTransform xform)
     {
@@ -331,6 +344,10 @@ abstract class PatchMeshesShadingContext
                 else
                 {
                     int[] boundary = tri.getBoundary();
+                    boundary[0] = Math.max(boundary[0], deviceBounds.x);
+                    boundary[1] = Math.min(boundary[1], deviceBounds.x + deviceBounds.width);
+                    boundary[2] = Math.max(boundary[2], deviceBounds.y);
+                    boundary[3] = Math.min(boundary[3], deviceBounds.y + deviceBounds.height);
                     for (int x = boundary[0]; x <= boundary[1]; x++)
                     {
                         for (int y = boundary[2]; y <= boundary[3]; y++)
@@ -349,7 +366,7 @@ abstract class PatchMeshesShadingContext
         return map;
     }
     
-    // convert values to RGB color, using function when needed
+    // convert color to RGB color values
     private int convertToRGB(float[] values)
     {
         float[] nValues = null;
@@ -411,21 +428,20 @@ abstract class PatchMeshesShadingContext
         {
             for (int row = 0; row < h; row++)
             {
-                double currentY = y + row;
-                if (rectBBox != null)
+                int currentY = y + row;
+                if (bboxRect != null)
                 {
-                    if (currentY < minBBoxY || currentY > maxBBoxY)
+                    if (currentY < bboxTab[1] || currentY > bboxTab[3])
                     {
                         continue;
                     }
                 }
-
                 for (int col = 0; col < w; col++)
                 {
-                    double currentX = x + col;
-                    if (rectBBox != null)
+                    int currentX = x + col;
+                    if (bboxRect != null)
                     {
-                        if (currentX < minBBoxX || currentX > maxBBoxX)
+                        if (currentX < bboxTab[0] || currentX > bboxTab[2])
                         {
                             continue;
                         }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type1ShadingContext.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type1ShadingContext.java?rev=1616329&r1=1616328&r2=1616329&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type1ShadingContext.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type1ShadingContext.java Wed Aug  6 19:52:34 2014
@@ -49,8 +49,8 @@ class Type1ShadingContext implements Pai
     private float[] domain;
     private Matrix matrix;
     private float[] background;
-    private PDRectangle rectBBox;
-    float minBBoxX, minBBoxY, maxBBoxX, maxBBoxY;
+    private PDRectangle bboxRect;
+    private float[] bboxTab = new float[4];
 
     /**
      * Constructor creates an instance to be used for fill operations.
@@ -60,35 +60,30 @@ class Type1ShadingContext implements Pai
      * @param ctm current transformation matrix
      * @param pageHeight height of the current page
      */
-    Type1ShadingContext(PDShadingType1 shading, ColorModel cm, AffineTransform xform,
+    public Type1ShadingContext(PDShadingType1 shading, ColorModel cm, AffineTransform xform,
                                Matrix ctm, int pageHeight) throws IOException
     {
         this.shading = shading;
-
-        rectBBox = shading.getBBox();
-        if (rectBBox != null)
+        bboxRect = shading.getBBox();
+        if (bboxRect != null)
         {
-            float[] bboxTab = new float[4];
-            bboxTab[0] = rectBBox.getLowerLeftX();
-            bboxTab[1] = rectBBox.getLowerLeftY();
-            bboxTab[2] = rectBBox.getUpperRightX();
-            bboxTab[3] = rectBBox.getUpperRightY();
+            bboxTab[0] = bboxRect.getLowerLeftX();
+            bboxTab[1] = bboxRect.getLowerLeftY();
+            bboxTab[2] = bboxRect.getUpperRightX();
+            bboxTab[3] = bboxRect.getUpperRightY();
             if (ctm != null)
             {
                 // transform the coords using the given matrix
                 ctm.createAffineTransform().transform(bboxTab, 0, bboxTab, 0, 2);
             }
             xform.transform(bboxTab, 0, bboxTab, 0, 2);
-            minBBoxX = Math.min(bboxTab[0],bboxTab[2]);
-            minBBoxY = Math.min(bboxTab[1],bboxTab[3]);
-            maxBBoxX = Math.max(bboxTab[0],bboxTab[2]);
-            maxBBoxY = Math.max(bboxTab[1],bboxTab[3]);
-            if (minBBoxX == maxBBoxX || minBBoxY == maxBBoxY)
-            {
-                LOG.warn("empty BBox is ignored");
-                rectBBox = null;
-            }
-        }        
+        }
+        reOrder(bboxTab, 0, 2);
+        reOrder(bboxTab, 1, 3);
+        if (bboxTab[0] >= bboxTab[2] || bboxTab[1] >= bboxTab[3])
+        {
+            bboxRect = null;
+        }
         
         // color space
         shadingColorSpace = this.shading.getColorSpace();
@@ -140,6 +135,20 @@ class Type1ShadingContext implements Pai
             background = bg.toFloatArray();
         }
     }
+    
+    // this method is used to arrange the array to denote the left upper corner and right lower corner of the BBox
+    private void reOrder(float[] array, int i, int j)
+    {
+        if (i < j && array[i] <= array[j])
+        {
+        }
+        else
+        {
+            float tmp = array[i];
+            array[i] = array[j];
+            array[j] = tmp;
+        }
+    }
 
     @Override
     public void dispose()
@@ -162,20 +171,20 @@ class Type1ShadingContext implements Pai
         int[] data = new int[w * h * 4];
         for (int j = 0; j < h; j++)
         {
-            double currentY = y + j;
-            if (rectBBox != null)
+            int currentY = y + j;
+            if (bboxRect != null)
             {
-                if (currentY < minBBoxY || currentY > maxBBoxY)
+                if (currentY < bboxTab[1] || currentY > bboxTab[3])
                 {
                     continue;
                 }
             }
             for (int i = 0; i < w; i++)
             {
-                double currentX = x + i;
-                if (rectBBox != null)
+                int currentX = x + i;
+                if (bboxRect != null)
                 {
-                    if (currentX < minBBoxX || currentX > maxBBoxX)
+                    if (currentX < bboxTab[0] || currentX > bboxTab[2])
                     {
                         continue;
                     }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type4ShadingContext.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type4ShadingContext.java?rev=1616329&r1=1616328&r2=1616329&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type4ShadingContext.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type4ShadingContext.java Wed Aug  6 19:52:34 2014
@@ -16,6 +16,7 @@
  */
 package org.apache.pdfbox.pdmodel.graphics.shading;
 
+import java.awt.Rectangle;
 import java.awt.geom.AffineTransform;
 import java.awt.geom.Point2D;
 import java.awt.image.ColorModel;
@@ -52,9 +53,9 @@ class Type4ShadingContext extends Gourau
      * @param pageHeight height of the current page
      */
     Type4ShadingContext(PDShadingType4 shading, ColorModel cm, AffineTransform xform,
-                               Matrix ctm, int pageHeight) throws IOException
+                               Matrix ctm, int pageHeight, Rectangle dBounds) throws IOException
     {
-        super(shading, cm, xform, ctm, pageHeight);
+        super(shading, cm, xform, ctm, pageHeight, dBounds);
 
         ArrayList<Vertex> vertexList = new ArrayList<Vertex>();
 

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type4ShadingPaint.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type4ShadingPaint.java?rev=1616329&r1=1616328&r2=1616329&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type4ShadingPaint.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type4ShadingPaint.java Wed Aug  6 19:52:34 2014
@@ -65,7 +65,7 @@ class Type4ShadingPaint implements Paint
     {
         try
         {
-            return new Type4ShadingContext(shading, cm, xform, ctm, pageHeight);
+            return new Type4ShadingContext(shading, cm, xform, ctm, pageHeight, deviceBounds);
         }
         catch (IOException ex)
         {

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type5ShadingContext.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type5ShadingContext.java?rev=1616329&r1=1616328&r2=1616329&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type5ShadingContext.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type5ShadingContext.java Wed Aug  6 19:52:34 2014
@@ -16,6 +16,7 @@
  */
 package org.apache.pdfbox.pdmodel.graphics.shading;
 
+import java.awt.Rectangle;
 import java.awt.geom.AffineTransform;
 import java.awt.image.ColorModel;
 import java.io.EOFException;
@@ -50,9 +51,9 @@ class Type5ShadingContext extends Gourau
      * @throws IOException if something went wrong
      */
     Type5ShadingContext(PDShadingType5 shading, ColorModel cm, AffineTransform xform,
-                               Matrix ctm, int pageHeight) throws IOException
+                               Matrix ctm, int pageHeight, Rectangle dBounds) throws IOException
     {
-        super(shading, cm, xform, ctm, pageHeight);
+        super(shading, cm, xform, ctm, pageHeight, dBounds);
 
         LOG.debug("Type5ShadingContext");
 

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type5ShadingPaint.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type5ShadingPaint.java?rev=1616329&r1=1616328&r2=1616329&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type5ShadingPaint.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type5ShadingPaint.java Wed Aug  6 19:52:34 2014
@@ -65,7 +65,7 @@ class Type5ShadingPaint implements Paint
     {
         try
         {
-            return new Type5ShadingContext(shading, cm, xform, ctm, pageHeight);
+            return new Type5ShadingContext(shading, cm, xform, ctm, pageHeight, deviceBounds);
         }
         catch (IOException ex)
         {

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type6ShadingContext.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type6ShadingContext.java?rev=1616329&r1=1616328&r2=1616329&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type6ShadingContext.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type6ShadingContext.java Wed Aug  6 19:52:34 2014
@@ -16,6 +16,7 @@
 
 package org.apache.pdfbox.pdmodel.graphics.shading;
 
+import java.awt.Rectangle;
 import java.awt.geom.AffineTransform;
 import java.awt.geom.Point2D;
 import java.awt.image.ColorModel;
@@ -46,9 +47,9 @@ class Type6ShadingContext extends PatchM
      * @throws IOException if something went wrong
      */
     public Type6ShadingContext(PDShadingType6 shading, ColorModel colorModel, AffineTransform xform,
-                                Matrix ctm, int pageHeight) throws IOException
+                                Matrix ctm, int pageHeight, Rectangle dBounds) throws IOException
     {
-        super(shading, colorModel, xform, ctm, pageHeight);
+        super(shading, colorModel, xform, ctm, pageHeight, dBounds);
         bitsPerColorComponent = shading.getBitsPerComponent();
         bitsPerCoordinate = shading.getBitsPerCoordinate();
         bitsPerFlag = shading.getBitsPerFlag();

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type6ShadingPaint.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type6ShadingPaint.java?rev=1616329&r1=1616328&r2=1616329&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type6ShadingPaint.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type6ShadingPaint.java Wed Aug  6 19:52:34 2014
@@ -66,7 +66,7 @@ class Type6ShadingPaint implements Paint
     {
         try
         {
-            return new Type6ShadingContext(shading, cm, xform, ctm, pageHeight);
+            return new Type6ShadingContext(shading, cm, xform, ctm, pageHeight, deviceBounds);
         }
         catch (IOException ex)
         {

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type7ShadingContext.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type7ShadingContext.java?rev=1616329&r1=1616328&r2=1616329&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type7ShadingContext.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type7ShadingContext.java Wed Aug  6 19:52:34 2014
@@ -16,6 +16,7 @@
 
 package org.apache.pdfbox.pdmodel.graphics.shading;
 
+import java.awt.Rectangle;
 import java.awt.geom.AffineTransform;
 import java.awt.geom.Point2D;
 import java.awt.image.ColorModel;
@@ -46,9 +47,9 @@ class Type7ShadingContext extends PatchM
      * @throws IOException if something went wrong
      */
     public Type7ShadingContext(PDShadingType7 shading, ColorModel colorModel, AffineTransform xform,
-                                Matrix ctm, int pageHeight) throws IOException
+                                Matrix ctm, int pageHeight, Rectangle dBounds) throws IOException
     {
-        super(shading, colorModel, xform, ctm, pageHeight);
+        super(shading, colorModel, xform, ctm, pageHeight, dBounds);
         bitsPerColorComponent = shading.getBitsPerComponent();
         bitsPerCoordinate = shading.getBitsPerCoordinate();
         bitsPerFlag = shading.getBitsPerFlag();

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type7ShadingPaint.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type7ShadingPaint.java?rev=1616329&r1=1616328&r2=1616329&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type7ShadingPaint.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type7ShadingPaint.java Wed Aug  6 19:52:34 2014
@@ -66,7 +66,7 @@ class Type7ShadingPaint implements Paint
     {
         try
         {
-            return new Type7ShadingContext(shading, cm, xform, ctm, pageHeight);
+            return new Type7ShadingContext(shading, cm, xform, ctm, pageHeight, deviceBounds);
         }
         catch (IOException ex)
         {