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/04/05 08:30:01 UTC

svn commit: r1888372 - /pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceCMYK.java

Author: tilman
Date: Mon Apr  5 08:30:01 2021
New Revision: 1888372

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

Modified:
    pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceCMYK.java

Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceCMYK.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceCMYK.java?rev=1888372&r1=1888371&r2=1888372&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceCMYK.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceCMYK.java Mon Apr  5 08:30:01 2021
@@ -166,23 +166,30 @@ public class PDDeviceCMYK extends PDDevi
             float[] srcValues = new float[4];
             float[] lastValues = new float[] { -1.0f, -1.0f, -1.0f, -1.0f };
             float[] destValues = new float[3];
-            int width = raster.getWidth();
             int startX = raster.getMinX();
-            int height = raster.getHeight();
             int startY = raster.getMinY();
-            for (int x = startX; x < width + startX; x++)
+            int endX = raster.getWidth() + startX;
+            int endY = raster.getHeight() + startY;
+            for (int x = startX; x < endX; x++)
             {
-                for (int y = startY; y < height + startY; y++)
+                for (int y = startY; y < endY; y++)
                 {
                     raster.getPixel(x, y, srcValues);
                     // check if the last value can be reused
                     if (!Arrays.equals(lastValues, srcValues))
                     {
-                        for (int k = 0; k < 4; k++)
-                        {
-                            lastValues[k] = srcValues[k];
-                            srcValues[k] = srcValues[k] / 255f;
-                        }
+                        lastValues[0] = srcValues[0];
+                        srcValues[0] = srcValues[0] / 255f;
+
+                        lastValues[1] = srcValues[1];
+                        srcValues[1] = srcValues[1] / 255f;
+
+                        lastValues[2] = srcValues[2];
+                        srcValues[2] = srcValues[2] / 255f;
+
+                        lastValues[3] = srcValues[3];
+                        srcValues[3] = srcValues[3] / 255f;
+
                         // use CIEXYZ as intermediate format to optimize the color conversion
                         destValues = destCS.fromCIEXYZ(colorSpace.toCIEXYZ(srcValues));
                         for (int k = 0; k < destValues.length; k++)