Enforce ICC D50 PCS illuminant when converting colours between profiles #2987
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Prerequisites
Description
Following on from InternationalColorConsortium/iccDEV#164, colour conversion between ICC profiles can be made more performant by ignoring the PCS illuminant in the header and using the ICC's definition of D50 - avoiding unnecessary chromatic adaptations.
The ICC reference implementation (now called iccDEV, not iccMAX) does not use a profile's PCS illuminant header field during colour conversion, it always uses XYZ
(0.9642, 1.0, 0.8249)
. Some related extracts from the v4 spec:Only in the latest proposed spec for v5+ does it suggest that non-D50 illuminants are supported, though the values should correspond to a new
spectralViewingConditions
tag.So this PR aims to match the behaviour of the reference implementation:
(0.9642, 1.0, 0.8249)
as the reference white of profiles, which is different than the existing ASTM D50(0.96422, 1, 0.82521)
❗