PDDeviceCMYK.java (pdfbox-2.0.23-src) | : | PDDeviceCMYK.java (pdfbox-2.0.24-src) | ||
---|---|---|---|---|
skipping to change at line 169 | skipping to change at line 169 | |||
{ | { | |||
if (usePureJavaCMYKConversion) | if (usePureJavaCMYKConversion) | |||
{ | { | |||
BufferedImage dest = new BufferedImage(raster.getWidth(), raster.get Height(), | BufferedImage dest = new BufferedImage(raster.getWidth(), raster.get Height(), | |||
BufferedImage.TYPE_INT_RGB); | BufferedImage.TYPE_INT_RGB); | |||
ColorSpace destCS = dest.getColorModel().getColorSpace(); | ColorSpace destCS = dest.getColorModel().getColorSpace(); | |||
WritableRaster destRaster = dest.getRaster(); | WritableRaster destRaster = dest.getRaster(); | |||
float[] srcValues = new float[4]; | float[] srcValues = new float[4]; | |||
float[] lastValues = new float[] { -1.0f, -1.0f, -1.0f, -1.0f }; | float[] lastValues = new float[] { -1.0f, -1.0f, -1.0f, -1.0f }; | |||
float[] destValues = new float[3]; | float[] destValues = new float[3]; | |||
int width = raster.getWidth(); | ||||
int startX = raster.getMinX(); | int startX = raster.getMinX(); | |||
int height = raster.getHeight(); | ||||
int startY = raster.getMinY(); | 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); | raster.getPixel(x, y, srcValues); | |||
// check if the last value can be reused | // check if the last value can be reused | |||
if (!Arrays.equals(lastValues, srcValues)) | if (!Arrays.equals(lastValues, srcValues)) | |||
{ | { | |||
for (int k = 0; k < 4; k++) | lastValues[0] = srcValues[0]; | |||
{ | srcValues[0] = srcValues[0] / 255f; | |||
lastValues[k] = srcValues[k]; | ||||
srcValues[k] = srcValues[k] / 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 col or conversion | // use CIEXYZ as intermediate format to optimize the col or conversion | |||
destValues = destCS.fromCIEXYZ(colorSpace.toCIEXYZ(srcVa lues)); | destValues = destCS.fromCIEXYZ(colorSpace.toCIEXYZ(srcVa lues)); | |||
for (int k = 0; k < destValues.length; k++) | for (int k = 0; k < destValues.length; k++) | |||
{ | { | |||
destValues[k] = destValues[k] * 255f; | destValues[k] = destValues[k] * 255f; | |||
} | } | |||
} | } | |||
destRaster.setPixel(x, y, destValues); | destRaster.setPixel(x, y, destValues); | |||
} | } | |||
} | } | |||
End of changes. 5 change blocks. | ||||
9 lines changed or deleted | 16 lines changed or added |