Chromium Code Reviews| OLD | NEW |
|---|---|
| (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 "grit/ui_resources.h" | |
| 11 | |
| 12 namespace { | |
| 13 | |
| 14 const int kAnimatedCursorFrameDelayMs = 25; | |
| 15 | |
| 16 struct CursorData { | |
| 17 int id; | |
| 18 int resource_id; | |
| 19 int hot_x; | |
| 20 int hot_y; | |
| 21 }; | |
| 22 | |
| 23 // The cursor's hot points are defined in chromeos cursor images at: | |
| 24 // http://folder/kuscher/projects/Chrome_OS/Pointers/focuspoint | |
| 25 const CursorData kImageCursors[] = { | |
| 26 {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
| |
| 27 {ui::kCursorPointer, IDR_AURA_CURSOR_PTR, 8, 3}, | |
| 28 {ui::kCursorNoDrop, IDR_AURA_CURSOR_NO_DROP, 3, 1}, | |
| 29 {ui::kCursorNotAllowed, IDR_AURA_CURSOR_NO_DROP, 3, 1}, | |
| 30 {ui::kCursorCopy, IDR_AURA_CURSOR_COPY, 3, 1}, | |
| 31 {ui::kCursorHand, IDR_AURA_CURSOR_HAND, 9, 3}, | |
| 32 {ui::kCursorMove, IDR_AURA_CURSOR_MOVE, 11, 11}, | |
| 33 {ui::kCursorNorthEastResize, IDR_AURA_CURSOR_NORTH_EAST_RESIZE, 12, 11}, | |
| 34 {ui::kCursorSouthWestResize, IDR_AURA_CURSOR_SOUTH_WEST_RESIZE, 12, 11}, | |
| 35 {ui::kCursorSouthEastResize, IDR_AURA_CURSOR_SOUTH_EAST_RESIZE, 11, 11}, | |
| 36 {ui::kCursorNorthWestResize, IDR_AURA_CURSOR_NORTH_WEST_RESIZE, 11, 11}, | |
| 37 {ui::kCursorNorthResize, IDR_AURA_CURSOR_NORTH_RESIZE, 11, 10}, | |
| 38 {ui::kCursorSouthResize, IDR_AURA_CURSOR_SOUTH_RESIZE, 11, 11}, | |
| 39 {ui::kCursorEastResize, IDR_AURA_CURSOR_EAST_RESIZE, 11, 11}, | |
| 40 {ui::kCursorWestResize, IDR_AURA_CURSOR_WEST_RESIZE, 11, 11}, | |
| 41 {ui::kCursorIBeam, IDR_AURA_CURSOR_IBEAM, 12, 12}, | |
| 42 {ui::kCursorAlias, IDR_AURA_CURSOR_ALIAS, 8, 5}, | |
| 43 {ui::kCursorCell, IDR_AURA_CURSOR_CELL, 12, 11}, | |
| 44 {ui::kCursorContextMenu, IDR_AURA_CURSOR_CONTEXT_MENU, 3, 1}, | |
| 45 {ui::kCursorCross, IDR_AURA_CURSOR_CROSSHAIR, 12, 11}, | |
| 46 {ui::kCursorHelp, IDR_AURA_CURSOR_HELP, 3, 1}, | |
| 47 {ui::kCursorVerticalText, IDR_AURA_CURSOR_XTERM_HORIZ, 12, 12}, | |
| 48 {ui::kCursorZoomIn, IDR_AURA_CURSOR_ZOOM_IN, 12, 12}, | |
| 49 {ui::kCursorZoomOut, IDR_AURA_CURSOR_ZOOM_OUT, 11, 11}, | |
| 50 {ui::kCursorRowResize, IDR_AURA_CURSOR_ROW_RESIZE, 11, 11}, | |
| 51 {ui::kCursorColumnResize, IDR_AURA_CURSOR_COL_RESIZE, 11, 11}, | |
| 52 {ui::kCursorEastWestResize, IDR_AURA_CURSOR_EAST_WEST_RESIZE, 11, 11}, | |
| 53 {ui::kCursorNorthSouthResize, IDR_AURA_CURSOR_NORTH_SOUTH_RESIZE, 11, 11}, | |
| 54 {ui::kCursorNorthEastSouthWestResize, | |
| 55 IDR_AURA_CURSOR_NORTH_EAST_SOUTH_WEST_RESIZE, 12, 11}, | |
| 56 {ui::kCursorNorthWestSouthEastResize, | |
| 57 IDR_AURA_CURSOR_NORTH_WEST_SOUTH_EAST_RESIZE, 11, 11}, | |
| 58 }; | |
| 59 | |
| 60 const CursorData kAnimatedCursors[] = { | |
| 61 {ui::kCursorWait, IDR_THROBBER, 7, 7}, | |
| 62 {ui::kCursorProgress, IDR_THROBBER, 7, 7}, | |
| 63 }; | |
| 64 | |
| 65 } // namespace | |
| 66 | |
| 67 namespace ash { | |
| 68 | |
| 69 ImageCursors::ImageCursors() | |
| 70 : cursor_loader_(ui::CursorLoader::Create()) { | |
| 71 } | |
| 72 | |
| 73 ImageCursors::~ImageCursors() { | |
| 74 } | |
| 75 | |
| 76 float ImageCursors::GetDeviceScaleFactor() const { | |
| 77 return cursor_loader_->device_scale_factor(); | |
| 78 } | |
| 79 | |
| 80 void ImageCursors::SetDeviceScaleFactor(float device_scale_factor) { | |
| 81 if (GetDeviceScaleFactor() == device_scale_factor) | |
| 82 return; | |
| 83 | |
| 84 cursor_loader_->UnloadAll(); | |
| 85 cursor_loader_->set_device_scale_factor(device_scale_factor); | |
| 86 | |
| 87 for (size_t i = 0; i < arraysize(kImageCursors); ++i) { | |
| 88 cursor_loader_->LoadImageCursor(kImageCursors[i].id, | |
| 89 kImageCursors[i].resource_id, | |
| 90 kImageCursors[i].hot_x, | |
| 91 kImageCursors[i].hot_y); | |
| 92 } | |
| 93 for (size_t i = 0; i < arraysize(kAnimatedCursors); ++i) { | |
| 94 cursor_loader_->LoadAnimatedCursor(kAnimatedCursors[i].id, | |
| 95 kAnimatedCursors[i].resource_id, | |
| 96 kAnimatedCursors[i].hot_x, | |
| 97 kAnimatedCursors[i].hot_y, | |
| 98 kAnimatedCursorFrameDelayMs); | |
| 99 } | |
| 100 } | |
| 101 | |
| 102 void ImageCursors::SetPlatformCursor(gfx::NativeCursor* cursor) { | |
| 103 cursor_loader_->SetPlatformCursor(cursor); | |
| 104 } | |
| 105 | |
| 106 } // namespace ash | |
| OLD | NEW |