summaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authorhshi@chromium.org <hshi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-12-17 02:12:33 +0000
committerhshi@chromium.org <hshi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-12-17 02:12:33 +0000
commitcc1cc99c6f009ca3fd8bf3db67058a427ddc497d (patch)
treeccfe5c2694d4a10cf050755477506a405ed3a563 /ui
parent0248ee871f61adfebb1a6886e2134dbc6377b046 (diff)
downloadchromium_src-cc1cc99c6f009ca3fd8bf3db67058a427ddc497d.zip
chromium_src-cc1cc99c6f009ca3fd8bf3db67058a427ddc497d.tar.gz
chromium_src-cc1cc99c6f009ca3fd8bf3db67058a427ddc497d.tar.bz2
Support mouse cursor in DesktopCaptureDeviceAura.
Perform an in-place alpha blending of an ARGB cursor bitmap on a YUV420 video frame. BUG=326000 R=oshima@chromium.org, sergeyu@chromium.org TBR=ben@chromium.org TEST=mouse cursor rendered correctly (position, shape and scale) during destkop sharing on Chrome OS. Review URL: https://codereview.chromium.org/108193015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@241106 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui')
-rw-r--r--ui/base/cursor/cursors_aura.cc23
-rw-r--r--ui/base/cursor/cursors_aura.h8
2 files changed, 31 insertions, 0 deletions
diff --git a/ui/base/cursor/cursors_aura.cc b/ui/base/cursor/cursors_aura.cc
index 64944d6..54546f4 100644
--- a/ui/base/cursor/cursors_aura.cc
+++ b/ui/base/cursor/cursors_aura.cc
@@ -5,7 +5,9 @@
#include "ui/base/cursor/cursors_aura.h"
#include "grit/ui_resources.h"
+#include "third_party/skia/include/core/SkBitmap.h"
#include "ui/base/resource/resource_bundle.h"
+#include "ui/gfx/image/image_skia.h"
#include "ui/gfx/point.h"
namespace ui {
@@ -219,4 +221,25 @@ bool GetAnimatedCursorDataFor(CursorSetType cursor_set_id,
id, scale_factor, resource_id, point);
}
+bool GetCursorBitmap(const Cursor& cursor,
+ SkBitmap* bitmap,
+ gfx::Point* point) {
+ DCHECK(bitmap && point);
+ int resource_id;
+ if (!GetCursorDataFor(ui::CURSOR_SET_NORMAL,
+ cursor.native_type(),
+ cursor.device_scale_factor(),
+ &resource_id,
+ point)) {
+ return false;
+ }
+
+ const SkBitmap* cursor_bitmap = ResourceBundle::GetSharedInstance().
+ GetImageSkiaNamed(resource_id)->bitmap();
+ if (!cursor_bitmap)
+ return false;
+ *bitmap = *cursor_bitmap;
+ return true;
+}
+
} // namespace ui
diff --git a/ui/base/cursor/cursors_aura.h b/ui/base/cursor/cursors_aura.h
index e916c28..7d098a1 100644
--- a/ui/base/cursor/cursors_aura.h
+++ b/ui/base/cursor/cursors_aura.h
@@ -8,6 +8,8 @@
#include "ui/base/cursor/cursor.h"
#include "ui/base/ui_export.h"
+class SkBitmap;
+
namespace gfx {
class Point;
}
@@ -33,6 +35,12 @@ bool UI_EXPORT GetAnimatedCursorDataFor(CursorSetType cursor_set_id,
int* resource_id,
gfx::Point* point);
+// Returns the cursor bitmap for |cursor|. Returns false if |cursor| is invalid.
+// The cursor hot point location is set in |point|.
+bool UI_EXPORT GetCursorBitmap(const Cursor& cursor,
+ SkBitmap* bitmap,
+ gfx::Point* point);
+
} // namespace ui
#endif // UI_BASE_CURSOR_CURSORS_AURA_H_