On Thursday, 1 January 2015 at 15:46:07 UTC, Manu via
Digitalmars-d wrote:
On 2 January 2015 at 01:09, ponce via Digitalmars-d
<[email protected]> wrote:
On Thursday, 1 January 2015 at 06:38:41 UTC, Manu via
Digitalmars-d wrote:
I've been working on a pretty comprehensive module for
dealing with
colours in various formats and colour spaces and conversions
between
all of these.
It seems like a hot area for duplicated effort, since
anything that
deals with multimedia will need this, and I haven't seen a
really
comprehensive implementation.
There is such an effort in
https://github.com/CyberShadow/ae/blob/master/utils/graphics/color.d
Could give some ideas for a more general solution.
Haha, it's surprisingly similar to what I already have! Except
my
colour also has a colour space which is properly accounted when
doing
casts or assignments.
Yes, this one is pretty much untyped.
There is a lot of complications because images can be stored
interleaved,
with various pitch, also in video there exist cases where the
several planes
have different dimension (2x or 4x smaller) and this would be
nice to
account, albeit not an absolute necessity.
That's why I don't want to deal with images to start with ;)
I think we can get a colour in there. Images will lead to
massive debate.
Agreed.
The number of color space is also astounding, and then do we
store it as a
template parameter or a runtime object?
I feel like the colour space should be attached to the colour.
Why would you make it a separate object?
If the color space is a runtime object (eg from parsing a CC
profile) then I would be wary of any additional memory it could
use, hence necessity to pass it separately. For a single color
value alone, not a problem.
If it is a template parameter, no such problem exist, it would be
attached as template argument to Color. But then, you can't parse
CC profiles!
Headache ensue.
It's like we need a compile-time parameter that would be a
runtime one sometimes, like in many D designs. Maybe there is an
escape hatch with a template being some sort of std.variant of
color-spaces.
I think image work in phobos needs to be taken in steps, and
should
probably start with the simplest and most useful shared
primitives
first.
Colour would offer massive bang-for-buck in terms of getting
different
3rd party modules talking to eachother.
Be our cook :)