OLD | NEW |
1 // Copyright (c) 2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2008 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 #ifndef BASE_GFX_NATIVE_WIDGET_TYPES_H_ | 5 #ifndef BASE_GFX_NATIVE_WIDGET_TYPES_H_ |
6 #define BASE_GFX_NATIVE_WIDGET_TYPES_H_ | 6 #define BASE_GFX_NATIVE_WIDGET_TYPES_H_ |
7 | 7 |
8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
9 #include "build/build_config.h" | 9 #include "build/build_config.h" |
10 | 10 |
(...skipping 28 matching lines...) Expand all Loading... |
39 struct CGContext; | 39 struct CGContext; |
40 #ifdef __OBJC__ | 40 #ifdef __OBJC__ |
41 @class NSView; | 41 @class NSView; |
42 @class NSWindow; | 42 @class NSWindow; |
43 @class NSTextField; | 43 @class NSTextField; |
44 #else | 44 #else |
45 class NSView; | 45 class NSView; |
46 class NSWindow; | 46 class NSWindow; |
47 class NSTextField; | 47 class NSTextField; |
48 #endif // __OBJC__ | 48 #endif // __OBJC__ |
49 #elif defined(OS_LINUX) | 49 #elif defined(OS_LINUX) || defined(OS_OPENBSD) |
50 typedef struct _GdkCursor GdkCursor; | 50 typedef struct _GdkCursor GdkCursor; |
51 typedef struct _GtkWidget GtkWidget; | 51 typedef struct _GtkWidget GtkWidget; |
52 typedef struct _GtkWindow GtkWindow; | 52 typedef struct _GtkWindow GtkWindow; |
53 typedef struct _cairo_surface cairo_surface_t; | 53 typedef struct _cairo_surface cairo_surface_t; |
54 #endif | 54 #endif |
55 | 55 |
56 namespace gfx { | 56 namespace gfx { |
57 | 57 |
58 #if defined(OS_WIN) | 58 #if defined(OS_WIN) |
59 typedef HWND NativeView; | 59 typedef HWND NativeView; |
60 typedef HWND NativeWindow; | 60 typedef HWND NativeWindow; |
61 typedef HWND NativeEditView; | 61 typedef HWND NativeEditView; |
62 typedef HDC NativeDrawingContext; | 62 typedef HDC NativeDrawingContext; |
63 typedef HCURSOR NativeCursor; | 63 typedef HCURSOR NativeCursor; |
64 typedef HMENU NativeMenu; | 64 typedef HMENU NativeMenu; |
65 #elif defined(OS_MACOSX) | 65 #elif defined(OS_MACOSX) |
66 typedef NSView* NativeView; | 66 typedef NSView* NativeView; |
67 typedef NSWindow* NativeWindow; | 67 typedef NSWindow* NativeWindow; |
68 typedef NSTextField* NativeEditView; | 68 typedef NSTextField* NativeEditView; |
69 typedef CGContext* NativeDrawingContext; | 69 typedef CGContext* NativeDrawingContext; |
70 typedef void* NativeCursor; | 70 typedef void* NativeCursor; |
71 typedef void* NativeMenu; | 71 typedef void* NativeMenu; |
72 #elif defined(OS_LINUX) | 72 #elif defined(OS_LINUX) || defined(OS_OPENBSD) |
73 typedef GtkWidget* NativeView; | 73 typedef GtkWidget* NativeView; |
74 typedef GtkWindow* NativeWindow; | 74 typedef GtkWindow* NativeWindow; |
75 typedef GtkWidget* NativeEditView; | 75 typedef GtkWidget* NativeEditView; |
76 typedef cairo_surface_t* NativeDrawingContext; | 76 typedef cairo_surface_t* NativeDrawingContext; |
77 typedef GdkCursor* NativeCursor; | 77 typedef GdkCursor* NativeCursor; |
78 typedef GtkWidget* NativeMenu; | 78 typedef GtkWidget* NativeMenu; |
79 #endif | 79 #endif |
80 | 80 |
81 // Note: for test_shell we're packing a pointer into the NativeViewId. So, if | 81 // Note: for test_shell we're packing a pointer into the NativeViewId. So, if |
82 // you make it a type which is smaller than a pointer, you have to fix | 82 // you make it a type which is smaller than a pointer, you have to fix |
83 // test_shell. | 83 // test_shell. |
84 // | 84 // |
85 // See comment at the top of the file for usage. | 85 // See comment at the top of the file for usage. |
86 typedef intptr_t NativeViewId; | 86 typedef intptr_t NativeViewId; |
87 | 87 |
88 // Convert a NativeViewId to a NativeView. | 88 // Convert a NativeViewId to a NativeView. |
89 // On Windows, these are both HWNDS so it's just a cast. | 89 // On Windows, these are both HWNDS so it's just a cast. |
90 // On Mac, for now, we pass the NSView pointer into the renderer | 90 // On Mac, for now, we pass the NSView pointer into the renderer |
91 // On Linux we use an opaque id | 91 // On Linux we use an opaque id |
92 #if defined(OS_WIN) || defined(OS_MACOSX) | 92 #if defined(OS_WIN) || defined(OS_MACOSX) |
93 static inline NativeView NativeViewFromId(NativeViewId id) { | 93 static inline NativeView NativeViewFromId(NativeViewId id) { |
94 return reinterpret_cast<NativeView>(id); | 94 return reinterpret_cast<NativeView>(id); |
95 } | 95 } |
96 #elif defined(OS_LINUX) | 96 #elif defined(OS_LINUX) || defined(OS_OPENBSD) |
97 // A NativeView on Linux is a GtkWidget*. However, we can't go directly from an | 97 // A NativeView on Linux is a GtkWidget*. However, we can't go directly from an |
98 // X window ID to a GtkWidget. Thus, functions which handle NativeViewIds from | 98 // X window ID to a GtkWidget. Thus, functions which handle NativeViewIds from |
99 // the renderer have to use Xlib. This is fine since these functions are | 99 // the renderer have to use Xlib. This is fine since these functions are |
100 // generally performed on the BACKGROUND_X thread which can't use GTK anyway. | 100 // generally performed on the BACKGROUND_X thread which can't use GTK anyway. |
101 | 101 |
102 #define NativeViewFromId(x) NATIVE_VIEW_FROM_ID_NOT_AVAILIBLE_ON_LINUX | 102 #define NativeViewFromId(x) NATIVE_VIEW_FROM_ID_NOT_AVAILIBLE_ON_LINUX |
103 | 103 |
104 #endif // defined(OS_LINUX) | 104 #endif // defined(OS_LINUX) || defined(OS_OPENBSD) |
105 | 105 |
106 // Convert a NativeView to a NativeViewId. See the comments above | 106 // Convert a NativeView to a NativeViewId. See the comments above |
107 // NativeViewFromId. | 107 // NativeViewFromId. |
108 #if defined(OS_WIN) || defined(OS_MACOSX) | 108 #if defined(OS_WIN) || defined(OS_MACOSX) |
109 static inline NativeViewId IdFromNativeView(NativeView view) { | 109 static inline NativeViewId IdFromNativeView(NativeView view) { |
110 return reinterpret_cast<NativeViewId>(view); | 110 return reinterpret_cast<NativeViewId>(view); |
111 } | 111 } |
112 #elif defined(OS_LINUX) | 112 #elif defined(OS_LINUX) || defined(OS_OPENBSD) |
113 // Not inlined because it involves pulling too many headers. | 113 // Not inlined because it involves pulling too many headers. |
114 NativeViewId IdFromNativeView(NativeView view); | 114 NativeViewId IdFromNativeView(NativeView view); |
115 #endif // defined(OS_LINUX) | 115 #endif // defined(OS_LINUX) || defined(OS_OPENBSD) |
116 | 116 |
117 } // namespace gfx | 117 } // namespace gfx |
118 | 118 |
119 #endif // BASE_GFX_NATIVE_WIDGET_TYPES_H_ | 119 #endif // BASE_GFX_NATIVE_WIDGET_TYPES_H_ |
OLD | NEW |