WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
Bug 13842
Simplify Color::light() and Color::dark()
https://bugs.webkit.org/show_bug.cgi?id=13842
Summary
Simplify Color::light() and Color::dark()
mitz
Reported
2007-05-23 07:10:16 PDT
The RGB->HSV->RGB conversion Color::light() and Color::dark() do is an overkill. I don't think those functions are hot but what they do can be described and implemented in simpler terms.
Attachments
Simpler implementation
(4.28 KB, patch)
2007-05-23 07:11 PDT
,
mitz
no flags
Details
Formatted Diff
Diff
Simpler implementation
(4.40 KB, patch)
2007-05-23 07:40 PDT
,
mitz
darin
: review+
Details
Formatted Diff
Diff
Show Obsolete
(1)
View All
Add attachment
proposed patch, testcase, etc.
mitz
Comment 1
2007-05-23 07:11:25 PDT
Created
attachment 14683
[details]
Simpler implementation
mitz
Comment 2
2007-05-23 07:40:01 PDT
Created
attachment 14684
[details]
Simpler implementation
Darin Adler
Comment 3
2007-05-23 07:57:12 PDT
Comment on
attachment 14684
[details]
Simpler implementation Does this really give the same values as before? If so, seems fine. But I was under the impression that scaling value didn't affect the 3 channels equally. I don't think dark() properly handles the case where all three of r, g, and b are zero. So review- because of that. Otherwise, would be r=me.
mitz
Comment 4
2007-05-23 09:09:22 PDT
Comment on
attachment 14684
[details]
Simpler implementation (In reply to
comment #3
)
> (From update of
attachment 14684
[details]
[edit]) > Does this really give the same values as before? If so, seems fine. But I was > under the impression that scaling value didn't affect the 3 channels equally.
If you look at convertHSVToRGB() you'll see that its result can be expressed as "v times some vector x whose components do not depend on v", so indeed for given h and s components, scaling v affects the 3 channels equally. (IIRC in the HSL space, L doesn't affect all channels equally, since L=1.0 maps to white).
> I don't think dark() properly handles the case where all three of r, g, and b > are zero.
I verified that in that case (v - 0.33f) / v is -inf and therefore the multiplier is 0, so the result is <0,0,0,alpha>, which is what I would expect.
Darin Adler
Comment 5
2007-05-23 09:12:22 PDT
Comment on
attachment 14684
[details]
Simpler implementation r=me
Mark Rowe (bdash)
Comment 6
2007-05-26 07:00:59 PDT
Landed in
r21798
.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug