On Sun, 26 Jan 2025 21:48:22 GMT, Harshitha Onkar <hon...@openjdk.org> wrote:

>> src/java.desktop/share/classes/java/awt/color/ICC_Profile.java line 1155:
>> 
>>> 1153:             throw new IllegalArgumentException("Invalid header data");
>>> 1154:         }
>>> 1155:         getProfileClass(data);
>> 
>> Can any of these fields have custom values (not covered by java constants 
>> inside iccCStoJCS) ​​that can still be used for color transformation?
>
> Using custom values of color space to create a new color transform (For 
> instance: cmsSigMCH1Data: 0x4D434831 which is specified in LCMS API but not 
> in ICC Spec) results in  ProfileDataException as below. (this is expected 
> since cmsSigMCH1Data constant is NOT present in JDK).
> 
> 
> java.awt.color.ProfileDataException: invalid ICC color space
>       at 
> java.desktop/java.awt.color.ICC_Profile.getNumComponents(ICC_Profile.java:1217)
>       at 
> java.desktop/sun.java2d.cmm.lcms.LCMSTransform.<init>(LCMSTransform.java:85)
>       at java.desktop/sun.java2d.cmm.lcms.LCMS.createTransform(LCMS.java:132)
>       at 
> java.desktop/java.awt.color.ICC_ColorSpace.toRGB(ICC_ColorSpace.java:212)
> 
> 
> To summarize:
> - Profile/Device class -  constants match  (in ICC Spec doc and LCMS API doc)
> - Color Space - constants differ
> - Rendering Intent - constants differ
> - PCS - constants differ. This is dependent on type of device class and takes 
> color space values.

> No, we definitely don't need to add any custom values ​​to the Java API, the 
> question is whether we need to reject them or not, since the ICC 
> specification allows it(?).

Is this question applicable only for Rendering Intent or other fields too?

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/23044#discussion_r1930905654

Reply via email to