Author: lehmi
Date: Wed Jun 8 10:24:36 2011
New Revision: 1133328
URL: http://svn.apache.org/viewvc?rev=1133328&view=rev
Log:
PDFBOX-1013: fixed NPE as proposed by Craig Stires, added some more COSName
constants, introduced more default values
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/PDShading.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java
URL:
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java?rev=1133328&r1=1133327&r2=1133328&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java
(original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java Wed
Jun 8 10:24:36 2011
@@ -86,6 +86,10 @@ public final class COSName extends COSBa
/**
* A common COSName value.
*/
+ public static final COSName ANTI_ALIAS = new COSName( "AntiAlias" );
+ /**
+ * A common COSName value.
+ */
public static final COSName AP_REF = new COSName( "APRef" );
/**
* "Artifact"
@@ -275,9 +279,13 @@ public final class COSName extends COSBa
*/
public static final COSName COLUMNS = new COSName( "Columns" );
/**
- * A common COSName value.
- */
+ * A common COSName value.
+ */
public static final COSName CONTENTS = new COSName( "Contents" );
+ /**
+ * A common COSName value.
+ */
+ public static final COSName COORDS = new COSName( "Coords" );
/**
* A common COSName value.
*/
@@ -433,6 +441,11 @@ public final class COSName extends COSBa
/** "ExtGState" */
public static final COSName EXT_G_STATE = new COSName( "ExtGState" );
+ /**
+ * A common COSName value.
+ */
+ public static final COSName EXTEND = new COSName( "Extend" );
+
/** "Extends" */
public static final COSName EXTENDS = new COSName( "Extends" );
@@ -536,6 +549,10 @@ public final class COSName extends COSBa
/**
* A common COSName value.
*/
+ public static final COSName FUNCTION = new COSName( "Function" );
+ /**
+ * A common COSName value.
+ */
public static final COSName FUNCTION_TYPE = new COSName( "FunctionType" );
/**
* A common COSName value.
@@ -947,6 +964,10 @@ public final class COSName extends COSBa
/**
* A common COSName value.
*/
+ public static final COSName SHADING_TYPE = new COSName( "ShadingType" );
+ /**
+ * A common COSName value.
+ */
public static final COSName SM = new COSName( "SM" );
/**
* A common COSName value.
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/PDShading.java
URL:
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/PDShading.java?rev=1133328&r1=1133327&r2=1133328&view=diff
==============================================================================
---
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/PDShading.java
(original)
+++
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/PDShading.java
Wed Jun 8 10:24:36 2011
@@ -20,6 +20,7 @@ import org.apache.pdfbox.pdmodel.common.
import org.apache.pdfbox.cos.COSBase;
import org.apache.pdfbox.cos.COSBoolean;
import org.apache.pdfbox.cos.COSArray;
+import org.apache.pdfbox.cos.COSFloat;
import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.cos.COSDictionary;
import org.apache.pdfbox.pdmodel.graphics.color.PDColorSpaceFactory;
@@ -41,7 +42,11 @@ public class PDShading implements COSObj
{
private COSDictionary DictShading;
private COSName shadingname;
-
+ private COSArray domain = null;
+ private COSArray extend = null;
+ private PDFunction function = null;
+ private PDColorSpace colorspace = null;
+
/**
* The name of this object.
*/
@@ -105,7 +110,7 @@ public class PDShading implements COSObj
*/
public int getShadingType()
{
- return DictShading.getInt("ShadingType");
+ return DictShading.getInt(COSName.SHADING_TYPE);
}
/**
@@ -116,7 +121,11 @@ public class PDShading implements COSObj
*/
public PDColorSpace getColorSpace() throws IOException
{
- return
PDColorSpaceFactory.createColorSpace(DictShading.getDictionaryObject("ColorSpace"));
+ if (colorspace == null)
+ {
+ colorspace =
PDColorSpaceFactory.createColorSpace(DictShading.getDictionaryObject(COSName.COLORSPACE));
+ }
+ return colorspace;
}
/**
@@ -126,7 +135,7 @@ public class PDShading implements COSObj
*/
public boolean getAntiAlias()
{
- return DictShading.getBoolean("AntiAlias",false);
+ return DictShading.getBoolean(COSName.ANTI_ALIAS,false);
}
/**
@@ -136,7 +145,7 @@ public class PDShading implements COSObj
*/
public COSArray getCoords()
{
- return (COSArray)(DictShading.getDictionaryObject("Coords"));
+ return (COSArray)(DictShading.getDictionaryObject(COSName.COORDS));
}
/**
@@ -146,7 +155,11 @@ public class PDShading implements COSObj
*/
public PDFunction getFunction() throws IOException
{
- return PDFunction.create(DictShading.getDictionaryObject("Function"));
+ if (function == null)
+ {
+ function =
PDFunction.create(DictShading.getDictionaryObject(COSName.FUNCTION));
+ }
+ return function;
}
/**
@@ -156,7 +169,18 @@ public class PDShading implements COSObj
*/
public COSArray getDomain()
{
- return (COSArray)(DictShading.getDictionaryObject("Domain"));
+ if (domain == null)
+ {
+ domain =
(COSArray)(DictShading.getDictionaryObject(COSName.DOMAIN));
+ // use default values
+ if (domain == null)
+ {
+ domain = new COSArray();
+ domain.add(new COSFloat(0.0f));
+ domain.add(new COSFloat(1.0f));
+ }
+ }
+ return domain;
}
/**
@@ -167,15 +191,18 @@ public class PDShading implements COSObj
*/
public COSArray getExtend()
{
- COSArray
arExtend=(COSArray)(DictShading.getDictionaryObject("Extend"));
- if (arExtend == null)
+ if (extend == null)
{
- arExtend = new COSArray();
- arExtend.add(COSBoolean.FALSE);
- arExtend.add(COSBoolean.FALSE);
+ extend =
(COSArray)(DictShading.getDictionaryObject(COSName.EXTEND));
+ // use default values
+ if (extend == null)
+ {
+ extend = new COSArray();
+ extend.add(COSBoolean.FALSE);
+ extend.add(COSBoolean.FALSE);
+ }
}
-
- return arExtend;
+ return extend;
}
/**
@@ -205,7 +232,7 @@ public class PDShading implements COSObj
+ "\tShadingType: " + getShadingType() + "\n"
+ "\tColorSpace: " + sColorSpace + "\n"
+ "\tAntiAlias: " + getAntiAlias() + "\n"
- + "\tCoords: " + getCoords().toString() + "\n"
+ + "\tCoords: " + (getCoords() != null ? getCoords().toString() :
"") + "\n"
+ "\tDomain: " + getDomain().toString() + "\n"
+ "\tFunction: " + sFunction + "\n"
+ "\tExtend: " + getExtend().toString() + "\n"