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/09 08:31:02 UTC
svn commit: r1616918 -
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/
Author: tilman
Date: Sat Aug 9 06:31:02 2014
New Revision: 1616918
URL: http://svn.apache.org/r1616918
Log:
PDFBOX-1915: simplified BBox handling; more refactoring
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingContext.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/CoonsTriangle.java
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/RadialShadingContext.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/ShadingContext.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/Type5ShadingContext.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/Type7ShadingContext.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingContext.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingContext.java?rev=1616918&r1=1616917&r2=1616918&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingContext.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingContext.java Sat Aug 9 06:31:02 2014
@@ -57,8 +57,6 @@ public class AxialShadingContext extends
private double y1y0;
private float d1d0;
private double denom;
- private PDRectangle rectBBox;
- float minBBoxX, minBBoxY, maxBBoxX, maxBBoxY;
private final double axialLength;
private final int[] colorTable;
@@ -77,32 +75,7 @@ public class AxialShadingContext extends
{
super(shading, colorModel, xform, ctm, pageHeight, dBounds);
this.shading = shading;
- coords = this.shading.getCoords().toFloatArray();
-
- 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();
- 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;
- }
- }
+ coords = shading.getCoords().toFloatArray();
if (ctm != null)
{
@@ -110,10 +83,11 @@ public class AxialShadingContext extends
ctm.createAffineTransform().transform(coords, 0, coords, 0, 2);
}
xform.transform(coords, 0, coords, 0, 2);
+
// domain values
- if (this.shading.getDomain() != null)
+ if (shading.getDomain() != null)
{
- domain = this.shading.getDomain().toFloatArray();
+ domain = shading.getDomain().toFloatArray();
}
else
{
@@ -121,8 +95,8 @@ public class AxialShadingContext extends
domain = new float[] { 0, 1 };
}
// extend values
- COSArray extendValues = this.shading.getExtend();
- if (this.shading.getExtend() != null)
+ COSArray extendValues = shading.getExtend();
+ if (shading.getExtend() != null)
{
extend = new boolean[2];
extend[0] = ((COSBoolean) extendValues.get(0)).getValue();
@@ -233,18 +207,17 @@ public class AxialShadingContext extends
for (int j = 0; j < h; j++)
{
double currentY = y + j;
- if (rectBBox != null)
+ if (bboxRect != null)
{
if (currentY < minBBoxY || currentY > maxBBoxY)
{
continue;
}
}
-
for (int i = 0; i < w; i++)
{
double currentX = x + i;
- if (rectBBox != null)
+ if (bboxRect != null)
{
if (currentX < minBBoxX || currentX > maxBBoxX)
{
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/CoonsTriangle.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/CoonsTriangle.java?rev=1616918&r1=1616917&r2=1616918&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/CoonsTriangle.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/CoonsTriangle.java Sat Aug 9 06:31:02 2014
@@ -50,7 +50,8 @@ class CoonsTriangle
private final double v2;
/**
- * Constructor of CoonsTriangle.
+ * Constructor.
+ *
* @param p an array of the 3 vertices of a triangle
* @param c an array of color corresponding the vertex array p
*/
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=1616918&r1=1616917&r2=1616918&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 Sat Aug 9 06:31:02 2014
@@ -185,7 +185,7 @@ abstract class GouraudShadingContext ext
int currentY = y + row;
if (bboxRect != null)
{
- if (currentY < bboxTab[1] || currentY > bboxTab[3])
+ if (currentY < minBBoxY || currentY > maxBBoxY)
{
continue;
}
@@ -195,7 +195,7 @@ abstract class GouraudShadingContext ext
int currentX = x + col;
if (bboxRect != null)
{
- if (currentX < bboxTab[0] || currentX > bboxTab[2])
+ if (currentX < minBBoxX || currentX > maxBBoxX)
{
continue;
}
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=1616918&r1=1616917&r2=1616918&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 Sat Aug 9 06:31:02 2014
@@ -304,7 +304,7 @@ abstract class PatchMeshesShadingContext
int currentY = y + row;
if (bboxRect != null)
{
- if (currentY < bboxTab[1] || currentY > bboxTab[3])
+ if (currentY < minBBoxY || currentY > maxBBoxY)
{
continue;
}
@@ -314,7 +314,7 @@ abstract class PatchMeshesShadingContext
int currentX = x + col;
if (bboxRect != null)
{
- if (currentX < bboxTab[0] || currentX > bboxTab[2])
+ if (currentX < minBBoxX || currentX > maxBBoxX)
{
continue;
}
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/RadialShadingContext.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/RadialShadingContext.java?rev=1616918&r1=1616917&r2=1616918&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/RadialShadingContext.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/RadialShadingContext.java Sat Aug 9 06:31:02 2014
@@ -61,8 +61,6 @@ public class RadialShadingContext extend
private float d1d0;
private double denom;
- private PDRectangle rectBBox;
- float minBBoxX, minBBoxY, maxBBoxX, maxBBoxY;
private final double longestDistance;
private int[] colorTable;
@@ -81,33 +79,8 @@ public class RadialShadingContext extend
{
super(shading, colorModel, xform, ctm, pageHeight, dBounds);
this.shading = shading;
- coords = this.shading.getCoords().toFloatArray();
+ coords = shading.getCoords().toFloatArray();
- 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();
- 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;
- }
- }
-
if (ctm != null)
{
// transform the coords using the given matrix
@@ -127,16 +100,17 @@ public class RadialShadingContext extend
// domain values
if (this.shading.getDomain() != null)
{
- domain = this.shading.getDomain().toFloatArray();
+ domain = shading.getDomain().toFloatArray();
}
else
{
// set default values
domain = new float[] { 0, 1 };
}
+
// extend values
- COSArray extendValues = this.shading.getExtend();
- if (this.shading.getExtend() != null)
+ COSArray extendValues = shading.getExtend();
+ if (shading.getExtend() != null)
{
extend = new boolean[2];
extend[0] = ((COSBoolean) extendValues.get(0)).getValue();
@@ -275,7 +249,7 @@ public class RadialShadingContext extend
for (int j = 0; j < h; j++)
{
double currentY = y + j;
- if (rectBBox != null)
+ if (bboxRect != null)
{
if (currentY < minBBoxY || currentY > maxBBoxY)
{
@@ -285,7 +259,7 @@ public class RadialShadingContext extend
for (int i = 0; i < w; i++)
{
double currentX = x + i;
- if (rectBBox != null)
+ if (bboxRect != null)
{
if (currentX < minBBoxX || currentX > maxBBoxX)
{
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/ShadingContext.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/ShadingContext.java?rev=1616918&r1=1616917&r2=1616918&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/ShadingContext.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/ShadingContext.java Sat Aug 9 06:31:02 2014
@@ -23,6 +23,8 @@ import java.awt.image.ColorModel;
import java.awt.image.ComponentColorModel;
import java.awt.image.DataBuffer;
import java.io.IOException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace;
import org.apache.pdfbox.util.Matrix;
@@ -35,10 +37,12 @@ import org.apache.pdfbox.util.Matrix;
*/
public abstract class ShadingContext
{
+ private static final Log LOG = LogFactory.getLog(ShadingContext.class);
+
protected final Rectangle deviceBounds;
protected PDColorSpace shadingColorSpace;
protected PDRectangle bboxRect;
- protected float[] bboxTab = new float[4];
+ protected float minBBoxX, minBBoxY, maxBBoxX, maxBBoxY;
protected ColorModel outputColorModel;
public ShadingContext(PDShading shading, ColorModel cm, AffineTransform xform,
@@ -57,11 +61,11 @@ public abstract class ShadingContext
{
transformBBox(ctm, xform);
}
-
}
private void transformBBox(Matrix ctm, AffineTransform xform)
{
+ float[] bboxTab = new float[4];
bboxTab[0] = bboxRect.getLowerLeftX();
bboxTab[1] = bboxRect.getLowerLeftY();
bboxTab[2] = bboxRect.getUpperRightX();
@@ -72,25 +76,14 @@ public abstract class ShadingContext
ctm.createAffineTransform().transform(bboxTab, 0, bboxTab, 0, 2);
}
xform.transform(bboxTab, 0, bboxTab, 0, 2);
- reOrder(bboxTab, 0, 2);
- reOrder(bboxTab, 1, 3);
- if (bboxTab[0] >= bboxTab[2] || bboxTab[1] >= bboxTab[3])
+ 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");
bboxRect = null;
- //TODO LOG output
- }
- }
-
- // this helper method is used to arrange the array
- // to denote the left upper corner and right lower corner of the BBox
- // i is always < j
- private void reOrder(float[] array, int i, int j)
- {
- if (array[i] > array[j])
- {
- float tmp = array[i];
- array[i] = array[j];
- array[j] = tmp;
}
}
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=1616918&r1=1616917&r2=1616918&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 Sat Aug 9 06:31:02 2014
@@ -126,7 +126,7 @@ class Type1ShadingContext extends Shadin
int currentY = y + j;
if (bboxRect != null)
{
- if (currentY < bboxTab[1] || currentY > bboxTab[3])
+ if (currentY < minBBoxY || currentY > maxBBoxY)
{
continue;
}
@@ -136,7 +136,7 @@ class Type1ShadingContext extends Shadin
int currentX = x + i;
if (bboxRect != null)
{
- if (currentX < bboxTab[0] || currentX > bboxTab[2])
+ if (currentX < minBBoxX || currentX > maxBBoxX)
{
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=1616918&r1=1616917&r2=1616918&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 Sat Aug 9 06:31:02 2014
@@ -187,9 +187,4 @@ class Type4ShadingContext extends Gourau
return list;
}
- @Override
- public void dispose()
- {
- super.dispose();
- }
}
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=1616918&r1=1616917&r2=1616918&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 Sat Aug 9 06:31:02 2014
@@ -137,10 +137,5 @@ class Type5ShadingContext extends Gourau
}
return list;
}
-
- @Override
- public void dispose()
- {
- super.dispose();
- }
+
}
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=1616918&r1=1616917&r2=1616918&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 Sat Aug 9 06:31:02 2014
@@ -78,10 +78,5 @@ class Type6ShadingContext extends PatchM
{
return new CoonsPatch(points, color);
}
-
- @Override
- public void dispose()
- {
- super.dispose();
- }
+
}
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=1616918&r1=1616917&r2=1616918&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 Sat Aug 9 06:31:02 2014
@@ -78,10 +78,5 @@ class Type7ShadingContext extends PatchM
{
return new TensorPatch(points, color);
}
-
- @Override
- public void dispose()
- {
- super.dispose();
- }
+
}