Index: views/drag_utils_win.cc |
=================================================================== |
--- views/drag_utils_win.cc (revision 52299) |
+++ views/drag_utils_win.cc (working copy) |
@@ -13,7 +13,6 @@ |
#include "gfx/canvas_skia.h" |
#include "gfx/gdi_util.h" |
#include "third_party/skia/include/core/SkBitmap.h" |
-#include "third_party/skia/include/core/SkUnPreMultiply.h" |
namespace drag_utils { |
@@ -62,33 +61,9 @@ |
const gfx::Point& cursor_offset, |
OSExchangeData* data_object) { |
gfx::CanvasSkia canvas(sk_bitmap.width(), sk_bitmap.height(), |
- /*is_opaque=*/true); |
- SkBitmap opaque_bitmap; |
- if (sk_bitmap.isOpaque()) { |
- opaque_bitmap = sk_bitmap; |
- } else { |
- // InitializeFromBitmap() doesn't expect an alpha channel and is confused |
- // by premultiplied colors, so unpremultiply the bitmap. |
- SkBitmap tmp_bitmap; |
- tmp_bitmap.setConfig( |
- sk_bitmap.config(), sk_bitmap.width(), sk_bitmap.height()); |
- tmp_bitmap.allocPixels(); |
+ /*is_opaque=*/false); |
+ canvas.DrawBitmapInt(sk_bitmap, 0, 0); |
- SkAutoLockPixels lock(tmp_bitmap); |
- const int kBytesPerPixel = 4; |
- for (int y = 0; y < tmp_bitmap.height(); y++) { |
- for (int x = 0; x < tmp_bitmap.width(); x++) { |
- uint32 src_pixel = *sk_bitmap.getAddr32(x, y); |
- uint32* dst_pixel = tmp_bitmap.getAddr32(x, y); |
- SkColor unmultiplied = SkUnPreMultiply::PMColorToColor(src_pixel); |
- *dst_pixel = unmultiplied; |
- } |
- } |
- tmp_bitmap.setIsOpaque(true); |
- opaque_bitmap = tmp_bitmap; |
- } |
- canvas.DrawBitmapInt(opaque_bitmap, 0, 0); |
- |
DCHECK(data_object && !size.IsEmpty()); |
// SetDragImageOnDataObject(HBITMAP) takes ownership of the bitmap. |
HBITMAP bitmap = CreateBitmapFromCanvas(canvas, size.width(), size.height()); |