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:53 UTC
svn commit: r1909527 - in /pdfbox/branches/2.0/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:53 2023
New Revision: 1909527
URL: http://svn.apache.org/viewvc?rev=1909527&view=rev
Log:
PDFBOX-4892: optimize, as suggested by valerybokov
Modified:
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceN.java
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDICCBased.java
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDSeparation.java
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PNGConverter.java
Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceN.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceN.java?rev=1909527&r1=1909526&r2=1909527&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceN.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceN.java Mon May 1 07:06:53 2023
@@ -221,12 +221,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/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDICCBased.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDICCBased.java?rev=1909527&r1=1909526&r2=1909527&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDICCBased.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDICCBased.java Mon May 1 07:06:53 2023
@@ -233,7 +233,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());
@@ -247,7 +248,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/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDSeparation.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDSeparation.java?rev=1909527&r1=1909526&r2=1909527&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDSeparation.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDSeparation.java Mon May 1 07:06:53 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/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PNGConverter.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PNGConverter.java?rev=1909527&r1=1909526&r2=1909527&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PNGConverter.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PNGConverter.java Mon May 1 07:06:53 2023
@@ -419,10 +419,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)
{