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 2018/02/28 17:38:13 UTC
svn commit: r1825591 - in
/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading:
GouraudShadingContext.java PatchMeshesShadingContext.java
Type4ShadingContext.java Type5ShadingContext.java
Author: tilman
Date: Wed Feb 28 17:38:13 2018
New Revision: 1825591
URL: http://svn.apache.org/viewvc?rev=1825591&view=rev
Log:
PDFBOX-4071: avoid ClassCastException; skip empty rages; make method that is called in constructor final
Modified:
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PatchMeshesShadingContext.java
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type4ShadingContext.java
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type5ShadingContext.java
Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java?rev=1825591&r1=1825590&r2=1825591&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java Wed Feb 28 17:38:13 2018
@@ -109,7 +109,7 @@ abstract class GouraudShadingContext ext
return new Vertex(p, colorComponentTab);
}
- void setTriangleList(List<ShadedTriangle> triangleList)
+ final void setTriangleList(List<ShadedTriangle> triangleList)
{
this.triangleList = triangleList;
}
Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PatchMeshesShadingContext.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PatchMeshesShadingContext.java?rev=1825591&r1=1825590&r2=1825591&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PatchMeshesShadingContext.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PatchMeshesShadingContext.java Wed Feb 28 17:38:13 2018
@@ -23,6 +23,7 @@ import java.awt.image.ColorModel;
import java.io.EOFException;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -85,9 +86,18 @@ abstract class PatchMeshesShadingContext
Matrix matrix, int controlPoints) throws IOException
{
COSDictionary dict = shadingType.getCOSObject();
- int bitsPerFlag = shadingType.getBitsPerFlag();
+ if (!(dict instanceof COSStream))
+ {
+ return Collections.emptyList();
+ }
PDRange rangeX = shadingType.getDecodeForParameter(0);
PDRange rangeY = shadingType.getDecodeForParameter(1);
+ if (Float.compare(rangeX.getMin(), rangeX.getMax()) == 0 ||
+ Float.compare(rangeY.getMin(), rangeY.getMax()) == 0)
+ {
+ return Collections.emptyList();
+ }
+ int bitsPerFlag = shadingType.getBitsPerFlag();
PDRange[] colRange = new PDRange[numberOfColorComponents];
for (int i = 0; i < numberOfColorComponents; ++i)
{
Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type4ShadingContext.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type4ShadingContext.java?rev=1825591&r1=1825590&r2=1825591&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type4ShadingContext.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type4ShadingContext.java Wed Feb 28 17:38:13 2018
@@ -23,6 +23,7 @@ import java.awt.image.ColorModel;
import java.io.EOFException;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import javax.imageio.stream.ImageInputStream;
import javax.imageio.stream.MemoryCacheImageInputStream;
@@ -69,8 +70,17 @@ class Type4ShadingContext extends Gourau
throws IOException
{
COSDictionary dict = freeTriangleShadingType.getCOSObject();
+ if (!(dict instanceof COSStream))
+ {
+ return Collections.emptyList();
+ }
PDRange rangeX = freeTriangleShadingType.getDecodeForParameter(0);
PDRange rangeY = freeTriangleShadingType.getDecodeForParameter(1);
+ if (Float.compare(rangeX.getMin(), rangeX.getMax()) == 0 ||
+ Float.compare(rangeY.getMin(), rangeY.getMax()) == 0)
+ {
+ return Collections.emptyList();
+ }
PDRange[] colRange = new PDRange[numberOfColorComponents];
for (int i = 0; i < numberOfColorComponents; ++i)
{
Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type5ShadingContext.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type5ShadingContext.java?rev=1825591&r1=1825590&r2=1825591&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type5ShadingContext.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type5ShadingContext.java Wed Feb 28 17:38:13 2018
@@ -23,6 +23,7 @@ import java.awt.image.ColorModel;
import java.io.EOFException;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import javax.imageio.stream.ImageInputStream;
import javax.imageio.stream.MemoryCacheImageInputStream;
@@ -66,9 +67,18 @@ class Type5ShadingContext extends Gourau
private List<ShadedTriangle> collectTriangles(PDShadingType5 latticeTriangleShadingType,
AffineTransform xform, Matrix matrix) throws IOException
{
- COSDictionary cosDictionary = latticeTriangleShadingType.getCOSObject();
+ COSDictionary dict = latticeTriangleShadingType.getCOSObject();
+ if (!(dict instanceof COSStream))
+ {
+ return Collections.emptyList();
+ }
PDRange rangeX = latticeTriangleShadingType.getDecodeForParameter(0);
PDRange rangeY = latticeTriangleShadingType.getDecodeForParameter(1);
+ if (Float.compare(rangeX.getMin(), rangeX.getMax()) == 0 ||
+ Float.compare(rangeY.getMin(), rangeY.getMax()) == 0)
+ {
+ return Collections.emptyList();
+ }
int numPerRow = latticeTriangleShadingType.getVerticesPerRow();
PDRange[] colRange = new PDRange[numberOfColorComponents];
for (int i = 0; i < numberOfColorComponents; ++i)
@@ -78,7 +88,7 @@ class Type5ShadingContext extends Gourau
List<Vertex> vlist = new ArrayList<Vertex>();
long maxSrcCoord = (long) Math.pow(2, bitsPerCoordinate) - 1;
long maxSrcColor = (long) Math.pow(2, bitsPerColorComponent) - 1;
- COSStream cosStream = (COSStream) cosDictionary;
+ COSStream cosStream = (COSStream) dict;
ImageInputStream mciis = new MemoryCacheImageInputStream(cosStream.createInputStream());
try