Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Unified Diff: ppapi/example/example.cc

Issue 6720001: PPB_CursorControl_Dev.SetCursor: Add support for custom cursor. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix warning on Mac. Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ppapi/example/example.cc
diff --git a/ppapi/example/example.cc b/ppapi/example/example.cc
index 5529391d8d8854f1aff5e69e46dbeebc6751f08b..f9ae799ba298aa2e2dd95f8043ea11a17523511e 100644
--- a/ppapi/example/example.cc
+++ b/ppapi/example/example.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -12,6 +12,7 @@
#include <algorithm>
#include "ppapi/c/dev/ppb_console_dev.h"
+#include "ppapi/c/dev/ppb_cursor_control_dev.h"
#include "ppapi/c/dev/ppp_printing_dev.h"
#include "ppapi/c/pp_errors.h"
#include "ppapi/c/pp_input_event.h"
@@ -163,7 +164,8 @@ class MyInstance : public pp::Instance, public MyFetcherClient {
width_(0),
height_(0),
animation_counter_(0),
- print_settings_valid_(false) {}
+ print_settings_valid_(false),
+ showing_custom_cursor_(false) {}
virtual ~MyInstance() {
if (fetcher_) {
@@ -194,6 +196,7 @@ class MyInstance : public pp::Instance, public MyFetcherClient {
switch (event.type) {
case PP_INPUTEVENT_TYPE_MOUSEDOWN:
SayHello();
+ ToggleCursor();
return true;
case PP_INPUTEVENT_TYPE_MOUSEMOVE:
return true;
@@ -395,6 +398,30 @@ class MyInstance : public pp::Instance, public MyFetcherClient {
fetcher_ = NULL;
}
+ void ToggleCursor() {
+ const PPB_CursorControl_Dev* cursor_control =
+ reinterpret_cast<const PPB_CursorControl_Dev*>(
+ pp::Module::Get()->GetBrowserInterface(
+ PPB_CURSOR_CONTROL_DEV_INTERFACE));
+ if (!cursor_control)
+ return;
+
+ if (showing_custom_cursor_) {
+ cursor_control->SetCursor(pp_instance(), PP_CURSORTYPE_POINTER, 0, NULL);
+ } else {
+ pp::ImageData image_data(this, pp::ImageData::GetNativeImageDataFormat(),
+ pp::Size(50, 50), false);
+ FillRect(&image_data, 0, 0, 50, 50,
+ image_data.format() == PP_IMAGEDATAFORMAT_BGRA_PREMUL ?
+ 0x80800000 : 0x80000080);
+ pp::Point hot_spot(0, 0);
+ cursor_control->SetCursor(pp_instance(), PP_CURSORTYPE_CUSTOM,
+ image_data.pp_resource(), &hot_spot.pp_point());
+ }
+
+ showing_custom_cursor_ = !showing_custom_cursor_;
+ }
+
pp::Var console_;
pp::Graphics2D device_context_;
@@ -409,6 +436,8 @@ class MyInstance : public pp::Instance, public MyFetcherClient {
int animation_counter_;
bool print_settings_valid_;
PP_PrintSettings_Dev print_settings_;
+
+ bool showing_custom_cursor_;
};
void FlushCallback(void* data, int32_t result) {
« no previous file with comments | « no previous file | webkit/plugins/ppapi/ppapi_plugin_instance.h » ('j') | webkit/plugins/ppapi/ppapi_plugin_instance.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698