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

Unified Diff: ui/base/cursor/cursor.h

Issue 9463003: aura-x11: Add custom web cursor support. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sort headers. Created 8 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
« no previous file with comments | « ui/aura/root_window_host_win.cc ('k') | ui/base/cursor/cursor_win.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/base/cursor/cursor.h
diff --git a/ui/base/cursor/cursor.h b/ui/base/cursor/cursor.h
new file mode 100644
index 0000000000000000000000000000000000000000..1b61cc19d0446b00ca605dc22d09abc7f351f136
--- /dev/null
+++ b/ui/base/cursor/cursor.h
@@ -0,0 +1,147 @@
+// Copyright (c) 2012 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.
+
+#ifndef UI_BASE_CURSOR_CURSOR_H_
+#define UI_BASE_CURSOR_CURSOR_H_
+#pragma once
+
+#include "build/build_config.h"
+#include "ui/base/ui_export.h"
+
+namespace gfx {
+class Point;
+class Size;
+}
+
+#if defined(OS_WIN)
+typedef struct HINSTANCE__* HINSTANCE;
+typedef struct HICON__* HICON;
+typedef HICON HCURSOR;
+#endif
+
+namespace ui {
+
+#if defined(OS_WIN)
+typedef ::HCURSOR PlatformCursor;
+#elif defined(USE_X11)
+typedef unsigned long PlatformCursor;
+#else
+typedef void* PlatformCursor;
+#endif
+
+// TODO(jamescook): Once we're on C++0x we could change these constants
+// to an enum and forward declare it in native_widget_types.h.
+
+// Equivalent to a NULL HCURSOR on Windows.
+const int kCursorNull = 0;
+
+// These cursors mirror WebKit cursors from WebCursorInfo, but are replicated
+// here so we don't introduce a WebKit dependency.
+const int kCursorPointer = 1;
+const int kCursorCross = 2;
+const int kCursorHand = 3;
+const int kCursorIBeam = 4;
+const int kCursorWait = 5;
+const int kCursorHelp = 6;
+const int kCursorEastResize = 7;
+const int kCursorNorthResize = 8;
+const int kCursorNorthEastResize = 9;
+const int kCursorNorthWestResize = 10;
+const int kCursorSouthResize = 11;
+const int kCursorSouthEastResize = 12;
+const int kCursorSouthWestResize = 13;
+const int kCursorWestResize = 14;
+const int kCursorNorthSouthResize = 15;
+const int kCursorEastWestResize = 16;
+const int kCursorNorthEastSouthWestResize = 17;
+const int kCursorNorthWestSouthEastResize = 18;
+const int kCursorColumnResize = 19;
+const int kCursorRowResize = 20;
+const int kCursorMiddlePanning = 21;
+const int kCursorEastPanning = 22;
+const int kCursorNorthPanning = 23;
+const int kCursorNorthEastPanning = 24;
+const int kCursorNorthWestPanning = 25;
+const int kCursorSouthPanning = 26;
+const int kCursorSouthEastPanning = 27;
+const int kCursorSouthWestPanning = 28;
+const int kCursorWestPanning = 29;
+const int kCursorMove = 30;
+const int kCursorVerticalText = 31;
+const int kCursorCell = 32;
+const int kCursorContextMenu = 33;
+const int kCursorAlias = 34;
+const int kCursorProgress = 35;
+const int kCursorNoDrop = 36;
+const int kCursorCopy = 37;
+const int kCursorNone = 38;
+const int kCursorNotAllowed = 39;
+const int kCursorZoomIn = 40;
+const int kCursorZoomOut = 41;
+const int kCursorGrab = 42;
+const int kCursorGrabbing = 43;
+const int kCursorCustom = 44;
+
+// Ref-counted cursor that supports both default and custom cursors.
+class UI_EXPORT Cursor {
+ public:
+ Cursor()
+ : native_type_(0),
+ platform_cursor_(0) {
+ }
+
+ // Implicit constructor.
+ Cursor(int type)
+ : native_type_(type),
+ platform_cursor_(0) {
+ }
+
+ // Allow copy.
+ Cursor(const Cursor& cursor)
+ : native_type_(cursor.native_type_),
+ platform_cursor_(cursor.platform_cursor_) {
+ if (native_type_ == kCursorCustom)
+ RefCustomCursor();
Ben Goodger (Google) 2012/04/03 18:08:18 please do all of this in cursor.cc
sadrul 2012/04/03 19:16:34 Done.
+ }
+
+ ~Cursor() {
+ if (native_type_ == kCursorCustom)
+ UnrefCustomCursor();
+ }
+
+ void SetPlatformCursor(const PlatformCursor& platform) {
+ if (platform_cursor_)
+ UnrefCustomCursor();
+ native_type_ = kCursorCustom;
+ platform_cursor_ = platform;
+ RefCustomCursor();
+ }
+
+ void RefCustomCursor();
+ void UnrefCustomCursor();
+
+ int native_type() const { return native_type_; }
+ PlatformCursor platform() const { return platform_cursor_; }
+
+ bool operator==(int type) const { return native_type_ == type; }
+ bool operator==(const Cursor& cursor) const {
+ return native_type_ == cursor.native_type_ &&
+ platform_cursor_ == cursor.platform_cursor_;
+ }
+ bool operator!=(int type) const { return native_type_ != type; }
+ bool operator!=(const Cursor& cursor) const {
+ return native_type_ != cursor.native_type_ ||
+ platform_cursor_ != cursor.platform_cursor_;
+ }
+
+ private:
+ // See definitions above.
+ int native_type_;
+
+ PlatformCursor platform_cursor_;
+};
+
+} // namespace ui
+
+#endif // UI_BASE_CURSOR_CURSOR_H_
« no previous file with comments | « ui/aura/root_window_host_win.cc ('k') | ui/base/cursor/cursor_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698