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 15:07:41 UTC
svn commit: r1616942 -
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/
Author: tilman
Date: Sat Aug 9 13:07:40 2014
New Revision: 1616942
URL: http://svn.apache.org/r1616942
Log:
PDFBOX-1915: created abstract shading resource type for common stuff to 4,5,6,7; more refactoring
Added:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDTriangleBasedShadingType.java (with props)
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/GouraudShadingContext.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType4.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType5.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType6.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType7.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/TriangleBasedShadingContext.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=1616942&r1=1616941&r2=1616942&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 13:07:40 2014
@@ -28,7 +28,6 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.pdfbox.cos.COSArray;
import org.apache.pdfbox.cos.COSBoolean;
-import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.common.function.PDFunction;
import org.apache.pdfbox.util.Matrix;
@@ -46,16 +45,16 @@ public class AxialShadingContext extends
{
private static final Log LOG = LogFactory.getLog(AxialShadingContext.class);
- private PDShadingType2 shading;
+ private PDShadingType2 axialShadingType;
- private float[] coords;
- private float[] domain;
+ private final float[] coords;
+ private final float[] domain;
private float[] background;
private int rgbBackground;
- private boolean[] extend;
- private double x1x0;
- private double y1y0;
- private float d1d0;
+ private final boolean[] extend;
+ private final double x1x0;
+ private final double y1y0;
+ private final float d1d0;
private double denom;
private final double axialLength;
@@ -74,7 +73,7 @@ public class AxialShadingContext extends
Matrix ctm, int pageHeight, Rectangle dBounds) throws IOException
{
super(shading, colorModel, xform, ctm, pageHeight, dBounds);
- this.shading = shading;
+ this.axialShadingType = shading;
coords = shading.getCoords().toFloatArray();
if (ctm != null)
@@ -137,7 +136,7 @@ public class AxialShadingContext extends
{
try
{
- float[] values = shading.evalFunction(domain[0]);
+ float[] values = axialShadingType.evalFunction(domain[0]);
map[0] = convertToRGB(values);
}
catch (IOException exception)
@@ -152,7 +151,7 @@ public class AxialShadingContext extends
float t = domain[0] + d1d0 * i / (float)axialLength;
try
{
- float[] values = shading.evalFunction(t);
+ float[] values = axialShadingType.evalFunction(t);
map[i] = convertToRGB(values);
}
catch (IOException exception)
@@ -188,7 +187,7 @@ public class AxialShadingContext extends
{
outputColorModel = null;
shadingColorSpace = null;
- shading = null;
+ axialShadingType = null;
}
@Override
@@ -343,6 +342,6 @@ public class AxialShadingContext extends
*/
public PDFunction getFunction() throws IOException
{
- return shading.getFunction();
+ return axialShadingType.getFunction();
}
}
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=1616942&r1=1616941&r2=1616942&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 13:07:40 2014
@@ -20,13 +20,9 @@ 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;
import java.awt.geom.Point2D;
import java.awt.image.ColorModel;
-import java.awt.image.ComponentColorModel;
-import java.awt.image.DataBuffer;
import java.awt.image.Raster;
import java.awt.image.WritableRaster;
import java.io.IOException;
@@ -55,18 +51,10 @@ abstract class GouraudShadingContext ext
/** triangle list. */
protected ArrayList<CoonsTriangle> triangleList;
- /** bits per coordinate. */
- protected int bitsPerCoordinate;
-
- /** bits per color component. */
- protected int bitsPerColorComponent;
-
/** background values.*/
protected float[] background;
protected int rgbBackground;
- protected final PDShading gouraudShadingType;
-
protected HashMap<Point, Integer> pixelTable;
/**
@@ -82,7 +70,6 @@ abstract class GouraudShadingContext ext
Matrix ctm, int pageHeight, Rectangle dBounds) throws IOException
{
super(shading, colorModel, xform, ctm, pageHeight, dBounds);
- gouraudShadingType = shading;
triangleList = new ArrayList<CoonsTriangle>();
numberOfColorComponents = hasFunction ? 1 : shadingColorSpace.getNumberOfComponents();
LOG.debug("Background: " + shading.getBackground());
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType4.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType4.java?rev=1616942&r1=1616941&r2=1616942&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType4.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType4.java Sat Aug 9 13:07:40 2014
@@ -16,10 +16,8 @@
*/
package org.apache.pdfbox.pdmodel.graphics.shading;
-import org.apache.pdfbox.cos.COSArray;
import org.apache.pdfbox.cos.COSDictionary;
import org.apache.pdfbox.cos.COSName;
-import org.apache.pdfbox.pdmodel.common.PDRange;
import org.apache.pdfbox.util.Matrix;
import java.awt.Paint;
@@ -27,13 +25,8 @@ import java.awt.Paint;
/**
* Resources for a shading type 4 (Free-Form Gouraud-Shaded Triangle Mesh).
*/
-public class PDShadingType4 extends PDShading
+public class PDShadingType4 extends PDTriangleBasedShadingType
{
- // an array of 2^n numbers specifying the linear mapping of sample values
- // into the range appropriate for the function's output values. Default
- // value: same as the value of Range
- private COSArray decode = null;
-
/**
* Constructor using the given shading dictionary.
* @param shadingDictionary the dictionary for this shading
@@ -50,42 +43,6 @@ public class PDShadingType4 extends PDSh
}
/**
- * The bits per component of this shading. This will return -1 if one has not been set.
- * @return the number of bits per component
- */
- public int getBitsPerComponent()
- {
- return getCOSDictionary().getInt(COSName.BITS_PER_COMPONENT, -1);
- }
-
- /**
- * Set the number of bits per component.
- * @param bitsPerComponent the number of bits per component
- */
- public void setBitsPerComponent(int bitsPerComponent)
- {
- getCOSDictionary().setInt(COSName.BITS_PER_COMPONENT, bitsPerComponent);
- }
-
- /**
- * The bits per coordinate of this shading. This will return -1 if one has not been set.
- * @return the number of bits per coordinate
- */
- public int getBitsPerCoordinate()
- {
- return getCOSDictionary().getInt(COSName.BITS_PER_COORDINATE, -1);
- }
-
- /**
- * Set the number of bits per coordinate.
- * @param bitsPerComponent the number of bits per coordinate
- */
- public void setBitsPerCoordinate(int bitsPerComponent)
- {
- getCOSDictionary().setInt(COSName.BITS_PER_COORDINATE, bitsPerComponent);
- }
-
- /**
* The bits per flag of this shading. This will return -1 if one has not been set.
* @return The number of bits per flag.
*/
@@ -103,45 +60,6 @@ public class PDShadingType4 extends PDSh
getCOSDictionary().setInt(COSName.BITS_PER_FLAG, bitsPerFlag);
}
- /**
- * Returns all decode values as COSArray.
- * @return the decode array
- */
- private COSArray getDecodeValues()
- {
- if (decode == null)
- {
- decode = (COSArray) getCOSDictionary().getDictionaryObject(COSName.DECODE);
- }
- return decode;
- }
-
- /**
- * This will set the decode values.
- * @param decodeValues the new decode values
- */
- public void setDecodeValues(COSArray decodeValues)
- {
- decode = decodeValues;
- getCOSDictionary().setItem(COSName.DECODE, decodeValues);
- }
-
- /**
- * Get the decode for the input parameter.
- * @param paramNum the function parameter number
- * @return the decode parameter range or null if none is set
- */
- public PDRange getDecodeForParameter(int paramNum)
- {
- PDRange retval = null;
- COSArray decodeValues = getDecodeValues();
- if (decodeValues != null && decodeValues.size() >= paramNum * 2 + 1)
- {
- retval = new PDRange(decodeValues, paramNum);
- }
- return retval;
- }
-
@Override
public Paint toPaint(Matrix matrix, int pageHeight)
{
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType5.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType5.java?rev=1616942&r1=1616941&r2=1616942&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType5.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType5.java Sat Aug 9 13:07:40 2014
@@ -16,10 +16,8 @@
*/
package org.apache.pdfbox.pdmodel.graphics.shading;
-import org.apache.pdfbox.cos.COSArray;
import org.apache.pdfbox.cos.COSDictionary;
import org.apache.pdfbox.cos.COSName;
-import org.apache.pdfbox.pdmodel.common.PDRange;
import org.apache.pdfbox.util.Matrix;
import java.awt.Paint;
@@ -27,13 +25,8 @@ import java.awt.Paint;
/**
* Resources for a shading type 5 (Lattice-Form Gouraud-Shade Triangle Mesh).
*/
-public class PDShadingType5 extends PDShading
+public class PDShadingType5 extends PDTriangleBasedShadingType
{
- // an array of 2^n numbers specifying the linear mapping of sample values
- // into the range appropriate for the function's output values. Default
- // value: same as the value of Range
- private COSArray decode = null;
-
/**
* Constructor using the given shading dictionary.
* @param shadingDictionary the dictionary for this shading
@@ -50,42 +43,6 @@ public class PDShadingType5 extends PDSh
}
/**
- * The bits per component of this shading. This will return -1 if one has not been set.
- * @return the number of bits per component
- */
- public int getBitsPerComponent()
- {
- return getCOSDictionary().getInt(COSName.BITS_PER_COMPONENT, -1);
- }
-
- /**
- * Set the number of bits per component.
- * @param bitsPerComponent the number of bits per component
- */
- public void setBitsPerComponent(int bitsPerComponent)
- {
- getCOSDictionary().setInt(COSName.BITS_PER_COMPONENT, bitsPerComponent);
- }
-
- /**
- * The bits per coordinate of this shading. This will return -1 if one has not been set.
- * @return the number of bits per coordinate
- */
- public int getBitsPerCoordinate()
- {
- return getCOSDictionary().getInt(COSName.BITS_PER_COORDINATE, -1);
- }
-
- /**
- * Set the number of bits per coordinate.
- * @param bitsPerComponent the number of bits per coordinate
- */
- public void setBitsPerCoordinate(int bitsPerComponent)
- {
- getCOSDictionary().setInt(COSName.BITS_PER_COORDINATE, bitsPerComponent);
- }
-
- /**
* The vertices per row of this shading. This will return -1 if one has not been set.
* @return the number of vertices per row
*/
@@ -103,45 +60,6 @@ public class PDShadingType5 extends PDSh
getCOSDictionary().setInt(COSName.VERTICES_PER_ROW, verticesPerRow);
}
- /**
- * Returns all decode values as COSArray.
- * @return the decode array.
- */
- private COSArray getDecodeValues()
- {
- if (decode == null)
- {
- decode = (COSArray) getCOSDictionary().getDictionaryObject(COSName.DECODE);
- }
- return decode;
- }
-
- /**
- * This will set the decode values.
- * @param decodeValues The new decode values.
- */
- public void setDecodeValues(COSArray decodeValues)
- {
- decode = decodeValues;
- getCOSDictionary().setItem(COSName.DECODE, decodeValues);
- }
-
- /**
- * Get the decode for the input parameter.
- * @param paramNum The function parameter number.
- * @return The decode parameter range or null if none is set.
- */
- public PDRange getDecodeForParameter(int paramNum)
- {
- PDRange retval = null;
- COSArray decodeValues = getDecodeValues();
- if (decodeValues != null && decodeValues.size() >= paramNum * 2 + 1)
- {
- retval = new PDRange(decodeValues, paramNum);
- }
- return retval;
- }
-
@Override
public Paint toPaint(Matrix matrix, int pageHeight)
{
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType6.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType6.java?rev=1616942&r1=1616941&r2=1616942&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType6.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType6.java Sat Aug 9 13:07:40 2014
@@ -16,8 +16,6 @@
*/
package org.apache.pdfbox.pdmodel.graphics.shading;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.pdfbox.cos.COSDictionary;
import org.apache.pdfbox.util.Matrix;
@@ -28,10 +26,10 @@ import java.awt.Paint;
*/
public class PDShadingType6 extends PDShadingType4
{
- private static final Log LOG = LogFactory.getLog(PDShadingType6.class);
/**
* Constructor using the given shading dictionary.
+ *
* @param shadingDictionary the dictionary for this shading
*/
public PDShadingType6(COSDictionary shadingDictionary)
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType7.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType7.java?rev=1616942&r1=1616941&r2=1616942&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType7.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType7.java Sat Aug 9 13:07:40 2014
@@ -16,8 +16,6 @@
*/
package org.apache.pdfbox.pdmodel.graphics.shading;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.pdfbox.cos.COSDictionary;
import org.apache.pdfbox.util.Matrix;
@@ -26,12 +24,12 @@ import java.awt.Paint;
/**
* Resources for a shading type 7 (Tensor-Product Patch Mesh).
*/
-public class PDShadingType7 extends PDShadingType4
+public class PDShadingType7 extends PDShadingType6
{
- private static final Log LOG = LogFactory.getLog(PDShadingType7.class);
/**
* Constructor using the given shading dictionary.
+ *
* @param shadingDictionary the dictionary for this shading
*/
public PDShadingType7(COSDictionary shadingDictionary)
Added: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDTriangleBasedShadingType.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDTriangleBasedShadingType.java?rev=1616942&view=auto
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDTriangleBasedShadingType.java (added)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDTriangleBasedShadingType.java Sat Aug 9 13:07:40 2014
@@ -0,0 +1,114 @@
+/*
+ * Copyright 2014 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.pdfbox.pdmodel.graphics.shading;
+
+import org.apache.pdfbox.cos.COSArray;
+import org.apache.pdfbox.cos.COSName;
+import org.apache.pdfbox.pdmodel.common.PDRange;
+import org.apache.pdfbox.cos.COSDictionary;
+
+/**
+ * Common resources for shading types 4,5,6 and 7
+ */
+abstract class PDTriangleBasedShadingType extends PDShading
+{
+ // an array of 2^n numbers specifying the linear mapping of sample values
+ // into the range appropriate for the function's output values. Default
+ // value: same as the value of Range
+ private COSArray decode = null;
+
+ PDTriangleBasedShadingType(COSDictionary shadingDictionary)
+ {
+ super(shadingDictionary);
+ }
+
+ /**
+ * The bits per component of this shading. This will return -1 if one has not been set.
+ * @return the number of bits per component
+ */
+ public int getBitsPerComponent()
+ {
+ return getCOSDictionary().getInt(COSName.BITS_PER_COMPONENT, -1);
+ }
+
+ /**
+ * Set the number of bits per component.
+ * @param bitsPerComponent the number of bits per component
+ */
+ public void setBitsPerComponent(int bitsPerComponent)
+ {
+ getCOSDictionary().setInt(COSName.BITS_PER_COMPONENT, bitsPerComponent);
+ }
+
+ /**
+ * The bits per coordinate of this shading. This will return -1 if one has not been set.
+ * @return the number of bits per coordinate
+ */
+ public int getBitsPerCoordinate()
+ {
+ return getCOSDictionary().getInt(COSName.BITS_PER_COORDINATE, -1);
+ }
+
+ /**
+ * Set the number of bits per coordinate.
+ * @param bitsPerComponent the number of bits per coordinate
+ */
+ public void setBitsPerCoordinate(int bitsPerComponent)
+ {
+ getCOSDictionary().setInt(COSName.BITS_PER_COORDINATE, bitsPerComponent);
+ }
+
+ /**
+ * Returns all decode values as COSArray.
+ * @return the decode array
+ */
+ private COSArray getDecodeValues()
+ {
+ if (decode == null)
+ {
+ decode = (COSArray) getCOSDictionary().getDictionaryObject(COSName.DECODE);
+ }
+ return decode;
+ }
+
+ /**
+ * This will set the decode values.
+ * @param decodeValues the new decode values
+ */
+ public void setDecodeValues(COSArray decodeValues)
+ {
+ decode = decodeValues;
+ getCOSDictionary().setItem(COSName.DECODE, decodeValues);
+ }
+
+ /**
+ * Get the decode for the input parameter.
+ * @param paramNum the function parameter number
+ * @return the decode parameter range or null if none is set
+ */
+ public PDRange getDecodeForParameter(int paramNum)
+ {
+ PDRange retval = null;
+ COSArray decodeValues = getDecodeValues();
+ if (decodeValues != null && decodeValues.size() >= paramNum * 2 + 1)
+ {
+ retval = new PDRange(decodeValues, paramNum);
+ }
+ return retval;
+ }
+
+}
Propchange: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDTriangleBasedShadingType.java
------------------------------------------------------------------------------
svn:eol-style = native
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=1616942&r1=1616941&r2=1616942&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 13:07:40 2014
@@ -54,8 +54,6 @@ abstract class PatchMeshesShadingContext
// the following fields are not intialized in this abstract class
protected ArrayList<Patch> patchList; // patch list
- protected int bitsPerCoordinate; // bits per coordinate
- protected int bitsPerColorComponent; // bits per color component
protected int bitsPerFlag; // bits per flag
protected HashMap<Point, Integer> pixelTable;
@@ -74,6 +72,7 @@ abstract class PatchMeshesShadingContext
{
super(shading, colorModel, xform, ctm, pageHeight, dBounds);
patchMeshesShadingType = shading;
+ bitsPerFlag = ((PDShadingType6) shading).getBitsPerFlag();
patchList = new ArrayList<Patch>();
numberOfColorComponents = hasFunction ? 1 : shadingColorSpace.getNumberOfComponents();
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=1616942&r1=1616941&r2=1616942&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 13:07:40 2014
@@ -28,7 +28,6 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.pdfbox.cos.COSArray;
import org.apache.pdfbox.cos.COSBoolean;
-import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.common.function.PDFunction;
import org.apache.pdfbox.util.Matrix;
@@ -45,25 +44,24 @@ public class RadialShadingContext extend
{
private static final Log LOG = LogFactory.getLog(RadialShadingContext.class);
- private PDShadingType3 shading;
+ private PDShadingType3 radialShadingType;
- private float[] coords;
- private float[] domain;
+ private final float[] coords;
+ private final float[] domain;
private float[] background;
private int rgbBackground;
- private boolean[] extend;
- private double x1x0;
- private double y1y0;
- private double r1r0;
- private double x1x0pow2;
- private double y1y0pow2;
- private double r0pow2;
-
- private float d1d0;
- private double denom;
+ private final boolean[] extend;
+ private final double x1x0;
+ private final double y1y0;
+ private final double r1r0;
+ private final double x1x0pow2;
+ private final double y1y0pow2;
+ private final double r0pow2;
+ private final float d1d0;
+ private final double denom;
private final double longestDistance;
- private int[] colorTable;
+ private final int[] colorTable;
/**
* Constructor creates an instance to be used for fill operations.
@@ -78,7 +76,7 @@ public class RadialShadingContext extend
Matrix ctm, int pageHeight, Rectangle dBounds) throws IOException
{
super(shading, colorModel, xform, ctm, pageHeight, dBounds);
- this.shading = shading;
+ this.radialShadingType = shading;
coords = shading.getCoords().toFloatArray();
if (ctm != null)
@@ -98,7 +96,7 @@ public class RadialShadingContext extend
coords[5] *= xform.getScaleX();
// domain values
- if (this.shading.getDomain() != null)
+ if (this.radialShadingType.getDomain() != null)
{
domain = shading.getDomain().toFloatArray();
}
@@ -178,7 +176,7 @@ public class RadialShadingContext extend
{
try
{
- float[] values = shading.evalFunction(domain[0]);
+ float[] values = radialShadingType.evalFunction(domain[0]);
map[0] = convertToRGB(values);
}
catch (IOException exception)
@@ -193,7 +191,7 @@ public class RadialShadingContext extend
float t = domain[0] + d1d0 * i / (float)longestDistance;
try
{
- float[] values = shading.evalFunction(t);
+ float[] values = radialShadingType.evalFunction(t);
map[i] = convertToRGB(values);
}
catch (IOException exception)
@@ -228,7 +226,7 @@ public class RadialShadingContext extend
public void dispose()
{
outputColorModel = null;
- shading = null;
+ radialShadingType = null;
shadingColorSpace = null;
}
@@ -461,6 +459,6 @@ public class RadialShadingContext extend
*/
public PDFunction getFunction() throws IOException
{
- return shading.getFunction();
+ return radialShadingType.getFunction();
}
}
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=1616942&r1=1616941&r2=1616942&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 13:07:40 2014
@@ -39,6 +39,7 @@ public abstract class ShadingContext
{
private static final Log LOG = LogFactory.getLog(ShadingContext.class);
+ protected final PDShading shading;
protected final Rectangle deviceBounds;
protected PDColorSpace shadingColorSpace;
protected PDRectangle bboxRect;
@@ -48,6 +49,7 @@ public abstract class ShadingContext
public ShadingContext(PDShading shading, ColorModel cm, AffineTransform xform,
Matrix ctm, int pageHeight, Rectangle dBounds) throws IOException
{
+ this.shading = shading;
deviceBounds = dBounds;
shadingColorSpace = shading.getColorSpace();
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/TriangleBasedShadingContext.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/TriangleBasedShadingContext.java?rev=1616942&r1=1616941&r2=1616942&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/TriangleBasedShadingContext.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/TriangleBasedShadingContext.java Sat Aug 9 13:07:40 2014
@@ -40,15 +40,24 @@ abstract class TriangleBasedShadingConte
private static final Log LOG = LogFactory.getLog(TriangleBasedShadingContext.class);
protected final boolean hasFunction;
- protected final PDShading shading;
+
+ /** bits per coordinate. */
+ protected int bitsPerCoordinate;
+
+ /** bits per color component */
+ protected int bitsPerColorComponent;
public TriangleBasedShadingContext(PDShading shading, ColorModel cm,
AffineTransform xform, Matrix ctm, int pageHeight, Rectangle dBounds)
throws IOException
{
super(shading, cm, xform, ctm, pageHeight, dBounds);
+ PDTriangleBasedShadingType triangleBasedShadingType = (PDTriangleBasedShadingType) shading;
hasFunction = shading.getFunction() != null;
- this.shading = shading;
+ bitsPerCoordinate = triangleBasedShadingType.getBitsPerCoordinate();
+ LOG.debug("bitsPerCoordinate: " + (Math.pow(2, bitsPerCoordinate) - 1));
+ bitsPerColorComponent = triangleBasedShadingType.getBitsPerComponent();
+ LOG.debug("bitsPerColorComponent: " + bitsPerColorComponent);
}
// convert color to RGB color value, using function if required,
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=1616942&r1=1616941&r2=1616942&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 13:07:40 2014
@@ -37,9 +37,9 @@ class Type1ShadingContext extends Shadin
{
private static final Log LOG = LogFactory.getLog(Type1ShadingContext.class);
- private PDShadingType1 shading;
+ private PDShadingType1 type1ShadingType;
private AffineTransform rat;
- private float[] domain;
+ private final float[] domain;
private Matrix matrix;
private float[] background;
@@ -56,15 +56,15 @@ class Type1ShadingContext extends Shadin
Matrix ctm, int pageHeight, Rectangle dBounds) throws IOException
{
super(shading, colorModel, xform, ctm, pageHeight, dBounds);
- this.shading = shading;
+ this.type1ShadingType = shading;
// spec p.308
// (Optional) An array of four numbers [ xmin xmax ymin ymax ]
// specifying the rectangular domain of coordinates over which the
// color function(s) are defined. Default value: [ 0.0 1.0 0.0 1.0 ].
- if (this.shading.getDomain() != null)
+ if (shading.getDomain() != null)
{
- domain = this.shading.getDomain().toFloatArray();
+ domain = shading.getDomain().toFloatArray();
}
else
{
@@ -74,7 +74,7 @@ class Type1ShadingContext extends Shadin
};
}
- matrix = this.shading.getMatrix();
+ matrix = shading.getMatrix();
if (matrix == null)
{
matrix = new Matrix();
@@ -107,7 +107,7 @@ class Type1ShadingContext extends Shadin
{
outputColorModel = null;
shadingColorSpace = null;
- shading = null;
+ type1ShadingType = null;
}
@Override
@@ -168,7 +168,7 @@ class Type1ShadingContext extends Shadin
{
try
{
- values = shading.evalFunction(values);
+ values = type1ShadingType.evalFunction(values);
}
catch (IOException exception)
{
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=1616942&r1=1616941&r2=1616942&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 13:07:40 2014
@@ -56,10 +56,6 @@ class Type4ShadingContext extends Gourau
super(shading, cm, xform, ctm, pageHeight, dBounds);
LOG.debug("Type4ShadingContext");
- bitsPerColorComponent = shading.getBitsPerComponent();
- LOG.debug("bitsPerColorComponent: " + bitsPerColorComponent);
- bitsPerCoordinate = shading.getBitsPerCoordinate();
- LOG.debug(Math.pow(2, bitsPerCoordinate) - 1);
bitsPerFlag = shading.getBitsPerFlag();
LOG.debug("bitsPerFlag: " + bitsPerFlag); //TODO handle cases where bitperflag isn't 8
triangleList = getTriangleList(xform,ctm);
@@ -68,14 +64,14 @@ class Type4ShadingContext extends Gourau
private ArrayList<CoonsTriangle> getTriangleList(AffineTransform xform,Matrix ctm) throws IOException
{
- PDShadingType4 FreeTriangleShadingType = (PDShadingType4) gouraudShadingType;
- COSDictionary cosDictionary = FreeTriangleShadingType.getCOSDictionary();
- PDRange rangeX = FreeTriangleShadingType.getDecodeForParameter(0);
- PDRange rangeY = FreeTriangleShadingType.getDecodeForParameter(1);
+ PDShadingType4 freeTriangleShadingType = (PDShadingType4) shading;
+ COSDictionary cosDictionary = freeTriangleShadingType.getCOSDictionary();
+ PDRange rangeX = freeTriangleShadingType.getDecodeForParameter(0);
+ PDRange rangeY = freeTriangleShadingType.getDecodeForParameter(1);
PDRange[] colRange = new PDRange[numberOfColorComponents];
for (int i = 0; i < numberOfColorComponents; ++i)
{
- colRange[i] = FreeTriangleShadingType.getDecodeForParameter(2 + i);
+ colRange[i] = freeTriangleShadingType.getDecodeForParameter(2 + i);
}
ArrayList<CoonsTriangle> list = new ArrayList<CoonsTriangle>();
long maxSrcCoord = (long) Math.pow(2, bitsPerCoordinate) - 1;
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=1616942&r1=1616941&r2=1616942&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 13:07:40 2014
@@ -57,10 +57,6 @@ class Type5ShadingContext extends Gourau
LOG.debug("Type5ShadingContext");
- bitsPerColorComponent = shading.getBitsPerComponent();
- LOG.debug("bitsPerColorComponent: " + bitsPerColorComponent);
- bitsPerCoordinate = shading.getBitsPerCoordinate();
- LOG.debug(Math.pow(2, bitsPerCoordinate) - 1);
triangleList = getTriangleList(xform,ctm);
pixelTable = calcPixelTable();
}
@@ -68,15 +64,15 @@ class Type5ShadingContext extends Gourau
private ArrayList<CoonsTriangle> getTriangleList(AffineTransform xform, Matrix ctm) throws IOException
{
ArrayList<CoonsTriangle> list = new ArrayList<CoonsTriangle>();
- PDShadingType5 LatticeTriangleShadingType = (PDShadingType5) gouraudShadingType;
- COSDictionary cosDictionary = LatticeTriangleShadingType.getCOSDictionary();
- PDRange rangeX = LatticeTriangleShadingType.getDecodeForParameter(0);
- PDRange rangeY = LatticeTriangleShadingType.getDecodeForParameter(1);
- int numPerRow = LatticeTriangleShadingType.getVerticesPerRow();
+ PDShadingType5 latticeTriangleShadingType = (PDShadingType5) shading;
+ COSDictionary cosDictionary = latticeTriangleShadingType.getCOSDictionary();
+ PDRange rangeX = latticeTriangleShadingType.getDecodeForParameter(0);
+ PDRange rangeY = latticeTriangleShadingType.getDecodeForParameter(1);
+ int numPerRow = latticeTriangleShadingType.getVerticesPerRow();
PDRange[] colRange = new PDRange[numberOfColorComponents];
for (int i = 0; i < numberOfColorComponents; ++i)
{
- colRange[i] = LatticeTriangleShadingType.getDecodeForParameter(2 + i);
+ colRange[i] = latticeTriangleShadingType.getDecodeForParameter(2 + i);
}
ArrayList<Vertex> vlist = new ArrayList<Vertex>();
long maxSrcCoord = (long) Math.pow(2, bitsPerCoordinate) - 1;
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=1616942&r1=1616941&r2=1616942&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 13:07:40 2014
@@ -22,8 +22,6 @@ import java.awt.geom.Point2D;
import java.awt.image.ColorModel;
import java.io.IOException;
import java.util.ArrayList;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.pdfbox.cos.COSDictionary;
import org.apache.pdfbox.pdmodel.common.PDRange;
import org.apache.pdfbox.util.Matrix;
@@ -35,7 +33,6 @@ import org.apache.pdfbox.util.Matrix;
*/
class Type6ShadingContext extends PatchMeshesShadingContext
{
- private static final Log LOG = LogFactory.getLog(Type6ShadingContext.class);
/**
* Constructor creates an instance to be used for fill operations.
@@ -51,9 +48,6 @@ class Type6ShadingContext extends PatchM
Matrix ctm, int pageHeight, Rectangle dBounds) throws IOException
{
super(shading, colorModel, xform, ctm, pageHeight, dBounds);
- bitsPerColorComponent = shading.getBitsPerComponent();
- bitsPerCoordinate = shading.getBitsPerCoordinate();
- bitsPerFlag = shading.getBitsPerFlag();
patchList = getCoonsPatchList(xform, ctm);
pixelTable = calcPixelTable();
}
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=1616942&r1=1616941&r2=1616942&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 13:07:40 2014
@@ -22,8 +22,6 @@ import java.awt.geom.Point2D;
import java.awt.image.ColorModel;
import java.io.IOException;
import java.util.ArrayList;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.apache.pdfbox.cos.COSDictionary;
import org.apache.pdfbox.pdmodel.common.PDRange;
import org.apache.pdfbox.util.Matrix;
@@ -35,7 +33,6 @@ import org.apache.pdfbox.util.Matrix;
*/
class Type7ShadingContext extends PatchMeshesShadingContext
{
- private static final Log LOG = LogFactory.getLog(Type7ShadingContext.class);
/**
* Constructor creates an instance to be used for fill operations.
@@ -51,9 +48,6 @@ class Type7ShadingContext extends PatchM
Matrix ctm, int pageHeight, Rectangle dBounds) throws IOException
{
super(shading, colorModel, xform, ctm, pageHeight, dBounds);
- bitsPerColorComponent = shading.getBitsPerComponent();
- bitsPerCoordinate = shading.getBitsPerCoordinate();
- bitsPerFlag = shading.getBitsPerFlag();
patchList = getTensorPatchList(xform, ctm);
pixelTable = calcPixelTable();
}