changing KGraphicsUtils?
Matthew Woehlke
mw_triad at users.sourceforge.net
Thu May 31 03:47:13 BST 2007
Michael Pyne wrote:
> On Wednesday 30 May 2007, Matthew Woehlke wrote:
>> Also, about the name... I don't like it. :-)
>> (And IIRC there was exactly
>> zero discussion about it.)
>
> Usually no discussion means that there is no disagreement (unless you mean
> there was no discussion before it was committed, I've been too busy to read
> every thread message :( )
I disagreed from the start, I just didn't say anything about the name
specifically because I did (and still do) not agree with /anything/ in
Zack's proposal.
>> Since I expect this namespace to ultimately
>> hold a good chunk of the usability stuff, what about KColorUtils
>> instead, since we are working with colors and not* images?
>
> We are not working with images yet, but since the end result for most of this
> work appears to be usability-related, I don't think it's too far-fetched that
> the namespace may expand to include other types of things related to graphics
> that don't limit themselves precisely to colors. I think it's best to leave
> it as KGraphicsUtils (or similar) because otherwise we artifically limit the
> namespace to dealing with colors only, and who knows what we may have in
> there by KDE 4.4.
Given what I expect to be in there, I think I would prefer creating a
second namespace if we get to that point :-). But that's me.
I'm rather shooting blind here, but I expect to have at least:
darken
lighten
{dark,light}Contrast (possibly two flavors of each)
shade
fromHsl
luma
contrast
...and possibly:
variation
(...and naming it KColorUtils allows keeping calls shorter. Like I said
if we do non-color things I don't see a problem adding another namespace
:-).)
Also I can't think of anything needed by the current usability request
that isn't either color-related, or wouldn't belong in KGraphicsUtils
either.
But it's hard to say, really. How many methods do we want in a namespace?
>> -void TestBlendColors::test() {
>> +void tst_KColorUtils::testOverlay()
>> +{
>> QColor color1(10, 10, 100);
>> QColor color2(10, 10, 160);
>> - QColor blended = KGraphicsUtils::blendColor(color1, color2);
>> + QColor blended = KColorUtils::overlayColors(color1, color2);
>> QCOMPARE(blended, color2); // no transparacny.
>
> transparancy should be transparency. Best to fix it now while the code is
> still being actively worked.
Zack/Thomas will have to take this one, I didn't look closely at what
the test is doing.
>> + if (bias <= 0.0) return c1;
>> + if (bias >= 1.0) return c2;
>> + if (!(bias < 1.0)) return c1; // bias == NaN
>
> I realize you've got it documented but is there no better (more obvious) way
> to test if a floating number is NaN? I believe your method is correct (and
> clever) but it took me at least 30 seconds to prove that to myself. :)
There is isnan() but I want to say it's less portable than simply
testing that comparisons are always false :-).
> Speaking of NaN, in the API documentation for the function you could probably
> mention that NaN results in returning c1 (or better yet, an undefined color)
> since you're testing for it anyways.
I would have thought that was obvious :-) ...but I can doc it (note: I
don't have access to my code handy ATM, so I'll have to do it tomorrow.)
> Also you use the register keyword in mix(). I'm no compiler guru but I'm
> pretty sure that the keyword isn't useful as gcc should automatically leave
> the result in a register for QColor::fromRgbF() if there's a register
> available. The keyword doesn't hurt things of course, it just seems
> extraneous.
Right. You can look at it as self-documenting, or I'm fine removing it.
--
Mathew
(sorry, .sig file is on the other computer)
More information about the kde-core-devel
mailing list