On Thu, 4 Jan 2024 05:10:55 GMT, Sergey Bylokhov <s...@openjdk.org> wrote:
>> @aivanov-jdk Thank you for clarifying, I thought he mean to modify >> `toCIEXYZ` and `fromCIEXYZ`. Yes if we modify `toRGB `and `fromRGB` then it >> will not pass through fixed area, So we may need to skip this. > > The difference between srcColorSpace.fromCIEXYZ and dtsColorSpace.fromCIEXYZ > can trigger an exception if both have different number of components, for > example srcColorSpace = CS_GRAY and srcColorSpace.CS_sRGB > =>ArrayIndexOutOfBoundsException will be triggered. > > > private static TestColorSpace createCS(boolean isSrc) { > ColorSpace cs = ColorSpace.getInstance( > isSrc ? ColorSpace.CS_GRAY : ColorSpace.CS_sRGB); > return new TestColorSpace(cs); > } > > public static void main(String[] args) { > BufferedImage src = createTestImage(true); > BufferedImage dest = createTestImage(false); > > ColorSpace mid = ColorSpace.getInstance(ColorSpace.CS_sRGB); > ColorConvertOp test = new ColorConvertOp(mid, null); > test.filter(src, dest); > } > > Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 1 > out of bounds for length 1 > at > java.desktop/java.awt.image.ColorConvertOp.nonICCBIFilter(ColorConvertOp.java:821) > at > java.desktop/java.awt.image.ColorConvertOp.filter(ColorConvertOp.java:275) > at NonICCFilterTest.main(NonICCFilterTest.java:97) and instead of comparing that the images are just different, it is probably better to compare results of conversion via TestColorSpace wrapper vs ColorSpace w/o wrapper. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/16895#discussion_r1441305407