[x] I have written a descriptive pull-request title
[x] I have verified that there are no overlapping pull-requests open
[x] I have verified that I am following the existing coding patterns and practice as demonstrated in the repository. These follow strict Stylecop rules :cop:.
[x] I have provided test coverage for my change (where applicable)
Description
Note: I don't expect anyone to thoroughly review every file. It's far too big.
See https://github.com/SixLabors/ImageSharp/discussions/2531 for the original details. I've improved on the original design there by reducing the generic parameters required and removing the requirement for marker interfaces.
Replaces ColorSpaceConverter with ColorProfileConverter. The new generic API brings several advantages.
Simplifies and normalizes usage across single and multiple input APIs.
Makes the API extensible (No more N*) implementations.
Fixes several conversion accuracy issues.
Improves performance, especially around companding.
There's potential here now also for reusing the API to allow for converting between ICC profiles. We can use the information to create dynamically calculated working space inputs.
The new API is faster than the old implementation and alternative libraries.
Prerequisites
Description
Note: I don't expect anyone to thoroughly review every file. It's far too big.
See https://github.com/SixLabors/ImageSharp/discussions/2531 for the original details. I've improved on the original design there by reducing the generic parameters required and removing the requirement for marker interfaces.
Replaces
ColorSpaceConverter
withColorProfileConverter
. The new generic API brings several advantages.There's potential here now also for reusing the API to allow for converting between ICC profiles. We can use the information to create dynamically calculated working space inputs.
The new API is faster than the old implementation and alternative libraries.
CieXyz => CieLab
CieXyz => HunterLab
CieXyz => Lms
Rgb Chromatic Adaption