Summary: | Simplify Color::light() and Color::dark() | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | mitz | ||||||
Component: | Layout and Rendering | Assignee: | Nobody <webkit-unassigned> | ||||||
Status: | RESOLVED FIXED | ||||||||
Severity: | Trivial | ||||||||
Priority: | P3 | ||||||||
Version: | 523.x (Safari 3) | ||||||||
Hardware: | Mac | ||||||||
OS: | OS X 10.4 | ||||||||
Attachments: |
|
Description
mitz
2007-05-23 07:10:16 PDT
Created attachment 14683 [details]
Simpler implementation
Created attachment 14684 [details]
Simpler implementation
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.
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. Comment on attachment 14684 [details]
Simpler implementation
r=me
|