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:25 UTC

svn commit: r1889848 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading: PDMeshBasedShadingType.java PDShadingType4.java PDShadingType5.java

Author: tilman
Date: Thu May 13 15:18:24 2021
New Revision: 1889848

URL: http://svn.apache.org/viewvc?rev=1889848&view=rev
Log:
PDFBOX-4892: optimize, as suggested by valerybokov

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDMeshBasedShadingType.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

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDMeshBasedShadingType.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDMeshBasedShadingType.java?rev=1889848&r1=1889847&r2=1889848&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDMeshBasedShadingType.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDMeshBasedShadingType.java Thu May 13 15:18:24 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
                 cosStream.createInputStream()))
         {
             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;
@@ -173,7 +174,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;
@@ -189,7 +191,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];
@@ -210,7 +212,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/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=1889848&r1=1889847&r2=1889848&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 Thu May 13 15:18:24 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/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=1889848&r1=1889847&r2=1889848&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 Thu May 13 15:18:24 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);
         }
@@ -142,31 +142,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));
             }