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

Side by Side 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: fix tests and rebase 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "ash/wm/image_cursors.h"
6
7 #include "base/logging.h"
8 #include "ui/base/cursor/cursor_loader.h"
9 #include "ui/base/cursor/cursor.h"
10 #include "ui/gfx/point.h"
11 #include "grit/ui_resources.h"
12
13 namespace {
14
15 const int kAnimatedCursorFrameDelayMs = 25;
16
17 struct HotPoint {
18 int x;
19 int y;
20 };
21
22 struct CursorData {
23 int id;
24 int resource_id;
25 HotPoint hot_1x;
26 HotPoint hot_2x;
27 };
28
29 // The cursor's hot points are defined in chromeos cursor images at:
30 // http://folder/kuscher/projects/Chrome_OS/Pointers/focuspoint
Daniel Erat 2012/09/10 23:16:45 nit: feels weird to put an internal filer path her
mazda 2012/09/11 00:45:09 I heard from Oshima-san that there's a plan to emb
31 const CursorData kImageCursors[] = {
32 {ui::kCursorNull, IDR_AURA_CURSOR_PTR, {4, 4}, {8, 9}},
33 {ui::kCursorPointer, IDR_AURA_CURSOR_PTR, {4, 4}, {8, 9}},
34 {ui::kCursorNoDrop, IDR_AURA_CURSOR_NO_DROP, {4, 4}, {8, 9}},
35 {ui::kCursorNotAllowed, IDR_AURA_CURSOR_NO_DROP, {4, 4}, {8, 9}},
36 {ui::kCursorCopy, IDR_AURA_CURSOR_COPY, {4, 4}, {8, 9}},
37 {ui::kCursorHand, IDR_AURA_CURSOR_HAND, {9, 4}, {19, 8}},
38 {ui::kCursorMove, IDR_AURA_CURSOR_MOVE, {11, 11}, {23, 23}},
39 {ui::kCursorNorthEastResize, IDR_AURA_CURSOR_NORTH_EAST_RESIZE,
40 {12, 11}, {25, 23}},
41 {ui::kCursorSouthWestResize, IDR_AURA_CURSOR_SOUTH_WEST_RESIZE,
42 {12, 11}, {25, 23}},
43 {ui::kCursorSouthEastResize, IDR_AURA_CURSOR_SOUTH_EAST_RESIZE,
44 {11, 11}, {24, 23}},
45 {ui::kCursorNorthWestResize, IDR_AURA_CURSOR_NORTH_WEST_RESIZE,
46 {11, 11}, {24, 23}},
47 {ui::kCursorNorthResize, IDR_AURA_CURSOR_NORTH_RESIZE, {11, 12}, {23, 23}},
48 {ui::kCursorSouthResize, IDR_AURA_CURSOR_SOUTH_RESIZE, {11, 12}, {23, 23}},
49 {ui::kCursorEastResize, IDR_AURA_CURSOR_EAST_RESIZE, {12, 11}, {25, 23}},
50 {ui::kCursorWestResize, IDR_AURA_CURSOR_WEST_RESIZE, {12, 11}, {25, 23}},
51 {ui::kCursorIBeam, IDR_AURA_CURSOR_IBEAM, {12, 12}, {24, 25}},
52 {ui::kCursorAlias, IDR_AURA_CURSOR_ALIAS, {8, 6}, {15, 11}},
53 {ui::kCursorCell, IDR_AURA_CURSOR_CELL, {11, 11}, {24, 23}},
54 {ui::kCursorContextMenu, IDR_AURA_CURSOR_CONTEXT_MENU, {4, 4}, {8, 9}},
55 {ui::kCursorCross, IDR_AURA_CURSOR_CROSSHAIR, {12, 12}, {25, 23}},
56 {ui::kCursorHelp, IDR_AURA_CURSOR_HELP, {4, 4}, {8, 9}},
57 {ui::kCursorVerticalText, IDR_AURA_CURSOR_XTERM_HORIZ, {12, 11}, {26, 23}},
58 {ui::kCursorZoomIn, IDR_AURA_CURSOR_ZOOM_IN, {10, 10}, {20, 20}},
59 {ui::kCursorZoomOut, IDR_AURA_CURSOR_ZOOM_OUT, {10, 10}, {20, 20}},
60 {ui::kCursorRowResize, IDR_AURA_CURSOR_ROW_RESIZE, {11, 12}, {23, 23}},
61 {ui::kCursorColumnResize, IDR_AURA_CURSOR_COL_RESIZE, {12, 11}, {25, 23}},
62 {ui::kCursorEastWestResize, IDR_AURA_CURSOR_EAST_WEST_RESIZE,
63 {12, 11}, {25, 23}},
64 {ui::kCursorNorthSouthResize, IDR_AURA_CURSOR_NORTH_SOUTH_RESIZE,
65 {11, 12}, {23, 23}},
66 {ui::kCursorNorthEastSouthWestResize,
67 IDR_AURA_CURSOR_NORTH_EAST_SOUTH_WEST_RESIZE, {12, 11}, {25, 23}},
68 {ui::kCursorNorthWestSouthEastResize,
69 IDR_AURA_CURSOR_NORTH_WEST_SOUTH_EAST_RESIZE, {11, 11}, {24, 23}},
70 {ui::kCursorGrab, IDR_AURA_CURSOR_GRAB, {8, 5}, {16, 10}},
71 {ui::kCursorGrabbing, IDR_AURA_CURSOR_GRABBING, {9, 9}, {18, 18}},
72 };
73
74 const CursorData kAnimatedCursors[] = {
75 {ui::kCursorWait, IDR_THROBBER, {7, 7}, {14, 14}},
76 {ui::kCursorProgress, IDR_THROBBER, {7, 7}, {14, 14}},
77 };
78
79 } // namespace
80
81 namespace ash {
82
83 ImageCursors::ImageCursors()
84 : cursor_loader_(ui::CursorLoader::Create()) {
85 }
86
87 ImageCursors::~ImageCursors() {
88 }
89
90 float ImageCursors::GetDeviceScaleFactor() const {
91 return cursor_loader_->device_scale_factor();
92 }
93
94 void ImageCursors::SetDeviceScaleFactor(float device_scale_factor) {
95 if (GetDeviceScaleFactor() == device_scale_factor)
96 return;
97
98 cursor_loader_->UnloadAll();
99 cursor_loader_->set_device_scale_factor(device_scale_factor);
100
101 for (size_t i = 0; i < arraysize(kImageCursors); ++i) {
102 const HotPoint& hot = device_scale_factor == 1.0f ?
103 kImageCursors[i].hot_1x : kImageCursors[i].hot_2x;
104 cursor_loader_->LoadImageCursor(kImageCursors[i].id,
105 kImageCursors[i].resource_id,
106 gfx::Point(hot.x, hot.y));
107 }
108 for (size_t i = 0; i < arraysize(kAnimatedCursors); ++i) {
109 const HotPoint& hot = device_scale_factor == 1.0f ?
110 kAnimatedCursors[i].hot_1x : kAnimatedCursors[i].hot_2x;
111 cursor_loader_->LoadAnimatedCursor(kAnimatedCursors[i].id,
112 kAnimatedCursors[i].resource_id,
113 gfx::Point(hot.x, hot.y),
114 kAnimatedCursorFrameDelayMs);
115 }
116 }
117
118 void ImageCursors::SetPlatformCursor(gfx::NativeCursor* cursor) {
119 cursor_loader_->SetPlatformCursor(cursor);
120 }
121
122 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698