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 2023/05/01 07:06:47 UTC

svn commit: r1909526 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics: color/PDDeviceN.java color/PDICCBased.java color/PDSeparation.java image/PNGConverter.java

Author: tilman
Date: Mon May  1 07:06:47 2023
New Revision: 1909526

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

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceN.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDICCBased.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDSeparation.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PNGConverter.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceN.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceN.java?rev=1909526&r1=1909525&r2=1909526&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceN.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceN.java Mon May  1 07:06:47 2023
@@ -223,12 +223,13 @@ public class PDDeviceN extends PDSpecial
                 componentColorSpace = spotColorSpaces[c];
             }
 
+            int numberOfComponents = componentColorSpace.getNumberOfComponents();
             // copy single-component to its own raster in the component color space
             WritableRaster componentRaster = Raster.createBandedRaster(DataBuffer.TYPE_BYTE,
-                width, height, componentColorSpace.getNumberOfComponents(), new Point(0, 0));
+                width, height, numberOfComponents, new Point(0, 0));
 
             int[] samples = new int[numColorants];
-            int[] componentSamples = new int[componentColorSpace.getNumberOfComponents()];
+            int[] componentSamples = new int[numberOfComponents];
             boolean isProcessColorant = colorantToComponent[c] >= 0;
             int componentIndex = colorantToComponent[c];
             for (int y = 0; y < height; y++)

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDICCBased.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDICCBased.java?rev=1909526&r1=1909525&r2=1909526&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDICCBased.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDICCBased.java Mon May  1 07:06:47 2023
@@ -216,7 +216,8 @@ public final class PDICCBased extends PD
                 }
 
                 // set initial colour
-                float[] initial = new float[getNumberOfComponents()];
+                int numOfComponents = getNumberOfComponents();
+                float[] initial = new float[numOfComponents];
                 for (int c = 0; c < initial.length; c++)
                 {
                     initial[c] = Math.max(0, getRangeForComponent(c).getMin());
@@ -230,7 +231,7 @@ public final class PDICCBased extends PD
                 /// also triggers a ProfileDataException for PDFBOX-3549 with KCMS
                 // also triggers "CMMException: LCMS error 13" for PDFBOX-5563 with LCMS, but
                 // calling "new ComponentColorModel" doesn't
-                awtColorSpace.toRGB(new float[getNumberOfComponents()]);
+                awtColorSpace.toRGB(new float[numOfComponents]);
                 if (!IS_KCMS)
                 {
                     // PDFBOX-4015: this one triggers "CMMException: LCMS error 13" with LCMS

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDSeparation.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDSeparation.java?rev=1909526&r1=1909525&r2=1909526&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDSeparation.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDSeparation.java Mon May  1 07:06:47 2023
@@ -149,7 +149,9 @@ public class PDSeparation extends PDSpec
             // PDFBOX-3622 - regular converter fails for Lab colorspaces
             return toRGBImage2(raster);
         }
-        
+
+        int numAltComponents = alternateColorSpace.getNumberOfComponents();
+
         // use the tint transform to convert the sample into
         // the alternate color space (this is usually 1:many)
         WritableRaster altRaster = Raster.createBandedRaster(DataBuffer.TYPE_BYTE,
@@ -157,7 +159,6 @@ public class PDSeparation extends PDSpec
                 alternateColorSpace.getNumberOfComponents(),
                 new Point(0, 0));
 
-        int numAltComponents = alternateColorSpace.getNumberOfComponents();
         int width = raster.getWidth();
         int height = raster.getHeight();
         float[] samples = new float[1];

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PNGConverter.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PNGConverter.java?rev=1909526&r1=1909525&r2=1909526&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PNGConverter.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PNGConverter.java Mon May  1 07:06:47 2023
@@ -409,10 +409,11 @@ final class PNGConverter
     private static COSStream createCOSStreamwithIccProfile
         (PDDocument document, PDColorSpace colorSpace, PNGConverterState state) throws IOException
     {
+        int numberOfComponents = colorSpace.getNumberOfComponents();
         COSStream cosStream = document.getDocument().createCOSStream();
-        cosStream.setInt(COSName.N, colorSpace.getNumberOfComponents());
-        cosStream.setItem(COSName.ALTERNATE, colorSpace.getNumberOfComponents()
-                == 1 ? COSName.DEVICEGRAY : COSName.DEVICERGB);
+        cosStream.setInt(COSName.N, numberOfComponents);
+        cosStream.setItem(COSName.ALTERNATE, 
+                numberOfComponents == 1 ? COSName.DEVICEGRAY : COSName.DEVICERGB);
         cosStream.setItem(COSName.FILTER, COSName.FLATE_DECODE);
         if (state.iCCP != null)
         {