OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ui/base/dragdrop/drag_utils.h" | 5 #include "ui/base/dragdrop/drag_utils.h" |
6 | 6 |
7 #include <gtk/gtk.h> | 7 #include <gtk/gtk.h> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "ui/base/dragdrop/os_exchange_data.h" | 10 #include "ui/base/dragdrop/os_exchange_data.h" |
11 #include "ui/base/dragdrop/os_exchange_data_provider_gtk.h" | 11 #include "ui/base/dragdrop/os_exchange_data_provider_gtk.h" |
12 #include "ui/gfx/canvas.h" | 12 #include "ui/gfx/canvas.h" |
13 #include "ui/gfx/gtk_util.h" | 13 #include "ui/gfx/gtk_util.h" |
14 #include "ui/gfx/image/image_skia.h" | 14 #include "ui/gfx/image/image_skia.h" |
15 #include "ui/gfx/point.h" | 15 #include "ui/gfx/point.h" |
16 #include "ui/gfx/size.h" | 16 #include "ui/gfx/size.h" |
17 | 17 |
18 namespace drag_utils { | 18 namespace drag_utils { |
19 | 19 |
20 void SetDragImageOnDataObject(const gfx::ImageSkia& image_skia, | 20 void SetDragImageOnDataObject(const gfx::ImageSkia& image_skia, |
21 const gfx::Size& size, | 21 const gfx::Size& size, |
22 const gfx::Point& cursor_offset, | 22 const gfx::Vector2d& cursor_offset, |
23 ui::OSExchangeData* data_object) { | 23 ui::OSExchangeData* data_object) { |
24 ui::OSExchangeDataProviderGtk& provider( | 24 ui::OSExchangeDataProviderGtk& provider( |
25 static_cast<ui::OSExchangeDataProviderGtk&>(data_object->provider())); | 25 static_cast<ui::OSExchangeDataProviderGtk&>(data_object->provider())); |
26 | 26 |
27 // Convert the image into a GdkPixbuf. | 27 // Convert the image into a GdkPixbuf. |
28 GdkPixbuf* canvas_pixbuf = gfx::GdkPixbufFromSkBitmap(image_skia.bitmap()); | 28 GdkPixbuf* canvas_pixbuf = gfx::GdkPixbufFromSkBitmap(image_skia.bitmap()); |
29 | 29 |
30 // Make a new pixbuf of the requested size and copy it over. | 30 // Make a new pixbuf of the requested size and copy it over. |
31 GdkPixbuf* pixbuf = gdk_pixbuf_new( | 31 GdkPixbuf* pixbuf = gdk_pixbuf_new( |
32 gdk_pixbuf_get_colorspace(canvas_pixbuf), | 32 gdk_pixbuf_get_colorspace(canvas_pixbuf), |
33 gdk_pixbuf_get_has_alpha(canvas_pixbuf), | 33 gdk_pixbuf_get_has_alpha(canvas_pixbuf), |
34 gdk_pixbuf_get_bits_per_sample(canvas_pixbuf), | 34 gdk_pixbuf_get_bits_per_sample(canvas_pixbuf), |
35 size.width(), | 35 size.width(), |
36 size.height()); | 36 size.height()); |
37 gdk_pixbuf_copy_area(canvas_pixbuf, 0, 0, size.width(), size.height(), pixbuf, | 37 gdk_pixbuf_copy_area(canvas_pixbuf, 0, 0, size.width(), size.height(), pixbuf, |
38 0, 0); | 38 0, 0); |
39 g_object_unref(canvas_pixbuf); | 39 g_object_unref(canvas_pixbuf); |
40 | 40 |
41 // Set the drag data on to the provider. | 41 // Set the drag data on to the provider. |
42 provider.SetDragImage(pixbuf, cursor_offset); | 42 provider.SetDragImage(pixbuf, cursor_offset); |
43 g_object_unref(pixbuf); | 43 g_object_unref(pixbuf); |
44 } | 44 } |
45 | 45 |
46 } // namespace drag_utils | 46 } // namespace drag_utils |
OLD | NEW |