diff options
author | hshi@chromium.org <hshi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-12-17 02:12:33 +0000 |
---|---|---|
committer | hshi@chromium.org <hshi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-12-17 02:12:33 +0000 |
commit | cc1cc99c6f009ca3fd8bf3db67058a427ddc497d (patch) | |
tree | ccfe5c2694d4a10cf050755477506a405ed3a563 /ui | |
parent | 0248ee871f61adfebb1a6886e2134dbc6377b046 (diff) | |
download | chromium_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.cc | 23 | ||||
-rw-r--r-- | ui/base/cursor/cursors_aura.h | 8 |
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_ |