Chromium Code Reviews| Index: ui/gfx/icon_util.cc |
| diff --git a/ui/gfx/icon_util.cc b/ui/gfx/icon_util.cc |
| index f9758d39f67626b02bf8a1f470ff8338452ed793..11a292256fe8e906b7e53b7b68f43b11a1d7e5e4 100644 |
| --- a/ui/gfx/icon_util.cc |
| +++ b/ui/gfx/icon_util.cc |
| @@ -163,14 +163,15 @@ const int IconUtil::kIconDimensions[] = { |
| const size_t IconUtil::kNumIconDimensions = arraysize(kIconDimensions); |
| const size_t IconUtil::kNumIconDimensionsUpToMediumSize = 9; |
| -HICON IconUtil::CreateHICONFromSkBitmap(const SkBitmap& bitmap) { |
| +base::win::ScopedHICON IconUtil::CreateHICONFromSkBitmap( |
| + const SkBitmap& bitmap) { |
| // Only 32 bit ARGB bitmaps are supported. We also try to perform as many |
| // validations as we can on the bitmap. |
| SkAutoLockPixels bitmap_lock(bitmap); |
| if ((bitmap.colorType() != kN32_SkColorType) || |
| (bitmap.width() <= 0) || (bitmap.height() <= 0) || |
| (bitmap.getPixels() == NULL)) |
| - return NULL; |
| + return base::win::ScopedHICON(); |
| // We start by creating a DIB which we'll use later on in order to create |
| // the HICON. We use BITMAPV5HEADER since the bitmap we are about to convert |
| @@ -188,7 +189,7 @@ HICON IconUtil::CreateHICONFromSkBitmap(const SkBitmap& bitmap) { |
| DIB_RGB_COLORS, &bits, NULL, 0); |
| } |
| if (!dib || !bits) |
| - return NULL; |
| + return base::win::ScopedHICON(); |
| memcpy(bits, bitmap.getPixels(), bitmap.width() * bitmap.height() * 4); |
| @@ -227,10 +228,10 @@ HICON IconUtil::CreateHICONFromSkBitmap(const SkBitmap& bitmap) { |
| icon_info.yHotspot = 0; |
| icon_info.hbmMask = mono_bitmap; |
| icon_info.hbmColor = dib; |
| - HICON icon = ::CreateIconIndirect(&icon_info); |
| + base::win::ScopedHICON icon(CreateIconIndirect(&icon_info)); |
| ::DeleteObject(dib); |
| ::DeleteObject(mono_bitmap); |
| - return icon; |
| + return icon.Pass(); |
| } |
| SkBitmap* IconUtil::CreateSkBitmapFromHICON(HICON icon, const gfx::Size& s) { |
| @@ -252,12 +253,11 @@ scoped_ptr<SkBitmap> IconUtil::CreateSkBitmapFromIconResource(HMODULE module, |
| // For everything except the Vista+ 256x256 icons, use |LoadImage()|. |
| if (size != kLargeIconSize) { |
| - HICON icon_handle = |
| + base::win::ScopedHICON icon( |
| static_cast<HICON>(LoadImage(module, MAKEINTRESOURCE(resource_id), |
| IMAGE_ICON, size, size, |
| - LR_DEFAULTCOLOR | LR_DEFAULTSIZE)); |
| - scoped_ptr<SkBitmap> bitmap(IconUtil::CreateSkBitmapFromHICON(icon_handle)); |
| - DestroyIcon(icon_handle); |
| + LR_DEFAULTCOLOR | LR_DEFAULTSIZE))); |
| + scoped_ptr<SkBitmap> bitmap(IconUtil::CreateSkBitmapFromHICON(icon.get())); |
|
grt (UTC plus 2)
2015/11/10 16:44:43
return make_scoped_ptr(CreateSkBitmapFromHICON(ico
|
| return bitmap.Pass(); |
| } |
| @@ -319,10 +319,10 @@ SkBitmap* IconUtil::CreateSkBitmapFromHICON(HICON icon) { |
| return new SkBitmap(CreateSkBitmapFromHICONHelper(icon, icon_size)); |
| } |
| -HICON IconUtil::CreateCursorFromDIB(const gfx::Size& icon_size, |
| - const gfx::Point& hotspot, |
| - const void* dib_bits, |
| - size_t dib_size) { |
| +base::win::ScopedHICON IconUtil::CreateCursorFromDIB(const gfx::Size& icon_size, |
| + const gfx::Point& hotspot, |
| + const void* dib_bits, |
| + size_t dib_size) { |
| BITMAPINFO icon_bitmap_info = {}; |
| gfx::CreateBitmapHeader( |
| icon_size.width(), |
| @@ -340,7 +340,7 @@ HICON IconUtil::CreateCursorFromDIB(const gfx::Size& icon_size, |
| 0)); |
| if (dib_size > 0) { |
| SetDIBits(0, |
| - bitmap_handle, |
| + bitmap_handle.get(), |
| 0, |
| icon_size.height(), |
| dib_bits, |
| @@ -349,7 +349,7 @@ HICON IconUtil::CreateCursorFromDIB(const gfx::Size& icon_size, |
| } |
| HBITMAP old_bitmap = reinterpret_cast<HBITMAP>( |
| - SelectObject(working_dc.Get(), bitmap_handle)); |
| + SelectObject(working_dc.Get(), bitmap_handle.get())); |
| SetBkMode(working_dc.Get(), TRANSPARENT); |
| SelectObject(working_dc.Get(), old_bitmap); |
| @@ -363,10 +363,10 @@ HICON IconUtil::CreateCursorFromDIB(const gfx::Size& icon_size, |
| ii.fIcon = FALSE; |
| ii.xHotspot = hotspot.x(); |
| ii.yHotspot = hotspot.y(); |
| - ii.hbmMask = mask; |
| - ii.hbmColor = bitmap_handle; |
| + ii.hbmMask = mask.get(); |
| + ii.hbmColor = bitmap_handle.get(); |
| - return CreateIconIndirect(&ii); |
| + return base::win::ScopedHICON(CreateIconIndirect(&ii)).Pass(); |
|
grt (UTC plus 2)
2015/11/10 16:44:43
can you remove .Pass() here?
|
| } |
| SkBitmap IconUtil::CreateSkBitmapFromHICONHelper(HICON icon, |