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

Side by Side Diff: gfx/native_widget_types.h

Issue 6246027: Move src/gfx/ to src/ui/gfx... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 10 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 | Annotate | Revision Log
« no previous file with comments | « gfx/native_theme_win_unittest.cc ('k') | gfx/native_widget_types_gtk.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 GFX_NATIVE_WIDGET_TYPES_H_ 5 #ifndef GFX_NATIVE_WIDGET_TYPES_H_
6 #define GFX_NATIVE_WIDGET_TYPES_H_ 6 #define GFX_NATIVE_WIDGET_TYPES_H_
7 #pragma once 7 #pragma once
8 8
9 #include "base/basictypes.h" 9 #include "ui/gfx/native_widget_types.h"
10 #include "build/build_config.h" 10 // TODO(sail): remove this file once all includes have been updated.
11
12 // This file provides cross platform typedefs for native widget types.
13 // NativeWindow: this is a handle to a native, top-level window
14 // NativeView: this is a handle to a native UI element. It may be the
15 // same type as a NativeWindow on some platforms.
16 // NativeViewId: Often, in our cross process model, we need to pass around a
17 // reference to a "window". This reference will, say, be echoed back from a
18 // renderer to the browser when it wishes to query its size. On Windows we
19 // use an HWND for this.
20 //
21 // As a rule of thumb - if you're in the renderer, you should be dealing
22 // with NativeViewIds. This should remind you that you shouldn't be doing
23 // direct operations on platform widgets from the renderer process.
24 //
25 // If you're in the browser, you're probably dealing with NativeViews,
26 // unless you're in the IPC layer, which will be translating between
27 // NativeViewIds from the renderer and NativeViews.
28 //
29 // NativeEditView: a handle to a native edit-box. The Mac folks wanted this
30 // specific typedef.
31 //
32 // NativeImage: The platform-specific image type used for drawing UI elements
33 // in the browser.
34 //
35 // The name 'View' here meshes with OS X where the UI elements are called
36 // 'views' and with our Chrome UI code where the elements are also called
37 // 'views'.
38
39 #if defined(OS_WIN)
40 #include <windows.h> // NOLINT
41 typedef struct HFONT__* HFONT;
42 #elif defined(OS_MACOSX)
43 struct CGContext;
44 #ifdef __OBJC__
45 @class NSFont;
46 @class NSImage;
47 @class NSView;
48 @class NSWindow;
49 @class NSTextField;
50 #else
51 class NSFont;
52 class NSImage;
53 class NSView;
54 class NSWindow;
55 class NSTextField;
56 #endif // __OBJC__
57 #elif defined(TOOLKIT_USES_GTK)
58 typedef struct _PangoFontDescription PangoFontDescription;
59 typedef struct _GdkCursor GdkCursor;
60 typedef struct _GdkPixbuf GdkPixbuf;
61 typedef struct _GdkRegion GdkRegion;
62 typedef struct _GtkWidget GtkWidget;
63 typedef struct _GtkWindow GtkWindow;
64 typedef struct _cairo cairo_t;
65 #endif
66 class SkBitmap;
67
68 namespace gfx {
69
70 #if defined(OS_WIN)
71 typedef HFONT NativeFont;
72 typedef HWND NativeView;
73 typedef HWND NativeWindow;
74 typedef HWND NativeEditView;
75 typedef HDC NativeDrawingContext;
76 typedef HCURSOR NativeCursor;
77 typedef HMENU NativeMenu;
78 typedef HRGN NativeRegion;
79 #elif defined(OS_MACOSX)
80 typedef NSFont* NativeFont;
81 typedef NSView* NativeView;
82 typedef NSWindow* NativeWindow;
83 typedef NSTextField* NativeEditView;
84 typedef CGContext* NativeDrawingContext;
85 typedef void* NativeCursor;
86 typedef void* NativeMenu;
87 #elif defined(USE_X11)
88 typedef PangoFontDescription* NativeFont;
89 typedef GtkWidget* NativeView;
90 typedef GtkWindow* NativeWindow;
91 typedef GtkWidget* NativeEditView;
92 typedef cairo_t* NativeDrawingContext;
93 typedef GdkCursor* NativeCursor;
94 typedef GtkWidget* NativeMenu;
95 typedef GdkRegion* NativeRegion;
96 #endif
97
98 #if defined(OS_MACOSX)
99 typedef NSImage NativeImageType;
100 #elif defined(OS_LINUX) && !defined(TOOLKIT_VIEWS)
101 typedef GdkPixbuf NativeImageType;
102 #else
103 typedef SkBitmap NativeImageType;
104 #endif
105 typedef NativeImageType* NativeImage;
106
107 // Note: for test_shell we're packing a pointer into the NativeViewId. So, if
108 // you make it a type which is smaller than a pointer, you have to fix
109 // test_shell.
110 //
111 // See comment at the top of the file for usage.
112 typedef intptr_t NativeViewId;
113
114 #if defined(OS_WIN)
115 // Convert a NativeViewId to a NativeView.
116 //
117 // On Windows, we pass an HWND into the renderer. As stated above, the renderer
118 // should not be performing operations on the view.
119 static inline NativeView NativeViewFromId(NativeViewId id) {
120 return reinterpret_cast<NativeView>(id);
121 }
122 #define NativeViewFromIdInBrowser(x) NativeViewFromId(x)
123 #elif defined(OS_POSIX)
124 // On Mac and Linux, a NativeView is a pointer to an object, and is useless
125 // outside the process in which it was created. NativeViewFromId should only be
126 // used inside the appropriate platform ifdef outside of the browser.
127 // (NativeViewFromIdInBrowser can be used everywhere in the browser.) If your
128 // cross-platform design involves a call to NativeViewFromId from outside the
129 // browser it will never work on Mac or Linux and is fundamentally broken.
130
131 // Please do not call this from outside the browser. It won't work; the name
132 // should give you a subtle hint.
133 static inline NativeView NativeViewFromIdInBrowser(NativeViewId id) {
134 return reinterpret_cast<NativeView>(id);
135 }
136 #endif // defined(OS_POSIX)
137
138 // Convert a NativeView to a NativeViewId. See the comments at the top of
139 // this file.
140 #if defined(OS_WIN) || defined(OS_MACOSX)
141 static inline NativeViewId IdFromNativeView(NativeView view) {
142 return reinterpret_cast<NativeViewId>(view);
143 }
144 #elif defined(USE_X11)
145 // Not inlined because it involves pulling too many headers.
146 NativeViewId IdFromNativeView(NativeView view);
147 #endif // defined(USE_X11)
148
149
150 // PluginWindowHandle is an abstraction wrapping "the types of windows
151 // used by NPAPI plugins". On Windows it's an HWND, on X it's an X
152 // window id.
153 #if defined(OS_WIN)
154 typedef HWND PluginWindowHandle;
155 const PluginWindowHandle kNullPluginWindow = NULL;
156 #elif defined(USE_X11)
157 typedef unsigned long PluginWindowHandle;
158 const PluginWindowHandle kNullPluginWindow = 0;
159 #else
160 // On OS X we don't have windowed plugins.
161 // We use a NULL/0 PluginWindowHandle in shared code to indicate there
162 // is no window present, so mirror that behavior here.
163 //
164 // The GPU plugin is currently an exception to this rule. As of this
165 // writing it uses some NPAPI infrastructure, and minimally we need
166 // to identify the plugin instance via this window handle. When the
167 // GPU plugin becomes a full-on GPU process, this typedef can be
168 // returned to a bool. For now we use a type large enough to hold a
169 // pointer on 64-bit architectures in case we need this capability.
170 typedef uint64 PluginWindowHandle;
171 const PluginWindowHandle kNullPluginWindow = 0;
172 #endif
173
174 } // namespace gfx
175 11
176 #endif // GFX_NATIVE_WIDGET_TYPES_H_ 12 #endif // GFX_NATIVE_WIDGET_TYPES_H_
OLDNEW
« no previous file with comments | « gfx/native_theme_win_unittest.cc ('k') | gfx/native_widget_types_gtk.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698