You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2014/02/02 15:40:36 UTC
svn commit: r1563626 - in /pdfbox/branches/1.8: ./
pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/
pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/
Author: lehmi
Date: Sun Feb 2 14:40:36 2014
New Revision: 1563626
URL: http://svn.apache.org/r1563626
Log:
PDFBOX-1869: added ShadingType1 support as proposed by Tilman Hausherr
Added:
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type1ShadingContext.java
- copied unchanged from r1563429, pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type1ShadingContext.java
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type1ShadingPaint.java
- copied unchanged from r1563429, pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type1ShadingPaint.java
Modified:
pdfbox/branches/1.8/ (props changed)
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDShadingPatternResources.java
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType1.java
Propchange: pdfbox/branches/1.8/
------------------------------------------------------------------------------
Merged /pdfbox/trunk:r1563429
Modified: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDShadingPatternResources.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDShadingPatternResources.java?rev=1563626&r1=1563625&r2=1563626&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDShadingPatternResources.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/pattern/PDShadingPatternResources.java Sun Feb 2 14:40:36 2014
@@ -32,9 +32,11 @@ import org.apache.pdfbox.pdmodel.graphic
import org.apache.pdfbox.pdmodel.graphics.pattern.PDPatternResources;
import org.apache.pdfbox.pdmodel.graphics.shading.AxialShadingPaint;
import org.apache.pdfbox.pdmodel.graphics.shading.PDShadingResources;
+import org.apache.pdfbox.pdmodel.graphics.shading.PDShadingType1;
import org.apache.pdfbox.pdmodel.graphics.shading.PDShadingType2;
import org.apache.pdfbox.pdmodel.graphics.shading.PDShadingType3;
import org.apache.pdfbox.pdmodel.graphics.shading.RadialShadingPaint;
+import org.apache.pdfbox.pdmodel.graphics.shading.Type1ShadingPaint;
import org.apache.pdfbox.util.Matrix;
/**
@@ -205,13 +207,15 @@ public class PDShadingPatternResources e
int shadingType = shadingResources != null ? shadingResources.getShadingType() : 0;
switch (shadingType)
{
+ case PDShadingResources.SHADING_TYPE1:
+ paint = new Type1ShadingPaint((PDShadingType1)getShading(), getMatrix(), pageHeight);
+ break;
case PDShadingResources.SHADING_TYPE2:
paint = new AxialShadingPaint((PDShadingType2)getShading(), null, pageHeight);
break;
case PDShadingResources.SHADING_TYPE3:
paint = new RadialShadingPaint((PDShadingType3)getShading(), null, pageHeight);
break;
- case PDShadingResources.SHADING_TYPE1:
case PDShadingResources.SHADING_TYPE4:
case PDShadingResources.SHADING_TYPE5:
case PDShadingResources.SHADING_TYPE6:
Modified: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType1.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType1.java?rev=1563626&r1=1563625&r2=1563626&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType1.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType1.java Sun Feb 2 14:40:36 2014
@@ -22,6 +22,7 @@ import java.awt.geom.AffineTransform;
import java.io.IOException;
import org.apache.pdfbox.cos.COSArray;
+import org.apache.pdfbox.cos.COSBase;
import org.apache.pdfbox.cos.COSDictionary;
import org.apache.pdfbox.cos.COSFloat;
import org.apache.pdfbox.cos.COSName;
@@ -32,13 +33,13 @@ import org.apache.pdfbox.util.Matrix;
/**
* This represents resources for a function based shading.
*
- * @version $Revision: 1.0 $
*/
public class PDShadingType1 extends PDShadingResources
{
private COSArray domain = null;
private PDFunction function = null;
+ private PDFunction[] functionArray = null;
/**
* Constructor using the given shading dictionary.
@@ -148,4 +149,61 @@ public class PDShadingType1 extends PDSh
return function;
}
+ /**
+ * Provide the function(s) of the shading dictionary as array.
+ *
+ * @return an array containing the function(s)
+ * @throws IOException throw if something went wrong
+ */
+ private PDFunction[] getFunctionsArray() throws IOException
+ {
+ if (functionArray == null)
+ {
+ COSBase functionObject = getCOSDictionary().getDictionaryObject(COSName.FUNCTION);
+ if (functionObject instanceof COSDictionary)
+ {
+ functionArray = new PDFunction[1];
+ functionArray[0] = PDFunction.create(functionObject);
+ }
+ else
+ {
+ COSArray functionCOSArray = (COSArray)functionObject;
+ int numberOfFunctions = functionCOSArray.size();
+ functionArray = new PDFunction[numberOfFunctions];
+ for (int i=0; i<numberOfFunctions; i++)
+ {
+ functionArray[i] = PDFunction.create(functionCOSArray.get(i));
+ }
+ }
+ }
+ return functionArray;
+ }
+
+ /**
+ * Convert the input value using the functions of the shading dictionary.
+ *
+ * @param inputValue the input value
+ * @return the output values
+ * @throws IOException thrown if something went wrong
+ */
+ public float[] evalFunction(float [] input) throws IOException
+ {
+ PDFunction[] functions = getFunctionsArray();
+ int numberOfFunctions = functions.length;
+ float[] returnValues = null;
+ if (numberOfFunctions == 1)
+ {
+ returnValues = functions[0].eval(input);
+ }
+ else
+ {
+ returnValues = new float[numberOfFunctions];
+ for (int i=0; i<numberOfFunctions;i++)
+ {
+ float[] newValue = functions[i].eval(input);
+ returnValues[i] = newValue[0];
+ }
+ }
+ return returnValues;
+ }
}