From 9a26b0dc5e055f6cfb114ec904a67a9cbee6cfae Mon Sep 17 00:00:00 2001 From: "jam@chromium.org" Date: Thu, 29 Nov 2012 18:57:00 +0000 Subject: Fix PrintWebViewHelperTest.AllowUserOriginatedPrinting on Win Aura. This was triggering the assert in SkColorToCOLORREF because on Aura NativeThemeBase is used and PaintButton uses an alpha value that's not opaque. BUG=154081 Review URL: https://codereview.chromium.org/11411256 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@170228 0039d316-1c4b-4281-b951-d872f2087c98 --- skia/ext/skia_utils_win.cc | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'skia/ext/skia_utils_win.cc') diff --git a/skia/ext/skia_utils_win.cc b/skia/ext/skia_utils_win.cc index 4988a3a..97d793c 100644 --- a/skia/ext/skia_utils_win.cc +++ b/skia/ext/skia_utils_win.cc @@ -54,16 +54,23 @@ SkColor COLORREFToSkColor(COLORREF color) { } COLORREF SkColorToCOLORREF(SkColor color) { - // Currently, Alpha is always 255 or the color is 0 so there is no need to - // demultiply the channels. If this DCHECK() is ever hit, the full - // (SkColorGetX(color) * 255 / a) will have to be added in the conversion. - SkASSERT((0xFF == SkColorGetA(color)) || (0 == color)); + int alpha = SkColorGetA(color); + if (alpha == 0) + return 0; + + if (alpha == 0xFF) { + // Fast path. #ifndef _MSC_VER - return RGB(SkColorGetR(color), SkColorGetG(color), SkColorGetB(color)); + return RGB(SkColorGetR(color), SkColorGetG(color), SkColorGetB(color)); #else - // 0BGR = ((ARGB -> BGRA) >> 8) - return (_byteswap_ulong(color) >> 8); + // 0BGR = ((ARGB -> BGRA) >> 8) + return (_byteswap_ulong(color) >> 8); #endif + } + + return RGB(SkColorGetR(color) * 255 / alpha, + SkColorGetG(color) * 255 / alpha, + SkColorGetB(color) * 255 / alpha); } } // namespace skia -- cgit v1.1