edward taffel wrote:
it seems that cmm code for performing transformations must be very similar across most implementations;
CMM != Profile creator.
perhaps, all deriving from some common ancestor [seminal icc code?]: type & quality of profiles is what should make the difference [no?].
No such example code has existed, until quite late in the ICC story. While the ICC profile defines how profiles are to be interpreted, it does not define how things such as device measurements are to be converted to profiles, nor how gamut mapping are to be implemented etc. And this is a good thing, as this allows different approaches for different situations, and progress to be made in the quality of profiles, etc. Even in the execution of basic profile conversions, there is subtle room for differences. Is the implementation fixed point or floating point ? Is higher accuracy carried through each step of a transformation, or is it truncated at each step ? etc. Even CMM's sometimes have some unexpected quirks - BPC for instance, or slope limits applied to power curves, etc. Graeme Gill.