On Wednesday, 31 August 2016 at 07:58:36 UTC, Andrea Fontana wrote:

I always think the perfect colour library should work using a superset of all colour spaces, for example cie xyz (is it a superset, isn't it?). isColour(T) then IMO should check if x,y,z properties exists (or toXYZ() method).

In this way every algorithm like "blend" or anything else could be implemented just for xyz (and eventually specialized for other colours if we want to avoid conversion overhead). In this way it become easy to do cross-colour operations (for example: apply a rgb mask over another color space) and to implement new or strange color spaces (that automagically will work with all "blend" & co.). To implement a new color spaces you just need to map it to xyz (that should represent all - and more - visible colours: rgb is a subset of visibile colours)

Andrea

I forgot that in this way it's quite easy to wrap external class/struct to make them works with library. If we have a custom COLOR class provided by another library we just need to write a toXYZ(COLOR c) method (if it doesnt provide x,y,z properties) and it works.

Reply via email to