]> Pileus Git - ~andy/gtk/blob - gdk/quartz/gdkprivate-quartz.h
958d79e63f82387097b9ec62c0b4ea3007f5c382
[~andy/gtk] / gdk / quartz / gdkprivate-quartz.h
1 /* gdkwindow-quartz.c
2  *
3  * Copyright (C) 2005-2007 Imendio AB
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the
17  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18  * Boston, MA 02111-1307, USA.
19  */
20
21 #ifndef __GDK_PRIVATE_QUARTZ_H__
22 #define __GDK_PRIVATE_QUARTZ_H__
23
24 #define GDK_QUARTZ_ALLOC_POOL NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]
25 #define GDK_QUARTZ_RELEASE_POOL [pool release]
26
27 #include <gdk/gdkprivate.h>
28 #include <gdk/quartz/gdkwindow-quartz.h>
29 #include <gdk/quartz/gdkdnd-quartz.h>
30 #include <gdk/quartz/gdkquartz.h>
31
32 #include <gdk/gdk.h>
33
34 #include "gdkinternals.h"
35
36 #include "config.h"
37
38 extern GdkDisplay *_gdk_display;
39 extern GdkScreen *_gdk_screen;
40 extern GdkWindow *_gdk_root;
41
42 extern GdkDragContext *_gdk_quartz_drag_source_context;
43
44 #define GDK_WINDOW_IS_QUARTZ(win)        (GDK_IS_WINDOW_IMPL_QUARTZ (((GdkWindow *)win)->impl))
45
46 /* Initialization */
47 void _gdk_windowing_update_window_sizes     (GdkScreen *screen);
48 void _gdk_windowing_window_init             (void);
49 void _gdk_quartz_events_init                (void);
50 void _gdk_quartz_input_init                 (void);
51 void _gdk_quartz_event_loop_init            (void);
52
53 /* GC */
54 typedef enum {
55   GDK_QUARTZ_CONTEXT_STROKE = 1 << 0,
56   GDK_QUARTZ_CONTEXT_FILL   = 1 << 1,
57   GDK_QUARTZ_CONTEXT_TEXT   = 1 << 2
58 } GdkQuartzContextValuesMask;
59
60 /* Window */
61 gboolean    _gdk_quartz_window_is_ancestor          (GdkWindow *ancestor,
62                                                      GdkWindow *window);
63 void       _gdk_quartz_window_gdk_xy_to_xy          (gint       gdk_x,
64                                                      gint       gdk_y,
65                                                      gint      *ns_x,
66                                                      gint      *ns_y);
67 void       _gdk_quartz_window_xy_to_gdk_xy          (gint       ns_x,
68                                                      gint       ns_y,
69                                                      gint      *gdk_x,
70                                                      gint      *gdk_y);
71 void       _gdk_quartz_window_nspoint_to_gdk_xy     (NSPoint    point,
72                                                      gint      *x,
73                                                      gint      *y);
74 GdkWindow *_gdk_quartz_window_find_child            (GdkWindow *window,
75                                                      gint       x,
76                                                      gint       y,
77                                                      gboolean   get_toplevel);
78 void       _gdk_quartz_window_attach_to_parent      (GdkWindow *window);
79 void       _gdk_quartz_window_detach_from_parent    (GdkWindow *window);
80 void       _gdk_quartz_window_did_become_main       (GdkWindow *window);
81 void       _gdk_quartz_window_did_resign_main       (GdkWindow *window);
82 void       _gdk_quartz_window_debug_highlight       (GdkWindow *window,
83                                                      gint       number);
84
85 void       _gdk_quartz_window_set_needs_display_in_region (GdkWindow    *window,
86                                                            cairo_region_t    *region);
87
88 void       _gdk_quartz_window_update_position           (GdkWindow    *window);
89
90 /* Events */
91 typedef enum {
92   GDK_QUARTZ_EVENT_SUBTYPE_EVENTLOOP
93 } GdkQuartzEventSubType;
94
95 void         _gdk_quartz_events_update_focus_window    (GdkWindow *new_window,
96                                                         gboolean   got_focus);
97 void         _gdk_quartz_events_send_map_event         (GdkWindow *window);
98 GdkEventMask _gdk_quartz_events_get_current_event_mask (void);
99
100 void         _gdk_quartz_events_send_enter_notify_event (GdkWindow *window);
101
102 /* Event loop */
103 gboolean   _gdk_quartz_event_loop_check_pending (void);
104 NSEvent *  _gdk_quartz_event_loop_get_pending   (void);
105 void       _gdk_quartz_event_loop_release_event (NSEvent *event);
106
107 /* Keys */
108 GdkEventType _gdk_quartz_keys_event_type  (NSEvent   *event);
109 gboolean     _gdk_quartz_keys_is_modifier (guint      keycode);
110
111 /* Geometry */
112 void        _gdk_quartz_window_scroll      (GdkWindow       *window,
113                                             gint             dx,
114                                             gint             dy);
115 void        _gdk_quartz_window_translate   (GdkWindow       *window,
116                                             cairo_region_t  *area,
117                                             gint             dx,
118                                             gint             dy);
119 gboolean    _gdk_quartz_window_queue_antiexpose  (GdkWindow *window,
120                                                   cairo_region_t *area);
121
122 void        _gdk_quartz_window_set_startup_id    (GdkWindow   *window,
123                                                   const gchar *startup_id);
124 void        _gdk_quartz_window_register_dnd      (GdkWindow   *window);
125 GdkDragContext * _gdk_quartz_window_drag_begin   (GdkWindow   *window,
126                                                   GdkDevice   *device,
127                                                   GList       *targets);
128
129
130 void     _gdk_quartz_display_sync         (GdkDisplay *display);
131 void     _gdk_quartz_display_flush        (GdkDisplay *display);
132 void     _gdk_quartz_display_queue_events (GdkDisplay *display);
133 gboolean _gdk_quartz_display_has_pending  (GdkDisplay *display);
134
135 GdkCursor *_gdk_quartz_display_get_cursor_for_type     (GdkDisplay    *display,
136                                                         GdkCursorType  type);
137 GdkCursor *_gdk_quartz_display_get_cursor_for_name     (GdkDisplay    *display,
138                                                         const gchar   *name);
139 GdkCursor *_gdk_quartz_display_get_cursor_for_pixbuf   (GdkDisplay    *display,
140                                                         GdkPixbuf     *pixbuf,
141                                                         gint           x,
142                                                         gint           y);
143 gboolean   _gdk_quartz_display_supports_cursor_alpha   (GdkDisplay    *display);
144 gboolean   _gdk_quartz_display_supports_cursor_color   (GdkDisplay    *display);
145 void       _gdk_quartz_display_get_default_cursor_size (GdkDisplay *display,
146                                                         guint      *width,
147                                                         guint      *height);
148 void       _gdk_quartz_display_get_maximal_cursor_size (GdkDisplay *display,
149                                                         guint      *width,
150                                                         guint      *height);
151 void       _gdk_quartz_display_before_process_all_updates (GdkDisplay *display);
152 void       _gdk_quartz_display_after_process_all_updates  (GdkDisplay *display);
153 void       _gdk_quartz_display_notify_startup_complete    (GdkDisplay *display,
154                                                            const gchar *id);
155 void       _gdk_quartz_display_event_data_copy (GdkDisplay     *display,
156                                                 const GdkEvent *src,
157                                                 GdkEvent       *dst);
158 void       _gdk_quartz_display_event_data_free (GdkDisplay     *display,
159                                                 GdkEvent       *event);
160 void       _gdk_quartz_display_create_window_impl (GdkDisplay    *display,
161                                                    GdkWindow     *window,
162                                                    GdkWindow     *real_parent,
163                                                    GdkScreen     *screen,
164                                                    GdkEventMask   event_mask,
165                                                    GdkWindowAttr *attributes,
166                                                    gint           attributes_mask);
167 GdkKeymap * _gdk_quartz_display_get_keymap (GdkDisplay *display);
168
169
170 GdkDisplay *    _gdk_quartz_display_open (const gchar *name);
171
172 GdkNativeWindow _gdk_quartz_display_get_drag_protocol     (GdkDisplay      *display,
173                                                            GdkNativeWindow  xid,
174                                                            GdkDragProtocol *protocol,
175                                                            guint           *version);
176
177
178 gboolean    _gdk_quartz_display_send_client_message       (GdkDisplay      *display,
179                                                            GdkEvent        *event,
180                                                            GdkNativeWindow  winid);
181 void        _gdk_quartz_display_add_client_message_filter (GdkDisplay      *display,
182                                                            GdkAtom          message_type,
183                                                            GdkFilterFunc    func,
184                                                            gpointer         data);
185
186 GdkVisual *   _gdk_quartz_screen_get_rgba_visual            (GdkScreen      *screen);
187 GdkVisual *   _gdk_quartz_screen_get_system_visual          (GdkScreen      *screen);
188 gint          _gdk_quartz_screen_visual_get_best_depth      (GdkScreen      *screen);
189 GdkVisualType _gdk_quartz_screen_visual_get_best_type       (GdkScreen      *screen);
190 GdkVisual *   _gdk_quartz_screen_get_system_visual          (GdkScreen      *screen);
191 GdkVisual*    _gdk_quartz_screen_visual_get_best            (GdkScreen      *screen);
192 GdkVisual*    _gdk_quartz_screen_visual_get_best_with_depth (GdkScreen      *screen,
193                                                              gint            depth);
194 GdkVisual*    _gdk_quartz_screen_visual_get_best_with_type  (GdkScreen      *screen,
195                                                              GdkVisualType   visual_type);
196 GdkVisual*    _gdk_quartz_screen_visual_get_best_with_both  (GdkScreen      *screen,
197                                                              gint            depth,
198                                                              GdkVisualType   visual_type);
199 void          _gdk_quartz_screen_query_depths               (GdkScreen      *screen,
200                                                              gint          **depths,
201                                                              gint           *count);
202 void          _gdk_quartz_screen_query_visual_types         (GdkScreen      *screen,
203                                                              GdkVisualType **visual_types,
204                                                              gint           *count);
205 void          _gdk_quartz_screen_init_visuals               (GdkScreen      *screen);
206 GList *       _gdk_quartz_screen_list_visuals               (GdkScreen      *screen);
207
208
209 void        _gdk_quartz_screen_broadcast_client_message (GdkScreen   *screen,
210                                                          GdkEvent    *event);
211 gboolean    _gdk_quartz_screen_get_setting              (GdkScreen   *screen,
212                                                          const gchar *name,
213                                                          GValue      *value);
214
215 GdkScreen  *_gdk_quartz_screen_new                      (void);
216
217 GdkAtom _gdk_quartz_display_manager_atom_intern   (GdkDisplayManager *manager,
218                                                    const gchar       *atom_name,
219                                                    gboolean           copy_name);
220 gchar * _gdk_quartz_display_manager_get_atom_name (GdkDisplayManager *manager,
221                                                    GdkAtom            atom);
222
223 void    _gdk_quartz_display_manager_add_display    (GdkDisplayManager *manager,
224                                                     GdkDisplay        *display);
225 void    _gdk_quartz_display_manager_remove_display (GdkDisplayManager *manager,
226                                                     GdkDisplay        *display);
227
228 void     _gdk_quartz_window_sync_rendering    (GdkWindow       *window);
229 gboolean _gdk_quartz_window_simulate_key      (GdkWindow       *window,
230                                                gint             x,
231                                                gint             y,
232                                                guint            keyval,
233                                                GdkModifierType  modifiers,
234                                                GdkEventType     key_pressrelease);
235 gboolean _gdk_quartz_window_simulate_button   (GdkWindow       *window,
236                                                gint             x,
237                                                gint             y,
238                                                guint            button,
239                                                GdkModifierType  modifiers,
240                                                GdkEventType     button_pressrelease);
241
242 gboolean _gdk_quartz_window_get_property      (GdkWindow    *window,
243                                                GdkAtom       property,
244                                                GdkAtom       type,
245                                                gulong        offset,
246                                                gulong        length,
247                                                gint          pdelete,
248                                                GdkAtom      *actual_property_type,
249                                                gint         *actual_format_type,
250                                                gint         *actual_length,
251                                                guchar      **data);
252 void     _gdk_quartz_window_change_property   (GdkWindow    *window,
253                                                GdkAtom       property,
254                                                GdkAtom       type,
255                                                gint          format,
256                                                GdkPropMode   mode,
257                                                const guchar *data,
258                                                gint          nelements);
259 void     _gdk_quartz_window_delete_property   (GdkWindow    *window,
260                                                GdkAtom       property);
261
262 gboolean    _gdk_quartz_display_set_selection_owner (GdkDisplay *display,
263                                                      GdkWindow  *owner,
264                                                      GdkAtom     selection,
265                                                      guint32     time,
266                                                      gboolean    send_event);
267 GdkWindow * _gdk_quartz_display_get_selection_owner (GdkDisplay *display,
268                                                      GdkAtom     selection);
269 void        _gdk_quartz_display_send_selection_notify (GdkDisplay       *display,
270                                                        GdkNativeWindow  requestor,
271                                                        GdkAtom          selection,
272                                                        GdkAtom          target,
273                                                        GdkAtom          property,
274                                                        guint32          time);
275 gint        _gdk_quartz_display_get_selection_property (GdkDisplay     *display,
276                                                         GdkWindow      *requestor,
277                                                         guchar        **data,
278                                                         GdkAtom        *ret_type,
279                                                         gint           *ret_format);
280 void        _gdk_quartz_display_convert_selection      (GdkDisplay     *display,
281                                                         GdkWindow      *requestor,
282                                                         GdkAtom         selection,
283                                                         GdkAtom         target,
284                                                         guint32         time);
285 gint        _gdk_quartz_display_text_property_to_utf8_list (GdkDisplay     *display,
286                                                             GdkAtom         encoding,
287                                                             gint            format,
288                                                             const guchar   *text,
289                                                             gint            length,
290                                                             gchar        ***list);
291 gchar *     _gdk_quartz_display_utf8_to_string_target      (GdkDisplay     *displayt,
292                                                             const gchar    *str);
293
294
295 #endif /* __GDK_PRIVATE_QUARTZ_H__ */