3 * Copyright (C) 2005-2007 Imendio AB
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.
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.
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.
21 #ifndef __GDK_PRIVATE_QUARTZ_H__
22 #define __GDK_PRIVATE_QUARTZ_H__
24 #define GDK_QUARTZ_ALLOC_POOL NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]
25 #define GDK_QUARTZ_RELEASE_POOL [pool release]
27 #include <gdk/gdkprivate.h>
28 #include <gdk/quartz/gdkpixmap-quartz.h>
29 #include <gdk/quartz/gdkwindow-quartz.h>
33 #include "gdkinternals.h"
37 #define GDK_TYPE_GC_QUARTZ (_gdk_gc_quartz_get_type ())
38 #define GDK_GC_QUARTZ(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_GC_QUARTZ, GdkGCQuartz))
39 #define GDK_GC_QUARTZ_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_GC_QUARTZ, GdkGCQuartzClass))
40 #define GDK_IS_GC_QUARTZ(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_GC_QUARTZ))
41 #define GDK_IS_GC_QUARTZ_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_GC_QUARTZ))
42 #define GDK_GC_QUARTZ_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_GC_QUARTZ, GdkGCQuartzClass))
44 #define GDK_DRAG_CONTEXT_PRIVATE(context) ((GdkDragContextPrivate *) GDK_DRAG_CONTEXT (context)->windowing_data)
46 typedef struct _GdkCursorPrivate GdkCursorPrivate;
47 typedef struct _GdkGCQuartz GdkGCQuartz;
48 typedef struct _GdkGCQuartzClass GdkGCQuartzClass;
49 typedef struct _GdkDragContextPrivate GdkDragContextPrivate;
53 GdkGC parent_instance;
57 GdkSubwindowMode subwindow_mode;
58 gboolean graphics_exposures;
60 gboolean have_clip_region;
61 gboolean have_clip_mask;
65 GdkLineStyle line_style;
66 GdkCapStyle cap_style;
67 GdkJoinStyle join_style;
73 CGPatternRef ts_pattern;
78 struct _GdkGCQuartzClass
80 GdkGCClass parent_class;
83 struct _GdkVisualClass
85 GObjectClass parent_class;
88 struct _GdkCursorPrivate
94 struct _GdkDragContextPrivate
96 id <NSDraggingInfo> dragging_info;
99 extern GdkDisplay *_gdk_display;
100 extern GdkScreen *_gdk_screen;
101 extern GdkWindow *_gdk_root;
103 extern GdkDragContext *_gdk_quartz_drag_source_context;
106 void _gdk_windowing_window_init (void);
107 void _gdk_events_init (void);
108 void _gdk_visual_init (void);
109 void _gdk_input_init (void);
110 void _gdk_quartz_event_loop_init (void);
114 GDK_QUARTZ_CONTEXT_STROKE = 1 << 0,
115 GDK_QUARTZ_CONTEXT_FILL = 1 << 1,
116 GDK_QUARTZ_CONTEXT_TEXT = 1 << 2
117 } GdkQuartzContextValuesMask;
119 GType _gdk_gc_quartz_get_type (void);
120 GdkGC *_gdk_quartz_gc_new (GdkDrawable *drawable,
122 GdkGCValuesMask values_mask);
123 void _gdk_quartz_gc_update_cg_context (GdkGC *gc,
124 GdkDrawable *drawable,
125 CGContextRef context,
126 GdkQuartzContextValuesMask mask);
129 void _gdk_quartz_colormap_get_rgba_from_pixel (GdkColormap *colormap,
137 gboolean _gdk_quartz_window_is_ancestor (GdkWindow *ancestor,
139 gint _gdk_quartz_window_get_inverted_screen_y (gint y);
140 GdkWindow *_gdk_quartz_window_find_child (GdkWindow *window,
143 void _gdk_quartz_window_attach_to_parent (GdkWindow *window);
144 void _gdk_quartz_window_detach_from_parent (GdkWindow *window);
145 void _gdk_quartz_window_did_become_main (GdkWindow *window);
146 void _gdk_quartz_window_did_resign_main (GdkWindow *window);
147 void _gdk_quartz_window_debug_highlight (GdkWindow *window,
152 GDK_QUARTZ_EVENT_SUBTYPE_EVENTLOOP,
153 GDK_QUARTZ_EVENT_SUBTYPE_FAKE_CROSSING
154 } GdkQuartzEventSubType;
156 void _gdk_quartz_events_update_focus_window (GdkWindow *new_window,
158 GdkWindow * _gdk_quartz_events_get_mouse_window (gboolean consider_grabs);
159 void _gdk_quartz_events_update_mouse_window (GdkWindow *window);
160 void _gdk_quartz_events_update_cursor (GdkWindow *window);
161 void _gdk_quartz_events_send_map_events (GdkWindow *window);
162 GdkEventMask _gdk_quartz_events_get_current_event_mask (void);
163 void _gdk_quartz_events_trigger_crossing_events(gboolean defer_to_mainloop);
165 extern GdkWindow *_gdk_quartz_keyboard_grab_window;
166 extern GdkWindow *_gdk_quartz_pointer_grab_window;
169 gboolean _gdk_quartz_event_loop_check_pending (void);
170 NSEvent * _gdk_quartz_event_loop_get_pending (void);
171 void _gdk_quartz_event_loop_release_event (NSEvent *event);
174 GdkImage *_gdk_quartz_image_copy_to_image (GdkDrawable *drawable,
184 GdkEventType _gdk_quartz_keys_event_type (NSEvent *event);
185 gboolean _gdk_quartz_keys_is_modifier (guint keycode);
188 void _gdk_quartz_drawable_finish (GdkDrawable *drawable);
190 #endif /* __GDK_PRIVATE_QUARTZ_H__ */