| Index: app/gfx/color_utils.cc
|
| ===================================================================
|
| --- app/gfx/color_utils.cc (revision 25341)
|
| +++ app/gfx/color_utils.cc (working copy)
|
| @@ -250,10 +250,49 @@
|
| }
|
| }
|
|
|
| -SkColor SetColorAlpha(SkColor c, SkAlpha alpha) {
|
| - return SkColorSetARGB(alpha, SkColorGetR(c), SkColorGetG(c), SkColorGetB(c));
|
| +SkColor AlphaBlend(SkColor foreground, SkColor background, SkAlpha alpha) {
|
| + if (alpha == 0)
|
| + return background;
|
| + else if (alpha == 0xFF)
|
| + return foreground;
|
| +
|
| + return SkColorSetRGB(
|
| + ((SkColorGetR(foreground) * alpha) +
|
| + (SkColorGetR(background) * (0xFF - alpha))) / 0xFF,
|
| + ((SkColorGetG(foreground) * alpha) +
|
| + (SkColorGetG(background) * (0xFF - alpha))) / 0xFF,
|
| + ((SkColorGetB(foreground) * alpha) +
|
| + (SkColorGetB(background) * (0xFF - alpha))) / 0xFF);
|
| }
|
|
|
| +// Next three functions' formulas from:
|
| +// http://www.w3.org/TR/WCAG20/#relativeluminancedef
|
| +// http://www.w3.org/TR/WCAG20/#contrast-ratiodef
|
| +static double ConvertSRGB(double eight_bit_component) {
|
| + const double component = eight_bit_component / 255.0;
|
| + return (component <= 0.03928) ?
|
| + (component / 12.92) : pow((component + 0.055) / 1.055, 2.4);
|
| +}
|
| +
|
| +static double RelativeLuminance(SkColor color) {
|
| + return (0.2126 * ConvertSRGB(SkColorGetR(color))) +
|
| + (0.7152 * ConvertSRGB(SkColorGetG(color))) +
|
| + (0.0722 * ConvertSRGB(SkColorGetB(color)));
|
| +}
|
| +
|
| +static double ContrastRatio(SkColor color1, SkColor color2) {
|
| + const double l1 = RelativeLuminance(color1) + 0.05;
|
| + const double l2 = RelativeLuminance(color2) + 0.05;
|
| + return (l1 > l2) ? (l1 / l2) : (l2 / l1);
|
| +}
|
| +
|
| +SkColor PickMoreReadableColor(SkColor foreground1,
|
| + SkColor foreground2,
|
| + SkColor background) {
|
| + return (ContrastRatio(foreground1, background) >=
|
| + ContrastRatio(foreground2, background)) ? foreground1 : foreground2;
|
| +}
|
| +
|
| SkColor GetSysSkColor(int which) {
|
| #if defined(OS_WIN)
|
| return skia::COLORREFToSkColor(::GetSysColor(which));
|
|
|
| Property changes on: app\gfx\color_utils.cc
|
| ___________________________________________________________________
|
| Added: svn:mergeinfo
|
| Merged /trunk/src/app/gfx/color_utils.cc:r25340
|
| Merged /branches/chrome_webkit_merge_branch/app/gfx/color_utils.cc:r69-2775
|
|
|
|
|