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++)