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

Unified Diff: ash/wm/image_cursors.cc

Issue 10919135: Move ash specific cursor code to CursorManager. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Move HideHostCursor to x11_util.{cc,h} Created 8 years, 3 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 | « ash/wm/image_cursors.h ('k') | ash/wm/toplevel_window_event_filter.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/wm/image_cursors.cc
diff --git a/ash/wm/image_cursors.cc b/ash/wm/image_cursors.cc
new file mode 100644
index 0000000000000000000000000000000000000000..c55ca9fb0a1834dd76cbe1544632cead9f5e2a00
--- /dev/null
+++ b/ash/wm/image_cursors.cc
@@ -0,0 +1,106 @@
+// 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.
+
+#include "ash/wm/image_cursors.h"
+
+#include "base/logging.h"
+#include "ui/base/cursor/cursor_loader.h"
+#include "ui/base/cursor/cursor.h"
+#include "grit/ui_resources.h"
+
+namespace {
+
+const int kAnimatedCursorFrameDelayMs = 25;
+
+struct CursorData {
+ int id;
+ int resource_id;
+ int hot_x;
+ int hot_y;
+};
+
+// The cursor's hot points are defined in chromeos cursor images at:
+// http://folder/kuscher/projects/Chrome_OS/Pointers/focuspoint
+const CursorData kImageCursors[] = {
+ {ui::kCursorNull, IDR_AURA_CURSOR_PTR, 8, 3},
oshima 2012/09/07 19:52:02 hot points differs between scale factors. See root
mazda 2012/09/07 22:38:14 Ugh, root_window_host_linux.cc was updated while I
+ {ui::kCursorPointer, IDR_AURA_CURSOR_PTR, 8, 3},
+ {ui::kCursorNoDrop, IDR_AURA_CURSOR_NO_DROP, 3, 1},
+ {ui::kCursorNotAllowed, IDR_AURA_CURSOR_NO_DROP, 3, 1},
+ {ui::kCursorCopy, IDR_AURA_CURSOR_COPY, 3, 1},
+ {ui::kCursorHand, IDR_AURA_CURSOR_HAND, 9, 3},
+ {ui::kCursorMove, IDR_AURA_CURSOR_MOVE, 11, 11},
+ {ui::kCursorNorthEastResize, IDR_AURA_CURSOR_NORTH_EAST_RESIZE, 12, 11},
+ {ui::kCursorSouthWestResize, IDR_AURA_CURSOR_SOUTH_WEST_RESIZE, 12, 11},
+ {ui::kCursorSouthEastResize, IDR_AURA_CURSOR_SOUTH_EAST_RESIZE, 11, 11},
+ {ui::kCursorNorthWestResize, IDR_AURA_CURSOR_NORTH_WEST_RESIZE, 11, 11},
+ {ui::kCursorNorthResize, IDR_AURA_CURSOR_NORTH_RESIZE, 11, 10},
+ {ui::kCursorSouthResize, IDR_AURA_CURSOR_SOUTH_RESIZE, 11, 11},
+ {ui::kCursorEastResize, IDR_AURA_CURSOR_EAST_RESIZE, 11, 11},
+ {ui::kCursorWestResize, IDR_AURA_CURSOR_WEST_RESIZE, 11, 11},
+ {ui::kCursorIBeam, IDR_AURA_CURSOR_IBEAM, 12, 12},
+ {ui::kCursorAlias, IDR_AURA_CURSOR_ALIAS, 8, 5},
+ {ui::kCursorCell, IDR_AURA_CURSOR_CELL, 12, 11},
+ {ui::kCursorContextMenu, IDR_AURA_CURSOR_CONTEXT_MENU, 3, 1},
+ {ui::kCursorCross, IDR_AURA_CURSOR_CROSSHAIR, 12, 11},
+ {ui::kCursorHelp, IDR_AURA_CURSOR_HELP, 3, 1},
+ {ui::kCursorVerticalText, IDR_AURA_CURSOR_XTERM_HORIZ, 12, 12},
+ {ui::kCursorZoomIn, IDR_AURA_CURSOR_ZOOM_IN, 12, 12},
+ {ui::kCursorZoomOut, IDR_AURA_CURSOR_ZOOM_OUT, 11, 11},
+ {ui::kCursorRowResize, IDR_AURA_CURSOR_ROW_RESIZE, 11, 11},
+ {ui::kCursorColumnResize, IDR_AURA_CURSOR_COL_RESIZE, 11, 11},
+ {ui::kCursorEastWestResize, IDR_AURA_CURSOR_EAST_WEST_RESIZE, 11, 11},
+ {ui::kCursorNorthSouthResize, IDR_AURA_CURSOR_NORTH_SOUTH_RESIZE, 11, 11},
+ {ui::kCursorNorthEastSouthWestResize,
+ IDR_AURA_CURSOR_NORTH_EAST_SOUTH_WEST_RESIZE, 12, 11},
+ {ui::kCursorNorthWestSouthEastResize,
+ IDR_AURA_CURSOR_NORTH_WEST_SOUTH_EAST_RESIZE, 11, 11},
+};
+
+const CursorData kAnimatedCursors[] = {
+ {ui::kCursorWait, IDR_THROBBER, 7, 7},
+ {ui::kCursorProgress, IDR_THROBBER, 7, 7},
+};
+
+} // namespace
+
+namespace ash {
+
+ImageCursors::ImageCursors()
+ : cursor_loader_(ui::CursorLoader::Create()) {
+}
+
+ImageCursors::~ImageCursors() {
+}
+
+float ImageCursors::GetDeviceScaleFactor() const {
+ return cursor_loader_->device_scale_factor();
+}
+
+void ImageCursors::SetDeviceScaleFactor(float device_scale_factor) {
+ if (GetDeviceScaleFactor() == device_scale_factor)
+ return;
+
+ cursor_loader_->UnloadAll();
+ cursor_loader_->set_device_scale_factor(device_scale_factor);
+
+ for (size_t i = 0; i < arraysize(kImageCursors); ++i) {
+ cursor_loader_->LoadImageCursor(kImageCursors[i].id,
+ kImageCursors[i].resource_id,
+ kImageCursors[i].hot_x,
+ kImageCursors[i].hot_y);
+ }
+ for (size_t i = 0; i < arraysize(kAnimatedCursors); ++i) {
+ cursor_loader_->LoadAnimatedCursor(kAnimatedCursors[i].id,
+ kAnimatedCursors[i].resource_id,
+ kAnimatedCursors[i].hot_x,
+ kAnimatedCursors[i].hot_y,
+ kAnimatedCursorFrameDelayMs);
+ }
+}
+
+void ImageCursors::SetPlatformCursor(gfx::NativeCursor* cursor) {
+ cursor_loader_->SetPlatformCursor(cursor);
+}
+
+} // namespace ash
« no previous file with comments | « ash/wm/image_cursors.h ('k') | ash/wm/toplevel_window_event_filter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698