OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ui/base/cursor/cursors_aura.h" | 5 #include "ui/base/cursor/cursors_aura.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include "base/macros.h" | 9 #include "base/macros.h" |
10 #include "third_party/skia/include/core/SkBitmap.h" | 10 #include "third_party/skia/include/core/SkBitmap.h" |
11 #include "ui/base/resource/resource_bundle.h" | 11 #include "ui/base/resource/resource_bundle.h" |
12 #include "ui/gfx/geometry/point.h" | 12 #include "ui/gfx/geometry/point.h" |
13 #include "ui/gfx/image/image_skia.h" | 13 #include "ui/gfx/image/image_skia.h" |
14 #include "ui/resources/grit/ui_resources.h" | 14 #include "ui/resources/grit/ui_resources.h" |
15 | 15 |
16 #if defined(OS_WIN) | 16 #if defined(OS_WIN) |
17 #include "ui/base/cursor/cursor_loader_win.h" | 17 #include "ui/base/cursor/cursor_loader_win.h" |
18 #include "ui/gfx/icon_util.h" | 18 #include "ui/gfx/icon_util.h" |
19 #endif | 19 #endif |
20 | 20 |
21 namespace ui { | 21 namespace ui { |
22 namespace { | 22 namespace { |
23 | 23 |
24 struct HotPoint { | 24 struct HotPoint { |
25 int x; | 25 int x; |
26 int y; | 26 int y; |
27 }; | 27 }; |
28 | 28 |
29 struct CursorData { | 29 struct CursorData { |
30 int id; | 30 CursorType id; |
31 int resource_id; | 31 int resource_id; |
32 HotPoint hot_1x; | 32 HotPoint hot_1x; |
33 HotPoint hot_2x; | 33 HotPoint hot_2x; |
34 }; | 34 }; |
35 | 35 |
36 struct CursorSet { | 36 struct CursorSet { |
37 const CursorSetType id; | 37 const CursorSetType id; |
38 const CursorData* cursors; | 38 const CursorData* cursors; |
39 const int length; | 39 const int length; |
40 const CursorData* animated_cursors; | 40 const CursorData* animated_cursors; |
41 const int animated_length; | 41 const int animated_length; |
42 }; | 42 }; |
43 | 43 |
44 const CursorData kNormalCursors[] = { | 44 const CursorData kNormalCursors[] = { |
45 {ui::kCursorNull, IDR_AURA_CURSOR_PTR, {4, 4}, {7, 7}}, | 45 {CursorType::kNull, IDR_AURA_CURSOR_PTR, {4, 4}, {7, 7}}, |
46 {ui::kCursorPointer, IDR_AURA_CURSOR_PTR, {4, 4}, {7, 7}}, | 46 {CursorType::kPointer, IDR_AURA_CURSOR_PTR, {4, 4}, {7, 7}}, |
47 {ui::kCursorNoDrop, IDR_AURA_CURSOR_NO_DROP, {9, 9}, {18, 18}}, | 47 {CursorType::kNoDrop, IDR_AURA_CURSOR_NO_DROP, {9, 9}, {18, 18}}, |
48 {ui::kCursorNotAllowed, IDR_AURA_CURSOR_NO_DROP, {9, 9}, {18, 18}}, | 48 {CursorType::kNotAllowed, IDR_AURA_CURSOR_NO_DROP, {9, 9}, {18, 18}}, |
49 {ui::kCursorCopy, IDR_AURA_CURSOR_COPY, {9, 9}, {18, 18}}, | 49 {CursorType::kCopy, IDR_AURA_CURSOR_COPY, {9, 9}, {18, 18}}, |
50 {ui::kCursorHand, IDR_AURA_CURSOR_HAND, {9, 4}, {19, 8}}, | 50 {CursorType::kHand, IDR_AURA_CURSOR_HAND, {9, 4}, {19, 8}}, |
51 {ui::kCursorMove, IDR_AURA_CURSOR_MOVE, {11, 11}, {23, 23}}, | 51 {CursorType::kMove, IDR_AURA_CURSOR_MOVE, {11, 11}, {23, 23}}, |
52 {ui::kCursorNorthEastResize, IDR_AURA_CURSOR_NORTH_EAST_RESIZE, | 52 {CursorType::kNorthEastResize, |
53 {12, 11}, {25, 23}}, | 53 IDR_AURA_CURSOR_NORTH_EAST_RESIZE, |
54 {ui::kCursorSouthWestResize, IDR_AURA_CURSOR_SOUTH_WEST_RESIZE, | 54 {12, 11}, |
55 {12, 11}, {25, 23}}, | 55 {25, 23}}, |
56 {ui::kCursorSouthEastResize, IDR_AURA_CURSOR_SOUTH_EAST_RESIZE, | 56 {CursorType::kSouthWestResize, |
57 {11, 11}, {24, 23}}, | 57 IDR_AURA_CURSOR_SOUTH_WEST_RESIZE, |
58 {ui::kCursorNorthWestResize, IDR_AURA_CURSOR_NORTH_WEST_RESIZE, | 58 {12, 11}, |
59 {11, 11}, {24, 23}}, | 59 {25, 23}}, |
60 {ui::kCursorNorthResize, IDR_AURA_CURSOR_NORTH_RESIZE, {11, 12}, {23, 23}}, | 60 {CursorType::kSouthEastResize, |
61 {ui::kCursorSouthResize, IDR_AURA_CURSOR_SOUTH_RESIZE, {11, 12}, {23, 23}}, | 61 IDR_AURA_CURSOR_SOUTH_EAST_RESIZE, |
62 {ui::kCursorEastResize, IDR_AURA_CURSOR_EAST_RESIZE, {12, 11}, {25, 23}}, | 62 {11, 11}, |
63 {ui::kCursorWestResize, IDR_AURA_CURSOR_WEST_RESIZE, {12, 11}, {25, 23}}, | 63 {24, 23}}, |
64 {ui::kCursorIBeam, IDR_AURA_CURSOR_IBEAM, {12, 12}, {24, 25}}, | 64 {CursorType::kNorthWestResize, |
65 {ui::kCursorAlias, IDR_AURA_CURSOR_ALIAS, {8, 6}, {15, 11}}, | 65 IDR_AURA_CURSOR_NORTH_WEST_RESIZE, |
66 {ui::kCursorCell, IDR_AURA_CURSOR_CELL, {11, 11}, {24, 23}}, | 66 {11, 11}, |
67 {ui::kCursorContextMenu, IDR_AURA_CURSOR_CONTEXT_MENU, {4, 4}, {8, 9}}, | 67 {24, 23}}, |
68 {ui::kCursorCross, IDR_AURA_CURSOR_CROSSHAIR, {12, 12}, {25, 23}}, | 68 {CursorType::kNorthResize, |
69 {ui::kCursorHelp, IDR_AURA_CURSOR_HELP, {4, 4}, {8, 9}}, | 69 IDR_AURA_CURSOR_NORTH_RESIZE, |
70 {ui::kCursorVerticalText, IDR_AURA_CURSOR_XTERM_HORIZ, {12, 11}, {26, 23}}, | 70 {11, 12}, |
71 {ui::kCursorZoomIn, IDR_AURA_CURSOR_ZOOM_IN, {10, 10}, {20, 20}}, | 71 {23, 23}}, |
72 {ui::kCursorZoomOut, IDR_AURA_CURSOR_ZOOM_OUT, {10, 10}, {20, 20}}, | 72 {CursorType::kSouthResize, |
73 {ui::kCursorRowResize, IDR_AURA_CURSOR_ROW_RESIZE, {11, 12}, {23, 23}}, | 73 IDR_AURA_CURSOR_SOUTH_RESIZE, |
74 {ui::kCursorColumnResize, IDR_AURA_CURSOR_COL_RESIZE, {12, 11}, {25, 23}}, | 74 {11, 12}, |
75 {ui::kCursorEastWestResize, IDR_AURA_CURSOR_EAST_WEST_RESIZE, | 75 {23, 23}}, |
76 {12, 11}, {25, 23}}, | 76 {CursorType::kEastResize, IDR_AURA_CURSOR_EAST_RESIZE, {12, 11}, {25, 23}}, |
77 {ui::kCursorNorthSouthResize, IDR_AURA_CURSOR_NORTH_SOUTH_RESIZE, | 77 {CursorType::kWestResize, IDR_AURA_CURSOR_WEST_RESIZE, {12, 11}, {25, 23}}, |
78 {11, 12}, {23, 23}}, | 78 {CursorType::kIBeam, IDR_AURA_CURSOR_IBEAM, {12, 12}, {24, 25}}, |
79 {ui::kCursorNorthEastSouthWestResize, | 79 {CursorType::kAlias, IDR_AURA_CURSOR_ALIAS, {8, 6}, {15, 11}}, |
80 IDR_AURA_CURSOR_NORTH_EAST_SOUTH_WEST_RESIZE, {12, 11}, {25, 23}}, | 80 {CursorType::kCell, IDR_AURA_CURSOR_CELL, {11, 11}, {24, 23}}, |
81 {ui::kCursorNorthWestSouthEastResize, | 81 {CursorType::kContextMenu, IDR_AURA_CURSOR_CONTEXT_MENU, {4, 4}, {8, 9}}, |
82 IDR_AURA_CURSOR_NORTH_WEST_SOUTH_EAST_RESIZE, {11, 11}, {24, 23}}, | 82 {CursorType::kCross, IDR_AURA_CURSOR_CROSSHAIR, {12, 12}, {25, 23}}, |
83 {ui::kCursorGrab, IDR_AURA_CURSOR_GRAB, {8, 5}, {16, 10}}, | 83 {CursorType::kHelp, IDR_AURA_CURSOR_HELP, {4, 4}, {8, 9}}, |
84 {ui::kCursorGrabbing, IDR_AURA_CURSOR_GRABBING, {9, 9}, {18, 18}}, | 84 {CursorType::kVerticalText, |
| 85 IDR_AURA_CURSOR_XTERM_HORIZ, |
| 86 {12, 11}, |
| 87 {26, 23}}, |
| 88 {CursorType::kZoomIn, IDR_AURA_CURSOR_ZOOM_IN, {10, 10}, {20, 20}}, |
| 89 {CursorType::kZoomOut, IDR_AURA_CURSOR_ZOOM_OUT, {10, 10}, {20, 20}}, |
| 90 {CursorType::kRowResize, IDR_AURA_CURSOR_ROW_RESIZE, {11, 12}, {23, 23}}, |
| 91 {CursorType::kColumnResize, IDR_AURA_CURSOR_COL_RESIZE, {12, 11}, {25, 23}}, |
| 92 {CursorType::kEastWestResize, |
| 93 IDR_AURA_CURSOR_EAST_WEST_RESIZE, |
| 94 {12, 11}, |
| 95 {25, 23}}, |
| 96 {CursorType::kNorthSouthResize, |
| 97 IDR_AURA_CURSOR_NORTH_SOUTH_RESIZE, |
| 98 {11, 12}, |
| 99 {23, 23}}, |
| 100 {CursorType::kNorthEastSouthWestResize, |
| 101 IDR_AURA_CURSOR_NORTH_EAST_SOUTH_WEST_RESIZE, |
| 102 {12, 11}, |
| 103 {25, 23}}, |
| 104 {CursorType::kNorthWestSouthEastResize, |
| 105 IDR_AURA_CURSOR_NORTH_WEST_SOUTH_EAST_RESIZE, |
| 106 {11, 11}, |
| 107 {24, 23}}, |
| 108 {CursorType::kGrab, IDR_AURA_CURSOR_GRAB, {8, 5}, {16, 10}}, |
| 109 {CursorType::kGrabbing, IDR_AURA_CURSOR_GRABBING, {9, 9}, {18, 18}}, |
85 }; | 110 }; |
86 | 111 |
87 const CursorData kLargeCursors[] = { | 112 const CursorData kLargeCursors[] = { |
88 // The 2x hotspots should be double of the 1x, even though the cursors are | 113 // The 2x hotspots should be double of the 1x, even though the cursors are |
89 // shown as same size as 1x (64x64), because in 2x dpi screen, the 1x large | 114 // shown as same size as 1x (64x64), because in 2x dpi screen, the 1x large |
90 // cursor assets (64x64) are internally enlarged to the double size (128x128) | 115 // cursor assets (64x64) are internally enlarged to the double size |
91 // by ResourceBundleImageSource. | 116 // (128x128) |
92 {ui::kCursorNull, IDR_AURA_CURSOR_BIG_PTR, {10, 10}, {20, 20}}, | 117 // by ResourceBundleImageSource. |
93 {ui::kCursorPointer, IDR_AURA_CURSOR_BIG_PTR, {10, 10}, {20, 20}}, | 118 {CursorType::kNull, IDR_AURA_CURSOR_BIG_PTR, {10, 10}, {20, 20}}, |
94 {ui::kCursorNoDrop, IDR_AURA_CURSOR_BIG_NO_DROP, {10, 10}, {20, 20}}, | 119 {CursorType::kPointer, IDR_AURA_CURSOR_BIG_PTR, {10, 10}, {20, 20}}, |
95 {ui::kCursorNotAllowed, IDR_AURA_CURSOR_BIG_NO_DROP, {10, 10}, {20, 20}}, | 120 {CursorType::kNoDrop, IDR_AURA_CURSOR_BIG_NO_DROP, {10, 10}, {20, 20}}, |
96 {ui::kCursorCopy, IDR_AURA_CURSOR_BIG_COPY, {10, 10}, {20, 20}}, | 121 {CursorType::kNotAllowed, IDR_AURA_CURSOR_BIG_NO_DROP, {10, 10}, {20, 20}}, |
97 {ui::kCursorHand, IDR_AURA_CURSOR_BIG_HAND, {25, 7}, {50, 14}}, | 122 {CursorType::kCopy, IDR_AURA_CURSOR_BIG_COPY, {10, 10}, {20, 20}}, |
98 {ui::kCursorMove, IDR_AURA_CURSOR_BIG_MOVE, {32, 31}, {64, 62}}, | 123 {CursorType::kHand, IDR_AURA_CURSOR_BIG_HAND, {25, 7}, {50, 14}}, |
99 {ui::kCursorNorthEastResize, IDR_AURA_CURSOR_BIG_NORTH_EAST_RESIZE, | 124 {CursorType::kMove, IDR_AURA_CURSOR_BIG_MOVE, {32, 31}, {64, 62}}, |
100 {31, 28}, {62, 56}}, | 125 {CursorType::kNorthEastResize, |
101 {ui::kCursorSouthWestResize, IDR_AURA_CURSOR_BIG_SOUTH_WEST_RESIZE, | 126 IDR_AURA_CURSOR_BIG_NORTH_EAST_RESIZE, |
102 {31, 28}, {62, 56}}, | 127 {31, 28}, |
103 {ui::kCursorSouthEastResize, IDR_AURA_CURSOR_BIG_SOUTH_EAST_RESIZE, | 128 {62, 56}}, |
104 {28, 28}, {56, 56}}, | 129 {CursorType::kSouthWestResize, |
105 {ui::kCursorNorthWestResize, IDR_AURA_CURSOR_BIG_NORTH_WEST_RESIZE, | 130 IDR_AURA_CURSOR_BIG_SOUTH_WEST_RESIZE, |
106 {28, 28}, {56, 56}}, | 131 {31, 28}, |
107 {ui::kCursorNorthResize, IDR_AURA_CURSOR_BIG_NORTH_RESIZE, | 132 {62, 56}}, |
108 {29, 32}, {58, 64}}, | 133 {CursorType::kSouthEastResize, |
109 {ui::kCursorSouthResize, IDR_AURA_CURSOR_BIG_SOUTH_RESIZE, | 134 IDR_AURA_CURSOR_BIG_SOUTH_EAST_RESIZE, |
110 {29, 32}, {58, 64}}, | 135 {28, 28}, |
111 {ui::kCursorEastResize, IDR_AURA_CURSOR_BIG_EAST_RESIZE, {35, 29}, {70, 58}}, | 136 {56, 56}}, |
112 {ui::kCursorWestResize, IDR_AURA_CURSOR_BIG_WEST_RESIZE, {35, 29}, {70, 58}}, | 137 {CursorType::kNorthWestResize, |
113 {ui::kCursorIBeam, IDR_AURA_CURSOR_BIG_IBEAM, {30, 32}, {60, 64}}, | 138 IDR_AURA_CURSOR_BIG_NORTH_WEST_RESIZE, |
114 {ui::kCursorAlias, IDR_AURA_CURSOR_BIG_ALIAS, {19, 11}, {38, 22}}, | 139 {28, 28}, |
115 {ui::kCursorCell, IDR_AURA_CURSOR_BIG_CELL, {30, 30}, {60, 60}}, | 140 {56, 56}}, |
116 {ui::kCursorContextMenu, IDR_AURA_CURSOR_BIG_CONTEXT_MENU, | 141 {CursorType::kNorthResize, |
117 {11, 11}, {22, 22}}, | 142 IDR_AURA_CURSOR_BIG_NORTH_RESIZE, |
118 {ui::kCursorCross, IDR_AURA_CURSOR_BIG_CROSSHAIR, {31, 30}, {62, 60}}, | 143 {29, 32}, |
119 {ui::kCursorHelp, IDR_AURA_CURSOR_BIG_HELP, {10, 11}, {20, 22}}, | 144 {58, 64}}, |
120 {ui::kCursorVerticalText, IDR_AURA_CURSOR_BIG_XTERM_HORIZ, | 145 {CursorType::kSouthResize, |
121 {32, 30}, {64, 60}}, | 146 IDR_AURA_CURSOR_BIG_SOUTH_RESIZE, |
122 {ui::kCursorZoomIn, IDR_AURA_CURSOR_BIG_ZOOM_IN, {25, 26}, {50, 52}}, | 147 {29, 32}, |
123 {ui::kCursorZoomOut, IDR_AURA_CURSOR_BIG_ZOOM_OUT, {26, 26}, {52, 52}}, | 148 {58, 64}}, |
124 {ui::kCursorRowResize, IDR_AURA_CURSOR_BIG_ROW_RESIZE, {29, 32}, {58, 64}}, | 149 {CursorType::kEastResize, |
125 {ui::kCursorColumnResize, IDR_AURA_CURSOR_BIG_COL_RESIZE, {35, 29}, {70, 58}}, | 150 IDR_AURA_CURSOR_BIG_EAST_RESIZE, |
126 {ui::kCursorEastWestResize, IDR_AURA_CURSOR_BIG_EAST_WEST_RESIZE, | 151 {35, 29}, |
127 {35, 29}, {70, 58}}, | 152 {70, 58}}, |
128 {ui::kCursorNorthSouthResize, IDR_AURA_CURSOR_BIG_NORTH_SOUTH_RESIZE, | 153 {CursorType::kWestResize, |
129 {29, 32}, {58, 64}}, | 154 IDR_AURA_CURSOR_BIG_WEST_RESIZE, |
130 {ui::kCursorNorthEastSouthWestResize, | 155 {35, 29}, |
131 IDR_AURA_CURSOR_BIG_NORTH_EAST_SOUTH_WEST_RESIZE, {32, 30}, {64, 60}}, | 156 {70, 58}}, |
132 {ui::kCursorNorthWestSouthEastResize, | 157 {CursorType::kIBeam, IDR_AURA_CURSOR_BIG_IBEAM, {30, 32}, {60, 64}}, |
133 IDR_AURA_CURSOR_BIG_NORTH_WEST_SOUTH_EAST_RESIZE, {32, 31}, {64, 62}}, | 158 {CursorType::kAlias, IDR_AURA_CURSOR_BIG_ALIAS, {19, 11}, {38, 22}}, |
134 {ui::kCursorGrab, IDR_AURA_CURSOR_BIG_GRAB, {21, 11}, {42, 22}}, | 159 {CursorType::kCell, IDR_AURA_CURSOR_BIG_CELL, {30, 30}, {60, 60}}, |
135 {ui::kCursorGrabbing, IDR_AURA_CURSOR_BIG_GRABBING, {20, 12}, {40, 24}}, | 160 {CursorType::kContextMenu, |
| 161 IDR_AURA_CURSOR_BIG_CONTEXT_MENU, |
| 162 {11, 11}, |
| 163 {22, 22}}, |
| 164 {CursorType::kCross, IDR_AURA_CURSOR_BIG_CROSSHAIR, {31, 30}, {62, 60}}, |
| 165 {CursorType::kHelp, IDR_AURA_CURSOR_BIG_HELP, {10, 11}, {20, 22}}, |
| 166 {CursorType::kVerticalText, |
| 167 IDR_AURA_CURSOR_BIG_XTERM_HORIZ, |
| 168 {32, 30}, |
| 169 {64, 60}}, |
| 170 {CursorType::kZoomIn, IDR_AURA_CURSOR_BIG_ZOOM_IN, {25, 26}, {50, 52}}, |
| 171 {CursorType::kZoomOut, IDR_AURA_CURSOR_BIG_ZOOM_OUT, {26, 26}, {52, 52}}, |
| 172 {CursorType::kRowResize, |
| 173 IDR_AURA_CURSOR_BIG_ROW_RESIZE, |
| 174 {29, 32}, |
| 175 {58, 64}}, |
| 176 {CursorType::kColumnResize, |
| 177 IDR_AURA_CURSOR_BIG_COL_RESIZE, |
| 178 {35, 29}, |
| 179 {70, 58}}, |
| 180 {CursorType::kEastWestResize, |
| 181 IDR_AURA_CURSOR_BIG_EAST_WEST_RESIZE, |
| 182 {35, 29}, |
| 183 {70, 58}}, |
| 184 {CursorType::kNorthSouthResize, |
| 185 IDR_AURA_CURSOR_BIG_NORTH_SOUTH_RESIZE, |
| 186 {29, 32}, |
| 187 {58, 64}}, |
| 188 {CursorType::kNorthEastSouthWestResize, |
| 189 IDR_AURA_CURSOR_BIG_NORTH_EAST_SOUTH_WEST_RESIZE, |
| 190 {32, 30}, |
| 191 {64, 60}}, |
| 192 {CursorType::kNorthWestSouthEastResize, |
| 193 IDR_AURA_CURSOR_BIG_NORTH_WEST_SOUTH_EAST_RESIZE, |
| 194 {32, 31}, |
| 195 {64, 62}}, |
| 196 {CursorType::kGrab, IDR_AURA_CURSOR_BIG_GRAB, {21, 11}, {42, 22}}, |
| 197 {CursorType::kGrabbing, IDR_AURA_CURSOR_BIG_GRABBING, {20, 12}, {40, 24}}, |
136 }; | 198 }; |
137 | 199 |
138 const CursorData kAnimatedCursors[] = { | 200 const CursorData kAnimatedCursors[] = { |
139 {ui::kCursorWait, IDR_AURA_CURSOR_THROBBER, {7, 7}, {14, 14}}, | 201 {CursorType::kWait, IDR_AURA_CURSOR_THROBBER, {7, 7}, {14, 14}}, |
140 {ui::kCursorProgress, IDR_AURA_CURSOR_THROBBER, {7, 7}, {14, 14}}, | 202 {CursorType::kProgress, IDR_AURA_CURSOR_THROBBER, {7, 7}, {14, 14}}, |
141 }; | 203 }; |
142 | 204 |
143 const CursorSet kCursorSets[] = { | 205 const CursorSet kCursorSets[] = { |
144 { | 206 { |
145 CURSOR_SET_NORMAL, | 207 CURSOR_SET_NORMAL, |
146 kNormalCursors, arraysize(kNormalCursors), | 208 kNormalCursors, arraysize(kNormalCursors), |
147 kAnimatedCursors, arraysize(kAnimatedCursors) | 209 kAnimatedCursors, arraysize(kAnimatedCursors) |
148 }, | 210 }, |
149 { | 211 { |
150 CURSOR_SET_LARGE, | 212 CURSOR_SET_LARGE, |
151 kLargeCursors, arraysize(kLargeCursors), | 213 kLargeCursors, arraysize(kLargeCursors), |
152 // TODO(yoshiki): Replace animated cursors with big assets. crbug.com/247254 | 214 // TODO(yoshiki): Replace animated cursors with big assets. crbug.com/247254 |
153 kAnimatedCursors, arraysize(kAnimatedCursors) | 215 kAnimatedCursors, arraysize(kAnimatedCursors) |
154 }, | 216 }, |
155 }; | 217 }; |
156 | 218 |
157 const CursorSet* GetCursorSetByType(CursorSetType cursor_set_id) { | 219 const CursorSet* GetCursorSetByType(CursorSetType cursor_set_id) { |
158 for (size_t i = 0; i < arraysize(kCursorSets); ++i) { | 220 for (size_t i = 0; i < arraysize(kCursorSets); ++i) { |
159 if (kCursorSets[i].id == cursor_set_id) | 221 if (kCursorSets[i].id == cursor_set_id) |
160 return &kCursorSets[i]; | 222 return &kCursorSets[i]; |
161 } | 223 } |
162 | 224 |
163 return NULL; | 225 return NULL; |
164 } | 226 } |
165 | 227 |
166 bool SearchTable(const CursorData* table, | 228 bool SearchTable(const CursorData* table, |
167 size_t table_length, | 229 size_t table_length, |
168 int id, | 230 CursorType id, |
169 float scale_factor, | 231 float scale_factor, |
170 int* resource_id, | 232 int* resource_id, |
171 gfx::Point* point) { | 233 gfx::Point* point) { |
172 bool resource_2x_available = | 234 bool resource_2x_available = |
173 ResourceBundle::GetSharedInstance().GetMaxScaleFactor() == | 235 ResourceBundle::GetSharedInstance().GetMaxScaleFactor() == |
174 SCALE_FACTOR_200P; | 236 SCALE_FACTOR_200P; |
175 for (size_t i = 0; i < table_length; ++i) { | 237 for (size_t i = 0; i < table_length; ++i) { |
176 if (table[i].id == id) { | 238 if (table[i].id == id) { |
177 *resource_id = table[i].resource_id; | 239 *resource_id = table[i].resource_id; |
178 *point = scale_factor == 1.0f || !resource_2x_available ? | 240 *point = scale_factor == 1.0f || !resource_2x_available ? |
179 gfx::Point(table[i].hot_1x.x, table[i].hot_1x.y) : | 241 gfx::Point(table[i].hot_1x.x, table[i].hot_1x.y) : |
180 gfx::Point(table[i].hot_2x.x, table[i].hot_2x.y); | 242 gfx::Point(table[i].hot_2x.x, table[i].hot_2x.y); |
181 return true; | 243 return true; |
182 } | 244 } |
183 } | 245 } |
184 | 246 |
185 return false; | 247 return false; |
186 } | 248 } |
187 | 249 |
188 } // namespace | 250 } // namespace |
189 | 251 |
190 bool GetCursorDataFor(CursorSetType cursor_set_id, | 252 bool GetCursorDataFor(CursorSetType cursor_set_id, |
191 int id, | 253 CursorType id, |
192 float scale_factor, | 254 float scale_factor, |
193 int* resource_id, | 255 int* resource_id, |
194 gfx::Point* point) { | 256 gfx::Point* point) { |
195 const CursorSet* cursor_set = GetCursorSetByType(cursor_set_id); | 257 const CursorSet* cursor_set = GetCursorSetByType(cursor_set_id); |
196 if (cursor_set && | 258 if (cursor_set && |
197 SearchTable(cursor_set->cursors, | 259 SearchTable(cursor_set->cursors, |
198 cursor_set->length, | 260 cursor_set->length, |
199 id, scale_factor, resource_id, point)) { | 261 id, scale_factor, resource_id, point)) { |
200 return true; | 262 return true; |
201 } | 263 } |
202 | 264 |
203 // Falls back to the default cursor set. | 265 // Falls back to the default cursor set. |
204 cursor_set = GetCursorSetByType(ui::CURSOR_SET_NORMAL); | 266 cursor_set = GetCursorSetByType(ui::CURSOR_SET_NORMAL); |
205 DCHECK(cursor_set); | 267 DCHECK(cursor_set); |
206 return SearchTable(cursor_set->cursors, | 268 return SearchTable(cursor_set->cursors, |
207 cursor_set->length, | 269 cursor_set->length, |
208 id, scale_factor, resource_id, point); | 270 id, scale_factor, resource_id, point); |
209 } | 271 } |
210 | 272 |
211 bool GetAnimatedCursorDataFor(CursorSetType cursor_set_id, | 273 bool GetAnimatedCursorDataFor(CursorSetType cursor_set_id, |
212 int id, | 274 CursorType id, |
213 float scale_factor, | 275 float scale_factor, |
214 int* resource_id, | 276 int* resource_id, |
215 gfx::Point* point) { | 277 gfx::Point* point) { |
216 const CursorSet* cursor_set = GetCursorSetByType(cursor_set_id); | 278 const CursorSet* cursor_set = GetCursorSetByType(cursor_set_id); |
217 if (cursor_set && | 279 if (cursor_set && |
218 SearchTable(cursor_set->animated_cursors, | 280 SearchTable(cursor_set->animated_cursors, |
219 cursor_set->animated_length, | 281 cursor_set->animated_length, |
220 id, scale_factor, resource_id, point)) { | 282 id, scale_factor, resource_id, point)) { |
221 return true; | 283 return true; |
222 } | 284 } |
(...skipping 30 matching lines...) Expand all Loading... |
253 const SkBitmap* cursor_bitmap = ResourceBundle::GetSharedInstance(). | 315 const SkBitmap* cursor_bitmap = ResourceBundle::GetSharedInstance(). |
254 GetImageSkiaNamed(resource_id)->bitmap(); | 316 GetImageSkiaNamed(resource_id)->bitmap(); |
255 #endif | 317 #endif |
256 if (!cursor_bitmap) | 318 if (!cursor_bitmap) |
257 return false; | 319 return false; |
258 *bitmap = *cursor_bitmap; | 320 *bitmap = *cursor_bitmap; |
259 return true; | 321 return true; |
260 } | 322 } |
261 | 323 |
262 } // namespace ui | 324 } // namespace ui |
OLD | NEW |