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 2021/05/13 15:18:19 UTC
svn commit: r1889847 - in
/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading:
PDMeshBasedShadingType.java PDShadingType4.java PDShadingType5.java
Author: tilman
Date: Thu May 13 15:18:19 2021
New Revision: 1889847
URL: http://svn.apache.org/viewvc?rev=1889847&view=rev
Log:
PDFBOX-4892: optimize, as suggested by valerybokov
Modified:
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDMeshBasedShadingType.java
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType4.java
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType5.java
Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDMeshBasedShadingType.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDMeshBasedShadingType.java?rev=1889847&r1=1889846&r2=1889847&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDMeshBasedShadingType.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDMeshBasedShadingType.java Thu May 13 15:18:19 2021
@@ -76,7 +76,7 @@ abstract class PDMeshBasedShadingType ex
}
int bitsPerFlag = getBitsPerFlag();
PDRange[] colRange = new PDRange[getNumberOfColorComponents()];
- for (int i = 0; i < getNumberOfColorComponents(); ++i)
+ for (int i = 0; i < colRange.length; ++i)
{
colRange[i] = getDecodeForParameter(2 + i);
if (colRange[i] == null)
@@ -93,7 +93,7 @@ abstract class PDMeshBasedShadingType ex
try
{
Point2D[] implicitEdge = new Point2D[4];
- float[][] implicitCornerColor = new float[2][getNumberOfColorComponents()];
+ float[][] implicitCornerColor = new float[2][colRange.length];
byte flag = 0;
try
@@ -103,6 +103,7 @@ abstract class PDMeshBasedShadingType ex
catch (EOFException ex)
{
LOG.error(ex);
+ return list;
}
boolean eof = false;
@@ -177,7 +178,8 @@ abstract class PDMeshBasedShadingType ex
PDRange rangeY, PDRange[] colRange, Matrix matrix, AffineTransform xform,
int controlPoints) throws IOException
{
- float[][] color = new float[4][getNumberOfColorComponents()];
+ int numberOfColorComponents = getNumberOfColorComponents();
+ float[][] color = new float[4][numberOfColorComponents];
Point2D[] points = new Point2D[controlPoints];
int pStart = 4;
int cStart = 2;
@@ -193,7 +195,7 @@ abstract class PDMeshBasedShadingType ex
points[2] = implicitEdge[2];
points[3] = implicitEdge[3];
- for (int i = 0; i < getNumberOfColorComponents(); i++)
+ for (int i = 0; i < numberOfColorComponents; i++)
{
color[0][i] = implicitCornerColor[0][i];
color[1][i] = implicitCornerColor[1][i];
@@ -214,7 +216,7 @@ abstract class PDMeshBasedShadingType ex
}
for (int i = cStart; i < 4; i++)
{
- for (int j = 0; j < getNumberOfColorComponents(); j++)
+ for (int j = 0; j < numberOfColorComponents; j++)
{
long c = input.readBits(getBitsPerComponent());
color[i][j] = interpolate(c, maxSrcColor, colRange[j].getMin(),
Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType4.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType4.java?rev=1889847&r1=1889846&r2=1889847&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType4.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType4.java Thu May 13 15:18:19 2021
@@ -105,7 +105,7 @@ public class PDShadingType4 extends PDTr
return Collections.emptyList();
}
PDRange[] colRange = new PDRange[getNumberOfColorComponents()];
- for (int i = 0; i < getNumberOfColorComponents(); ++i)
+ for (int i = 0; i < colRange.length; ++i)
{
colRange[i] = getDecodeForParameter(2 + i);
}
Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType5.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType5.java?rev=1889847&r1=1889846&r2=1889847&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType5.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType5.java Thu May 13 15:18:19 2021
@@ -100,7 +100,7 @@ public class PDShadingType5 extends PDTr
}
int numPerRow = getVerticesPerRow();
PDRange[] colRange = new PDRange[getNumberOfColorComponents()];
- for (int i = 0; i < getNumberOfColorComponents(); ++i)
+ for (int i = 0; i < colRange.length; ++i)
{
colRange[i] = getDecodeForParameter(2 + i);
}
@@ -147,31 +147,29 @@ public class PDShadingType5 extends PDTr
}
}
+ Point2D[] ps = new Point2D[3]; // array will be shallow-cloned in ShadedTriangle constructor
+ float[][] cs = new float[3][];
for (int i = 0; i < rowNum - 1; i++)
{
for (int j = 0; j < numPerRow - 1; j++)
{
- Point2D[] ps = new Point2D[] {
- latticeArray[i][j].point,
- latticeArray[i][j + 1].point,
- latticeArray[i + 1][j].point };
-
- float[][] cs = new float[][] {
- latticeArray[i][j].color,
- latticeArray[i][j + 1].color,
- latticeArray[i + 1][j].color };
+ ps[0] = latticeArray[i][j].point;
+ ps[1] = latticeArray[i][j + 1].point;
+ ps[2] = latticeArray[i + 1][j].point;
+
+ cs[0] = latticeArray[i][j].color;
+ cs[1] = latticeArray[i][j + 1].color;
+ cs[2] = latticeArray[i + 1][j].color;
list.add(new ShadedTriangle(ps, cs));
- ps = new Point2D[] {
- latticeArray[i][j + 1].point,
- latticeArray[i + 1][j].point,
- latticeArray[i + 1][j + 1].point };
-
- cs = new float[][]{
- latticeArray[i][j + 1].color,
- latticeArray[i + 1][j].color,
- latticeArray[i + 1][j + 1].color };
+ ps[0] = latticeArray[i][j + 1].point;
+ ps[1] = latticeArray[i + 1][j].point;
+ ps[2] = latticeArray[i + 1][j + 1].point;
+
+ cs[0] = latticeArray[i][j + 1].color;
+ cs[1] = latticeArray[i + 1][j].color;
+ cs[2] = latticeArray[i + 1][j + 1].color;
list.add(new ShadedTriangle(ps, cs));
}