The [next PR](https://github.com/openjdk/jdk/pull/23044) introduces several new 
methods to the ICC_Profile class:
-  getProfileClass(byte[])
-  getColorSpaceType(byte[])
-  getPCSType(byte[])
-  checkRenderingIntent(byte[])

These new methods extract data directly from the provided byte array rather 
than relying on the profile instance. The first three methods essentially 
duplicate the existing ones (getProfileClass(), getColorSpaceType(), 
getPCSType()).

It is possible to update implementation:
- The existing methods getColorSpaceType() and getPCSType() could delegate to 
the new getColorSpaceType(byte[]) and getPCSType(byte[]) methods.
- The checkRenderingIntent(byte[]) method could be updated to report the actual 
invalid intent value when an error occurs

Tests:
 - Old ValidateICCHeaderData test is update to verify the new output of the 
checkRenderingIntent
 - New RenderingIntentStressTest test is added to check the next part of the 
icc_spec:

          * ICC spec: only the least-significant 16 bits encode the rendering
          * intent. The most significant 16 bits must be zero and can be 
ignored.
          * See https://www.color.org/ICC1v42_2006-05.pdf, section 7.2.15.



@honkar-jdk please take a look.

Note: There is currently an inconsistency in the usage of `getData(icSigHead)` 
vs `getData(cmmProfile(), icSigHead)` throughout the codebase. I plan to 
address this separately.

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

Commit messages:
 - Create RenderingIntentStressTest.java
 - Update getColorSpaceType and getPCSType
 - Update checkRenderingIntent

Changes: https://git.openjdk.org/jdk/pull/25519/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=25519&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8358057
  Stats: 141 lines in 3 files changed: 112 ins; 12 del; 17 mod
  Patch: https://git.openjdk.org/jdk/pull/25519.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/25519/head:pull/25519

PR: https://git.openjdk.org/jdk/pull/25519

Reply via email to