]> Pileus Git - ~andy/gtk/blob - gdk/quartz/gdkprivate-quartz.h
Include "config.h" instead of <config.h> Command used: find -name
[~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/gdkpixmap-quartz.h>
29 #include <gdk/quartz/gdkwindow-quartz.h>
30
31 #include <gdk/gdk.h>
32
33 #include "gdkinternals.h"
34
35 #include "config.h"
36
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))
43
44 #define GDK_DRAG_CONTEXT_PRIVATE(context) ((GdkDragContextPrivate *) GDK_DRAG_CONTEXT (context)->windowing_data)
45
46 typedef struct _GdkCursorPrivate GdkCursorPrivate;
47 typedef struct _GdkGCQuartz       GdkGCQuartz;
48 typedef struct _GdkGCQuartzClass  GdkGCQuartzClass;
49 typedef struct _GdkDragContextPrivate GdkDragContextPrivate;
50
51 struct _GdkGCQuartz
52 {
53   GdkGC             parent_instance;
54
55   GdkFont          *font;
56   GdkFunction       function;
57   GdkSubwindowMode  subwindow_mode;
58   gboolean          graphics_exposures;
59
60   gboolean          have_clip_region;
61   gboolean          have_clip_mask;
62   CGImageRef        clip_mask;
63
64   gint              line_width;
65   GdkLineStyle      line_style;
66   GdkCapStyle       cap_style;
67   GdkJoinStyle      join_style;
68
69   gfloat           *dash_lengths;
70   gint              dash_count;
71   gfloat            dash_phase;
72
73   CGPatternRef      ts_pattern;
74
75   guint             is_window : 1;
76 };
77
78 struct _GdkGCQuartzClass
79 {
80   GdkGCClass parent_class;
81 };
82
83 struct _GdkVisualClass
84 {
85   GObjectClass parent_class;
86 };
87
88 struct _GdkCursorPrivate
89 {
90   GdkCursor cursor;
91   NSCursor *nscursor;
92 };
93
94 struct _GdkDragContextPrivate
95 {
96   id <NSDraggingInfo> dragging_info;
97 };
98
99 extern GdkDisplay *_gdk_display;
100 extern GdkScreen *_gdk_screen;
101 extern GdkWindow *_gdk_root;
102
103 extern GdkDragContext *_gdk_quartz_drag_source_context;
104
105 /* Initialization */
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);
111
112 /* GC */
113 typedef enum {
114   GDK_QUARTZ_CONTEXT_STROKE = 1 << 0,
115   GDK_QUARTZ_CONTEXT_FILL   = 1 << 1,
116   GDK_QUARTZ_CONTEXT_TEXT   = 1 << 2
117 } GdkQuartzContextValuesMask;
118
119 GType  _gdk_gc_quartz_get_type          (void);
120 GdkGC *_gdk_quartz_gc_new               (GdkDrawable                *drawable,
121                                          GdkGCValues                *values,
122                                          GdkGCValuesMask             values_mask);
123 void   _gdk_quartz_gc_update_cg_context (GdkGC                      *gc,
124                                          GdkDrawable                *drawable,
125                                          CGContextRef                context,
126                                          GdkQuartzContextValuesMask  mask);
127
128 /* Colormap */
129 void _gdk_quartz_colormap_get_rgba_from_pixel (GdkColormap *colormap,
130                                                guint32      pixel,
131                                                gfloat      *red,
132                                                gfloat      *green,
133                                                gfloat      *blue,
134                                                gfloat      *alpha);
135
136 /* Window */
137 gboolean    _gdk_quartz_window_is_ancestor          (GdkWindow *ancestor,
138                                                      GdkWindow *window);
139 gint       _gdk_quartz_window_get_inverted_screen_y (gint       y);
140 GdkWindow *_gdk_quartz_window_find_child            (GdkWindow *window,
141                                                      gint       x,
142                                                      gint       y);
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,
148                                                      gint       number);
149
150 /* Events */
151 typedef enum {
152   GDK_QUARTZ_EVENT_SUBTYPE_EVENTLOOP,
153   GDK_QUARTZ_EVENT_SUBTYPE_FAKE_CROSSING
154 } GdkQuartzEventSubType;
155
156 void         _gdk_quartz_events_update_focus_window    (GdkWindow *new_window,
157                                                         gboolean   got_focus);
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);
164
165 extern GdkWindow *_gdk_quartz_keyboard_grab_window;
166 extern GdkWindow *_gdk_quartz_pointer_grab_window;
167
168 /* Event loop */
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);
172
173 /* FIXME: image */
174 GdkImage *_gdk_quartz_image_copy_to_image (GdkDrawable *drawable,
175                                             GdkImage    *image,
176                                             gint         src_x,
177                                             gint         src_y,
178                                             gint         dest_x,
179                                             gint         dest_y,
180                                             gint         width,
181                                             gint         height);
182
183 /* Keys */
184 GdkEventType _gdk_quartz_keys_event_type  (NSEvent   *event);
185 gboolean     _gdk_quartz_keys_is_modifier (guint      keycode);
186
187 /* Drawable */
188 void        _gdk_quartz_drawable_finish (GdkDrawable *drawable);
189
190 #endif /* __GDK_PRIVATE_QUARTZ_H__ */