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