Hi Mark,

I am answering all your questions in same mail:

The reason to normalize to 0..1.0 range each stage is because
ICC profiles are built to work in in encoded mode. Take for
example a 16 bits profile. Each stage in LutAtoB goes from 0
to 0xffff, and stages know nothing about colorspaces. It would
be very complex for the CMM o understand all the tricks profile
creator has used and decode to a different range depending on
the space. So, in order to allow unbounded mode, 16 bits are
converted to floating point by using a factor of 1/65535.
With that I keep the profile behavior, increase the precision,
make 8/16/float conversions easier and allow unbounded mode.


> for introspection of pipeline stages it is somewhat unfortunate that 
> the Lab V2<->V4 conversion stages can be tone curve or matrix based 
> but share the same stage signature.

Yes, they share the same signature because they do the same thing!
This stage converts from V2 to V4 (or viceversa) and can be
implemented by using matrices or curves. Two different implementations
because for writing v2 profiles sometimes a matrix cannot be used.


> I'd be great if the stage signatures would be different to give a 
> hint at what stage data/type is actually used.
> Maybe an even better solution would be to introduce a stage data type 
> signature field to stages.

They are. This field exists. You can access it by cmsStageType(),
What they share is the field "implements", which is used by the
optimizer.


And regarding the signature, yes, you are right, definition is
swapped but that's just a cosmetic issue, since the important thing
is to get different enumerated numbers. I will fix it anyway.

Regards
Marti


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

_______________________________________________
Lcms-user mailing list
Lcms-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lcms-user

Reply via email to