wbemprox: Add a partial implementation of Win32_DiskPartition.
[wine.git] / dlls / winemac.drv / macdrv_cocoa.h
blob67a5e54c0eaedf55fae5645a930b01bef41df627
1 /*
2 * MACDRV Cocoa interface declarations
4 * Copyright 2011, 2012, 2013 Ken Thomases for CodeWeavers Inc.
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
21 /* This header serves as a C interface between the Wine parts of MACDRV
22 * and the Objective-C parts. It should restrict itself to C and the C-based
23 * Mac APIs, avoiding both Wine and Objective-C/Cocoa features, so that it can
24 * be included by both sides without contaminating either.
27 #ifndef __WINE_MACDRV_COCOA_H
28 #define __WINE_MACDRV_COCOA_H
31 #define GetCurrentProcess MacGetCurrentProcess
32 #define GetCurrentThread MacGetCurrentThread
33 #define LoadResource MacLoadResource
34 #define AnimatePalette MacAnimatePalette
35 #define EqualRgn MacEqualRgn
36 #define FillRgn MacFillRgn
37 #define FrameRgn MacFrameRgn
38 #define GetPixel MacGetPixel
39 #define InvertRgn MacInvertRgn
40 #define LineTo MacLineTo
41 #define OffsetRgn MacOffsetRgn
42 #define PaintRgn MacPaintRgn
43 #define Polygon MacPolygon
44 #define ResizePalette MacResizePalette
45 #define SetRectRgn MacSetRectRgn
46 #define EqualRect MacEqualRect
47 #define FillRect MacFillRect
48 #define FrameRect MacFrameRect
49 #define GetCursor MacGetCursor
50 #define InvertRect MacInvertRect
51 #define OffsetRect MacOffsetRect
52 #define PtInRect MacPtInRect
53 #define SetCursor MacSetCursor
54 #define SetRect MacSetRect
55 #define ShowCursor MacShowCursor
56 #define UnionRect MacUnionRect
58 #include <ApplicationServices/ApplicationServices.h>
60 #undef GetCurrentProcess
61 #undef GetCurrentThread
62 #undef LoadResource
63 #undef AnimatePalette
64 #undef EqualRgn
65 #undef FillRgn
66 #undef FrameRgn
67 #undef GetPixel
68 #undef InvertRgn
69 #undef LineTo
70 #undef OffsetRgn
71 #undef PaintRgn
72 #undef Polygon
73 #undef ResizePalette
74 #undef SetRectRgn
75 #undef EqualRect
76 #undef FillRect
77 #undef FrameRect
78 #undef GetCursor
79 #undef InvertRect
80 #undef OffsetRect
81 #undef PtInRect
82 #undef SetCursor
83 #undef SetRect
84 #undef ShowCursor
85 #undef UnionRect
86 #undef DPRINTF
88 #include <pthread.h>
91 #ifndef DECLSPEC_HIDDEN
92 # if defined(__MSC_VER) || defined(__MINGW32__) || defined(__CYGWIN__)
93 # define DECLSPEC_HIDDEN
94 # elif defined(__GNUC__) && ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)))
95 # define DECLSPEC_HIDDEN __attribute__((visibility ("hidden")))
96 # else
97 # define DECLSPEC_HIDDEN
98 # endif
99 #endif
102 typedef struct macdrv_opaque_window* macdrv_window;
103 typedef struct macdrv_opaque_event_queue* macdrv_event_queue;
104 struct macdrv_event;
106 struct macdrv_display {
107 CGDirectDisplayID displayID;
108 CGRect frame;
109 CGRect work_frame;
113 /* main */
114 extern int macdrv_err_on;
116 extern int macdrv_start_cocoa_app(unsigned long long tickcount) DECLSPEC_HIDDEN;
117 extern void macdrv_window_rejected_focus(const struct macdrv_event *event) DECLSPEC_HIDDEN;
118 extern void macdrv_beep(void) DECLSPEC_HIDDEN;
121 /* cursor */
122 extern void macdrv_set_cursor(CFStringRef name, CFArrayRef frames) DECLSPEC_HIDDEN;
123 extern int macdrv_get_cursor_position(CGPoint *pos) DECLSPEC_HIDDEN;
124 extern int macdrv_set_cursor_position(CGPoint pos) DECLSPEC_HIDDEN;
125 extern int macdrv_clip_cursor(CGRect rect) DECLSPEC_HIDDEN;
128 /* display */
129 extern int macdrv_get_displays(struct macdrv_display** displays, int* count) DECLSPEC_HIDDEN;
130 extern void macdrv_free_displays(struct macdrv_display* displays) DECLSPEC_HIDDEN;
131 extern int macdrv_set_display_mode(const struct macdrv_display* display,
132 CGDisplayModeRef display_mode) DECLSPEC_HIDDEN;
135 /* event */
136 enum {
137 APP_DEACTIVATED,
138 DISPLAYS_CHANGED,
139 KEY_PRESS,
140 KEY_RELEASE,
141 KEYBOARD_CHANGED,
142 MOUSE_BUTTON,
143 MOUSE_MOVED,
144 MOUSE_MOVED_ABSOLUTE,
145 MOUSE_SCROLL,
146 WINDOW_CLOSE_REQUESTED,
147 WINDOW_DID_MINIMIZE,
148 WINDOW_DID_UNMINIMIZE,
149 WINDOW_FRAME_CHANGED,
150 WINDOW_GOT_FOCUS,
151 WINDOW_LOST_FOCUS,
152 NUM_EVENT_TYPES
155 typedef uint32_t macdrv_event_mask;
157 typedef struct macdrv_event {
158 int type;
159 macdrv_window window;
160 union {
161 struct {
162 int activating;
163 } displays_changed;
164 struct {
165 CGKeyCode keycode;
166 CGEventFlags modifiers;
167 unsigned long time_ms;
168 } key;
169 struct {
170 CFDataRef uchr;
171 CGEventSourceKeyboardType keyboard_type;
172 int iso_keyboard;
173 } keyboard_changed;
174 struct {
175 int button;
176 int pressed;
177 int x;
178 int y;
179 unsigned long time_ms;
180 } mouse_button;
181 struct {
182 int x;
183 int y;
184 unsigned long time_ms;
185 } mouse_moved;
186 struct {
187 int x_scroll;
188 int y_scroll;
189 int x;
190 int y;
191 unsigned long time_ms;
192 } mouse_scroll;
193 struct {
194 CGRect frame;
195 } window_frame_changed;
196 struct {
197 unsigned long serial;
198 void *tried_windows;
199 } window_got_focus;
201 } macdrv_event;
203 static inline macdrv_event_mask event_mask_for_type(int type)
205 return ((macdrv_event_mask)1 << type);
208 extern macdrv_event_queue macdrv_create_event_queue(void) DECLSPEC_HIDDEN;
209 extern void macdrv_destroy_event_queue(macdrv_event_queue queue) DECLSPEC_HIDDEN;
210 extern int macdrv_get_event_queue_fd(macdrv_event_queue queue) DECLSPEC_HIDDEN;
212 extern int macdrv_get_event_from_queue(macdrv_event_queue queue,
213 macdrv_event_mask mask, macdrv_event *event) DECLSPEC_HIDDEN;
214 extern void macdrv_cleanup_event(macdrv_event *event) DECLSPEC_HIDDEN;
217 /* window */
218 struct macdrv_window_features {
219 unsigned int title_bar:1;
220 unsigned int close_button:1;
221 unsigned int minimize_button:1;
222 unsigned int resizable:1;
223 unsigned int utility:1;
224 unsigned int shadow:1;
227 struct macdrv_window_state {
228 unsigned int disabled:1;
229 unsigned int no_activate:1;
230 unsigned int floating:1;
231 unsigned int excluded_by_expose:1;
232 unsigned int excluded_by_cycle:1;
233 unsigned int minimized:1;
236 extern macdrv_window macdrv_create_cocoa_window(const struct macdrv_window_features* wf,
237 CGRect frame, void* hwnd, macdrv_event_queue queue) DECLSPEC_HIDDEN;
238 extern void macdrv_destroy_cocoa_window(macdrv_window w) DECLSPEC_HIDDEN;
239 extern void* macdrv_get_window_hwnd(macdrv_window w) DECLSPEC_HIDDEN;
240 extern void macdrv_set_cocoa_window_features(macdrv_window w,
241 const struct macdrv_window_features* wf) DECLSPEC_HIDDEN;
242 extern void macdrv_set_cocoa_window_state(macdrv_window w,
243 const struct macdrv_window_state* state) DECLSPEC_HIDDEN;
244 extern void macdrv_set_cocoa_window_title(macdrv_window w, const UniChar* title,
245 size_t length) DECLSPEC_HIDDEN;
246 extern int macdrv_order_cocoa_window(macdrv_window w, macdrv_window prev,
247 macdrv_window next) DECLSPEC_HIDDEN;
248 extern void macdrv_hide_cocoa_window(macdrv_window w) DECLSPEC_HIDDEN;
249 extern int macdrv_set_cocoa_window_frame(macdrv_window w, const CGRect* new_frame) DECLSPEC_HIDDEN;
250 extern void macdrv_get_cocoa_window_frame(macdrv_window w, CGRect* out_frame) DECLSPEC_HIDDEN;
251 extern void macdrv_set_cocoa_parent_window(macdrv_window w, macdrv_window parent) DECLSPEC_HIDDEN;
252 extern void macdrv_set_window_surface(macdrv_window w, void *surface, pthread_mutex_t *mutex) DECLSPEC_HIDDEN;
253 extern CGImageRef create_surface_image(void *window_surface, CGRect *rect, int copy_data) DECLSPEC_HIDDEN;
254 extern int get_surface_region_rects(void *window_surface, const CGRect **rects, int *count) DECLSPEC_HIDDEN;
255 extern void macdrv_window_needs_display(macdrv_window w, CGRect rect) DECLSPEC_HIDDEN;
256 extern void macdrv_set_window_shape(macdrv_window w, const CGRect *rects, int count) DECLSPEC_HIDDEN;
257 extern void macdrv_set_window_alpha(macdrv_window w, CGFloat alpha) DECLSPEC_HIDDEN;
258 extern void macdrv_set_window_color_key(macdrv_window w, CGFloat keyRed, CGFloat keyGreen,
259 CGFloat keyBlue) DECLSPEC_HIDDEN;
260 extern void macdrv_clear_window_color_key(macdrv_window w) DECLSPEC_HIDDEN;
261 extern void macdrv_window_use_per_pixel_alpha(macdrv_window w, int use_per_pixel_alpha) DECLSPEC_HIDDEN;
262 extern void macdrv_give_cocoa_window_focus(macdrv_window w) DECLSPEC_HIDDEN;
265 /* keyboard */
266 extern CFDataRef macdrv_copy_keyboard_layout(CGEventSourceKeyboardType* keyboard_type, int* is_iso) DECLSPEC_HIDDEN;
268 #endif /* __WINE_MACDRV_COCOA_H */