| 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 "ui/base/cursor/cursor_loader_win.h" | |
| 6 | |
| 7 #include "base/lazy_instance.h" | |
| 8 #include "base/strings/string16.h" | |
| 9 #include "ui/base/cursor/cursor.h" | |
| 10 #include "ui/resources/grit/ui_unscaled_resources.h" | |
| 11 | |
| 12 namespace ui { | |
| 13 | |
| 14 namespace { | |
| 15 | |
| 16 base::LazyInstance<base::string16> g_cursor_resource_module_name; | |
| 17 | |
| 18 const wchar_t* GetCursorId(gfx::NativeCursor native_cursor) { | |
| 19 switch (native_cursor.native_type()) { | |
| 20 case kCursorNull: | |
| 21 return IDC_ARROW; | |
| 22 case kCursorPointer: | |
| 23 return IDC_ARROW; | |
| 24 case kCursorCross: | |
| 25 return IDC_CROSS; | |
| 26 case kCursorHand: | |
| 27 return IDC_HAND; | |
| 28 case kCursorIBeam: | |
| 29 return IDC_IBEAM; | |
| 30 case kCursorWait: | |
| 31 return IDC_WAIT; | |
| 32 case kCursorHelp: | |
| 33 return IDC_HELP; | |
| 34 case kCursorEastResize: | |
| 35 return IDC_SIZEWE; | |
| 36 case kCursorNorthResize: | |
| 37 return IDC_SIZENS; | |
| 38 case kCursorNorthEastResize: | |
| 39 return IDC_SIZENESW; | |
| 40 case kCursorNorthWestResize: | |
| 41 return IDC_SIZENWSE; | |
| 42 case kCursorSouthResize: | |
| 43 return IDC_SIZENS; | |
| 44 case kCursorSouthEastResize: | |
| 45 return IDC_SIZENWSE; | |
| 46 case kCursorSouthWestResize: | |
| 47 return IDC_SIZENESW; | |
| 48 case kCursorWestResize: | |
| 49 return IDC_SIZEWE; | |
| 50 case kCursorNorthSouthResize: | |
| 51 return IDC_SIZENS; | |
| 52 case kCursorEastWestResize: | |
| 53 return IDC_SIZEWE; | |
| 54 case kCursorNorthEastSouthWestResize: | |
| 55 return IDC_SIZENESW; | |
| 56 case kCursorNorthWestSouthEastResize: | |
| 57 return IDC_SIZENWSE; | |
| 58 case kCursorMove: | |
| 59 return IDC_SIZEALL; | |
| 60 case kCursorProgress: | |
| 61 return IDC_APPSTARTING; | |
| 62 case kCursorNoDrop: | |
| 63 return IDC_NO; | |
| 64 case kCursorNotAllowed: | |
| 65 return IDC_NO; | |
| 66 case kCursorColumnResize: | |
| 67 return MAKEINTRESOURCE(IDC_COLRESIZE); | |
| 68 case kCursorRowResize: | |
| 69 return MAKEINTRESOURCE(IDC_ROWRESIZE); | |
| 70 case kCursorMiddlePanning: | |
| 71 return MAKEINTRESOURCE(IDC_PAN_MIDDLE); | |
| 72 case kCursorEastPanning: | |
| 73 return MAKEINTRESOURCE(IDC_PAN_EAST); | |
| 74 case kCursorNorthPanning: | |
| 75 return MAKEINTRESOURCE(IDC_PAN_NORTH); | |
| 76 case kCursorNorthEastPanning: | |
| 77 return MAKEINTRESOURCE(IDC_PAN_NORTH_EAST); | |
| 78 case kCursorNorthWestPanning: | |
| 79 return MAKEINTRESOURCE(IDC_PAN_NORTH_WEST); | |
| 80 case kCursorSouthPanning: | |
| 81 return MAKEINTRESOURCE(IDC_PAN_SOUTH); | |
| 82 case kCursorSouthEastPanning: | |
| 83 return MAKEINTRESOURCE(IDC_PAN_SOUTH_EAST); | |
| 84 case kCursorSouthWestPanning: | |
| 85 return MAKEINTRESOURCE(IDC_PAN_SOUTH_WEST); | |
| 86 case kCursorWestPanning: | |
| 87 return MAKEINTRESOURCE(IDC_PAN_WEST); | |
| 88 case kCursorVerticalText: | |
| 89 return MAKEINTRESOURCE(IDC_VERTICALTEXT); | |
| 90 case kCursorCell: | |
| 91 return MAKEINTRESOURCE(IDC_CELL); | |
| 92 case kCursorZoomIn: | |
| 93 return MAKEINTRESOURCE(IDC_ZOOMIN); | |
| 94 case kCursorZoomOut: | |
| 95 return MAKEINTRESOURCE(IDC_ZOOMOUT); | |
| 96 case kCursorGrab: | |
| 97 return MAKEINTRESOURCE(IDC_HAND_GRAB); | |
| 98 case kCursorGrabbing: | |
| 99 return MAKEINTRESOURCE(IDC_HAND_GRABBING); | |
| 100 case kCursorCopy: | |
| 101 return MAKEINTRESOURCE(IDC_COPYCUR); | |
| 102 case kCursorAlias: | |
| 103 return MAKEINTRESOURCE(IDC_ALIAS); | |
| 104 case kCursorNone: | |
| 105 return MAKEINTRESOURCE(IDC_CURSOR_NONE); | |
| 106 case kCursorContextMenu: | |
| 107 case kCursorCustom: | |
| 108 NOTIMPLEMENTED(); | |
| 109 return IDC_ARROW; | |
| 110 default: | |
| 111 NOTREACHED(); | |
| 112 return IDC_ARROW; | |
| 113 } | |
| 114 } | |
| 115 | |
| 116 } // namespace | |
| 117 | |
| 118 CursorLoader* CursorLoader::Create() { | |
| 119 return new CursorLoaderWin; | |
| 120 } | |
| 121 | |
| 122 CursorLoaderWin::CursorLoaderWin() { | |
| 123 } | |
| 124 | |
| 125 CursorLoaderWin::~CursorLoaderWin() { | |
| 126 } | |
| 127 | |
| 128 void CursorLoaderWin::LoadImageCursor(int id, | |
| 129 int resource_id, | |
| 130 const gfx::Point& hot) { | |
| 131 // NOTIMPLEMENTED(); | |
| 132 } | |
| 133 | |
| 134 void CursorLoaderWin::LoadAnimatedCursor(int id, | |
| 135 int resource_id, | |
| 136 const gfx::Point& hot, | |
| 137 int frame_delay_ms) { | |
| 138 // NOTIMPLEMENTED(); | |
| 139 } | |
| 140 | |
| 141 void CursorLoaderWin::UnloadAll() { | |
| 142 // NOTIMPLEMENTED(); | |
| 143 } | |
| 144 | |
| 145 void CursorLoaderWin::SetPlatformCursor(gfx::NativeCursor* cursor) { | |
| 146 if (cursor->native_type() != kCursorCustom) { | |
| 147 if (cursor->platform()) { | |
| 148 cursor->SetPlatformCursor(cursor->platform()); | |
| 149 } else { | |
| 150 const wchar_t* cursor_id = GetCursorId(*cursor); | |
| 151 PlatformCursor platform_cursor = LoadCursor(NULL, cursor_id); | |
| 152 if (!platform_cursor && !g_cursor_resource_module_name.Get().empty()) { | |
| 153 platform_cursor = LoadCursor( | |
| 154 GetModuleHandle(g_cursor_resource_module_name.Get().c_str()), | |
| 155 cursor_id); | |
| 156 } | |
| 157 cursor->SetPlatformCursor(platform_cursor); | |
| 158 } | |
| 159 } | |
| 160 } | |
| 161 | |
| 162 // static | |
| 163 void CursorLoaderWin::SetCursorResourceModule( | |
| 164 const base::string16& module_name) { | |
| 165 g_cursor_resource_module_name.Get() = module_name; | |
| 166 } | |
| 167 | |
| 168 } // namespace ui | |
| OLD | NEW |