blend function urgently needed in kdelibs
Matthew Woehlke
mw_triad at users.sourceforge.net
Tue May 22 15:49:26 BST 2007
Thiago Macieira wrote:
> Matthew Woehlke wrote:
>> kdelibs desperately needs a color blending function. I am working on it,
>> planning to have it go in Monday, May 28.
>>
>> blend() is reasonably complicated, but the colorspace conversion
>> functions are some of the biggest hitters in terms of code volume. I
>> already have rgb<->hsl (and I think rgb<->hsv, but those are common), I
>> need rgb<->hsy yet but hsy is very similar to hsv. Anyway, since some
>> commented it would be nice to see some actual code, I'm attaching what I
>> have so far...
>
> Comments:
> 1) You're mixing the enums. ColorSpec is declared in a flag-like manner,
> but it has no Q_DECLARE_FLAGS; BlendMode or BlendFlags (choose one) is
> declared in a non-flag mode but has Q_DECLARE_FLAGS. You want to review
> that.
Thanks, but that's actually intentional, it should not be used as flags
except by KColorPrivate (although Matt Nowell is doing his darndest to
talk me out of that :-)). I guess making it 'not flags-like' would mean
'making the values 1, 2, 3, ...'? (I want to confirm because I may end
up going that way...)
> 2) Please remove the protected function and the static inlines. They have
> no business being in a public header file.
Then where /do/ protected functions belong? (What if someone wanted to
subclass KColor?)
I suspected someone would complain about the static inlines, the thing
is I would like them to be available... are they OK non-inline? (It's
not like they're going to change, though...)
> 3) Constructors must be explicit or explicitly implicit. (i.e., add the
> krazy mark if it's to be implicit)
I must admit I'm not entirely familiar with what the difference is, how
do I know which should be which? Is there a doc somewhere?
> 4) If you want implicit sharing, use QSharedDataPointer.
See conversation with Matt Nowell, this is still in the air.
--
Matthew
"Nobody expects the traditional Bourne shell!"
More information about the kde-core-devel
mailing list