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

Side by Side Diff: ui/ozone/platform/x11/x11_cursor_factory_ozone.cc

Issue 2833163002: Change ui cursor identifiers to an enum class. (Closed)
Patch Set: OK, it can't be explicit for mac. Created 3 years, 7 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/ozone/platform/x11/x11_cursor_factory_ozone.h" 5 #include "ui/ozone/platform/x11/x11_cursor_factory_ozone.h"
6 6
7 #include "third_party/skia/include/core/SkBitmap.h" 7 #include "third_party/skia/include/core/SkBitmap.h"
8 #include "ui/base/cursor/cursors_aura.h" 8 #include "ui/base/cursor/cursors_aura.h"
9 #include "ui/gfx/geometry/point.h" 9 #include "ui/gfx/geometry/point.h"
10 10
11 namespace ui { 11 namespace ui {
12 12
13 namespace { 13 namespace {
14 14
15 X11CursorOzone* ToX11CursorOzone(PlatformCursor cursor) { 15 X11CursorOzone* ToX11CursorOzone(PlatformCursor cursor) {
16 return static_cast<X11CursorOzone*>(cursor); 16 return static_cast<X11CursorOzone*>(cursor);
17 } 17 }
18 18
19 PlatformCursor ToPlatformCursor(X11CursorOzone* cursor) { 19 PlatformCursor ToPlatformCursor(X11CursorOzone* cursor) {
20 return static_cast<PlatformCursor>(cursor); 20 return static_cast<PlatformCursor>(cursor);
21 } 21 }
22 22
23 // Gets default aura cursor bitmap/hotspot and creates a X11CursorOzone with it. 23 // Gets default aura cursor bitmap/hotspot and creates a X11CursorOzone with it.
24 scoped_refptr<X11CursorOzone> CreateAuraX11Cursor(int type) { 24 scoped_refptr<X11CursorOzone> CreateAuraX11Cursor(CursorType type) {
25 SkBitmap bitmap; 25 SkBitmap bitmap;
26 gfx::Point hotspot; 26 gfx::Point hotspot;
27 if (GetCursorBitmap(type, &bitmap, &hotspot)) { 27 if (GetCursorBitmap(type, &bitmap, &hotspot)) {
28 return new X11CursorOzone(bitmap, hotspot); 28 return new X11CursorOzone(bitmap, hotspot);
29 } 29 }
30 return nullptr; 30 return nullptr;
31 } 31 }
32 32
33 } // namespace 33 } // namespace
34 34
35 X11CursorFactoryOzone::X11CursorFactoryOzone() 35 X11CursorFactoryOzone::X11CursorFactoryOzone()
36 : invisible_cursor_(X11CursorOzone::CreateInvisible()) {} 36 : invisible_cursor_(X11CursorOzone::CreateInvisible()) {}
37 37
38 X11CursorFactoryOzone::~X11CursorFactoryOzone() {} 38 X11CursorFactoryOzone::~X11CursorFactoryOzone() {}
39 39
40 PlatformCursor X11CursorFactoryOzone::GetDefaultCursor(int type) { 40 PlatformCursor X11CursorFactoryOzone::GetDefaultCursor(CursorType type) {
41 return ToPlatformCursor(GetDefaultCursorInternal(type).get()); 41 return ToPlatformCursor(GetDefaultCursorInternal(type).get());
42 } 42 }
43 43
44 PlatformCursor X11CursorFactoryOzone::CreateImageCursor( 44 PlatformCursor X11CursorFactoryOzone::CreateImageCursor(
45 const SkBitmap& bitmap, 45 const SkBitmap& bitmap,
46 const gfx::Point& hotspot, 46 const gfx::Point& hotspot,
47 float bitmap_dpi) { 47 float bitmap_dpi) {
48 // There is a problem with custom cursors that have no custom data. The 48 // There is a problem with custom cursors that have no custom data. The
49 // resulting SkBitmap is empty and X crashes when creating a zero size cursor 49 // resulting SkBitmap is empty and X crashes when creating a zero size cursor
50 // image. Return invisible cursor here instead. 50 // image. Return invisible cursor here instead.
(...skipping 18 matching lines...) Expand all
69 69
70 void X11CursorFactoryOzone::RefImageCursor(PlatformCursor cursor) { 70 void X11CursorFactoryOzone::RefImageCursor(PlatformCursor cursor) {
71 ToX11CursorOzone(cursor)->AddRef(); 71 ToX11CursorOzone(cursor)->AddRef();
72 } 72 }
73 73
74 void X11CursorFactoryOzone::UnrefImageCursor(PlatformCursor cursor) { 74 void X11CursorFactoryOzone::UnrefImageCursor(PlatformCursor cursor) {
75 ToX11CursorOzone(cursor)->Release(); 75 ToX11CursorOzone(cursor)->Release();
76 } 76 }
77 77
78 scoped_refptr<X11CursorOzone> X11CursorFactoryOzone::GetDefaultCursorInternal( 78 scoped_refptr<X11CursorOzone> X11CursorFactoryOzone::GetDefaultCursorInternal(
79 int type) { 79 CursorType type) {
80 if (type == kCursorNone) 80 if (type == CursorType::kNone)
81 return invisible_cursor_; 81 return invisible_cursor_;
82 82
83 // TODO(kylechar): Use predefined X cursors here instead. 83 // TODO(kylechar): Use predefined X cursors here instead.
84 if (!default_cursors_.count(type)) { 84 if (!default_cursors_.count(type)) {
85 // Loads the default aura cursor bitmap for cursor type. Falls back on 85 // Loads the default aura cursor bitmap for cursor type. Falls back on
86 // pointer cursor then invisible cursor if this fails. 86 // pointer cursor then invisible cursor if this fails.
87 scoped_refptr<X11CursorOzone> cursor = CreateAuraX11Cursor(type); 87 scoped_refptr<X11CursorOzone> cursor = CreateAuraX11Cursor(type);
88 if (!cursor.get()) { 88 if (!cursor.get()) {
89 if (type != kCursorPointer) { 89 if (type != CursorType::kPointer) {
90 cursor = GetDefaultCursorInternal(kCursorPointer); 90 cursor = GetDefaultCursorInternal(CursorType::kPointer);
91 } else { 91 } else {
92 NOTREACHED() << "Failed to load default cursor bitmap"; 92 NOTREACHED() << "Failed to load default cursor bitmap";
93 } 93 }
94 } 94 }
95 default_cursors_[type] = cursor; 95 default_cursors_[type] = cursor;
96 } 96 }
97 97
98 // Returns owned default cursor for this type. 98 // Returns owned default cursor for this type.
99 return default_cursors_[type]; 99 return default_cursors_[type];
100 } 100 }
101 101
102 } // namespace ui 102 } // namespace ui
OLDNEW
« no previous file with comments | « ui/ozone/platform/x11/x11_cursor_factory_ozone.h ('k') | ui/ozone/public/cursor_factory_ozone.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698