* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __GDK_PRIVATE_QUARTZ_H__
#define GDK_QUARTZ_RELEASE_POOL [pool release]
#include <gdk/gdkprivate.h>
-#include <gdk/quartz/gdkpixmap-quartz.h>
-#include <gdk/quartz/gdkwindow-quartz.h>
#include <gdk/quartz/gdkquartz.h>
+#include <gdk/quartz/gdkdevicemanager-core-quartz.h>
+#include <gdk/quartz/gdkdnd-quartz.h>
+#include <gdk/quartz/gdkscreen-quartz.h>
+#include <gdk/quartz/gdkwindow-quartz.h>
#include <gdk/gdk.h>
#include "config.h"
-#define GDK_TYPE_GC_QUARTZ (_gdk_gc_quartz_get_type ())
-#define GDK_GC_QUARTZ(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_GC_QUARTZ, GdkGCQuartz))
-#define GDK_GC_QUARTZ_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_GC_QUARTZ, GdkGCQuartzClass))
-#define GDK_IS_GC_QUARTZ(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_GC_QUARTZ))
-#define GDK_IS_GC_QUARTZ_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_GC_QUARTZ))
-#define GDK_GC_QUARTZ_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_GC_QUARTZ, GdkGCQuartzClass))
-
-#define GDK_DRAG_CONTEXT_PRIVATE(context) ((GdkDragContextPrivate *) GDK_DRAG_CONTEXT (context)->windowing_data)
-
-typedef struct _GdkCursorPrivate GdkCursorPrivate;
-typedef struct _GdkGCQuartz GdkGCQuartz;
-typedef struct _GdkGCQuartzClass GdkGCQuartzClass;
-typedef struct _GdkDragContextPrivate GdkDragContextPrivate;
-
-struct _GdkGCQuartz
-{
- GdkGC parent_instance;
-
- GdkFunction function;
- GdkSubwindowMode subwindow_mode;
- gboolean graphics_exposures;
-
- gboolean have_clip_region;
- gboolean have_clip_mask;
- CGImageRef clip_mask;
-
- gint line_width;
- GdkLineStyle line_style;
- GdkCapStyle cap_style;
- GdkJoinStyle join_style;
+extern GdkDisplay *_gdk_display;
+extern GdkScreen *_gdk_screen;
+extern GdkWindow *_gdk_root;
- CGFloat *dash_lengths;
- gint dash_count;
- CGFloat dash_phase;
+extern GdkDragContext *_gdk_quartz_drag_source_context;
- CGPatternRef ts_pattern;
+#define GDK_WINDOW_IS_QUARTZ(win) (GDK_IS_WINDOW_IMPL_QUARTZ (((GdkWindow *)win)->impl))
- guint is_window : 1;
-};
+/* Initialization */
+void _gdk_quartz_window_init_windowing (GdkDisplay *display,
+ GdkScreen *screen);
+void _gdk_quartz_events_init (void);
+void _gdk_quartz_event_loop_init (void);
-struct _GdkGCQuartzClass
-{
- GdkGCClass parent_class;
-};
+/* Cursor */
+NSCursor *_gdk_quartz_cursor_get_ns_cursor (GdkCursor *cursor);
-struct _GdkVisualClass
-{
- GObjectClass parent_class;
-};
+/* Events */
+typedef enum {
+ GDK_QUARTZ_EVENT_SUBTYPE_EVENTLOOP
+} GdkQuartzEventSubType;
-struct _GdkCursorPrivate
-{
- GdkCursor cursor;
- NSCursor *nscursor;
-};
+void _gdk_quartz_events_update_focus_window (GdkWindow *new_window,
+ gboolean got_focus);
+void _gdk_quartz_events_send_map_event (GdkWindow *window);
-struct _GdkDragContextPrivate
-{
- id <NSDraggingInfo> dragging_info;
-};
+GdkModifierType _gdk_quartz_events_get_current_keyboard_modifiers (void);
+GdkModifierType _gdk_quartz_events_get_current_mouse_modifiers (void);
-extern GdkDisplay *_gdk_display;
-extern GdkScreen *_gdk_screen;
-extern GdkWindow *_gdk_root;
+void _gdk_quartz_events_send_enter_notify_event (GdkWindow *window);
+void _gdk_quartz_events_break_all_grabs (guint32 time);
-extern GdkDragContext *_gdk_quartz_drag_source_context;
+/* Event loop */
+gboolean _gdk_quartz_event_loop_check_pending (void);
+NSEvent * _gdk_quartz_event_loop_get_pending (void);
+void _gdk_quartz_event_loop_release_event (NSEvent *event);
-#define GDK_WINDOW_IS_QUARTZ(win) (GDK_IS_WINDOW_IMPL_QUARTZ (((GdkWindowObject *)win)->impl))
+/* Keys */
+GdkEventType _gdk_quartz_keys_event_type (NSEvent *event);
+gboolean _gdk_quartz_keys_is_modifier (guint keycode);
-/* Initialization */
-void _gdk_windowing_update_window_sizes (GdkScreen *screen);
-void _gdk_windowing_window_init (void);
-void _gdk_events_init (void);
-void _gdk_visual_init (void);
-void _gdk_input_init (void);
-void _gdk_quartz_event_loop_init (void);
+/* Drag and Drop */
+void _gdk_quartz_window_register_dnd (GdkWindow *window);
+GdkDragContext * _gdk_quartz_window_drag_begin (GdkWindow *window,
+ GdkDevice *device,
+ GList *targets);
+
+/* Display */
+
+GdkDisplay * _gdk_quartz_display_open (const gchar *name);
+
+/* Display methods - events */
+void _gdk_quartz_display_queue_events (GdkDisplay *display);
+gboolean _gdk_quartz_display_has_pending (GdkDisplay *display);
+
+void _gdk_quartz_display_event_data_copy (GdkDisplay *display,
+ const GdkEvent *src,
+ GdkEvent *dst);
+void _gdk_quartz_display_event_data_free (GdkDisplay *display,
+ GdkEvent *event);
+
+/* Display methods - cursor */
+GdkCursor *_gdk_quartz_display_get_cursor_for_type (GdkDisplay *display,
+ GdkCursorType type);
+GdkCursor *_gdk_quartz_display_get_cursor_for_name (GdkDisplay *display,
+ const gchar *name);
+GdkCursor *_gdk_quartz_display_get_cursor_for_pixbuf (GdkDisplay *display,
+ GdkPixbuf *pixbuf,
+ gint x,
+ gint y);
+gboolean _gdk_quartz_display_supports_cursor_alpha (GdkDisplay *display);
+gboolean _gdk_quartz_display_supports_cursor_color (GdkDisplay *display);
+void _gdk_quartz_display_get_default_cursor_size (GdkDisplay *display,
+ guint *width,
+ guint *height);
+void _gdk_quartz_display_get_maximal_cursor_size (GdkDisplay *display,
+ guint *width,
+ guint *height);
+
+/* Display methods - window */
+void _gdk_quartz_display_before_process_all_updates (GdkDisplay *display);
+void _gdk_quartz_display_after_process_all_updates (GdkDisplay *display);
+void _gdk_quartz_display_create_window_impl (GdkDisplay *display,
+ GdkWindow *window,
+ GdkWindow *real_parent,
+ GdkScreen *screen,
+ GdkEventMask event_mask,
+ GdkWindowAttr *attributes,
+ gint attributes_mask);
+
+/* Display methods - keymap */
+GdkKeymap * _gdk_quartz_display_get_keymap (GdkDisplay *display);
+
+/* Display methods - selection */
+gboolean _gdk_quartz_display_set_selection_owner (GdkDisplay *display,
+ GdkWindow *owner,
+ GdkAtom selection,
+ guint32 time,
+ gboolean send_event);
+GdkWindow * _gdk_quartz_display_get_selection_owner (GdkDisplay *display,
+ GdkAtom selection);
+gint _gdk_quartz_display_get_selection_property (GdkDisplay *display,
+ GdkWindow *requestor,
+ guchar **data,
+ GdkAtom *ret_type,
+ gint *ret_format);
+void _gdk_quartz_display_convert_selection (GdkDisplay *display,
+ GdkWindow *requestor,
+ GdkAtom selection,
+ GdkAtom target,
+ guint32 time);
+gint _gdk_quartz_display_text_property_to_utf8_list (GdkDisplay *display,
+ GdkAtom encoding,
+ gint format,
+ const guchar *text,
+ gint length,
+ gchar ***list);
+gchar * _gdk_quartz_display_utf8_to_string_target (GdkDisplay *displayt,
+ const gchar *str);
+
+
+/* Display manager */
+void _gdk_quartz_display_manager_add_display (GdkDisplayManager *manager,
+ GdkDisplay *display);
+void _gdk_quartz_display_manager_remove_display (GdkDisplayManager *manager,
+ GdkDisplay *display);
+
+/* Display manager methods - events */
+GdkAtom _gdk_quartz_display_manager_atom_intern (GdkDisplayManager *manager,
+ const gchar *atom_name,
+ gboolean copy_name);
+gchar * _gdk_quartz_display_manager_get_atom_name (GdkDisplayManager *manager,
+ GdkAtom atom);
+
+/* Screen */
+GdkScreen *_gdk_quartz_screen_new (void);
+void _gdk_quartz_screen_update_window_sizes (GdkScreen *screen);
+
+/* Screen methods - visual */
+GdkVisual * _gdk_quartz_screen_get_rgba_visual (GdkScreen *screen);
+GdkVisual * _gdk_quartz_screen_get_system_visual (GdkScreen *screen);
+gint _gdk_quartz_screen_visual_get_best_depth (GdkScreen *screen);
+GdkVisualType _gdk_quartz_screen_visual_get_best_type (GdkScreen *screen);
+GdkVisual * _gdk_quartz_screen_get_system_visual (GdkScreen *screen);
+GdkVisual* _gdk_quartz_screen_visual_get_best (GdkScreen *screen);
+GdkVisual* _gdk_quartz_screen_visual_get_best_with_depth (GdkScreen *screen,
+ gint depth);
+GdkVisual* _gdk_quartz_screen_visual_get_best_with_type (GdkScreen *screen,
+ GdkVisualType visual_type);
+GdkVisual* _gdk_quartz_screen_visual_get_best_with_both (GdkScreen *screen,
+ gint depth,
+ GdkVisualType visual_type);
+void _gdk_quartz_screen_query_depths (GdkScreen *screen,
+ gint **depths,
+ gint *count);
+void _gdk_quartz_screen_query_visual_types (GdkScreen *screen,
+ GdkVisualType **visual_types,
+ gint *count);
+void _gdk_quartz_screen_init_visuals (GdkScreen *screen);
+GList * _gdk_quartz_screen_list_visuals (GdkScreen *screen);
+
+/* Screen methods - events */
+void _gdk_quartz_screen_broadcast_client_message (GdkScreen *screen,
+ GdkEvent *event);
+gboolean _gdk_quartz_screen_get_setting (GdkScreen *screen,
+ const gchar *name,
+ GValue *value);
-/* GC */
-typedef enum {
- GDK_QUARTZ_CONTEXT_STROKE = 1 << 0,
- GDK_QUARTZ_CONTEXT_FILL = 1 << 1,
- GDK_QUARTZ_CONTEXT_TEXT = 1 << 2
-} GdkQuartzContextValuesMask;
-
-GType _gdk_gc_quartz_get_type (void);
-GdkGC *_gdk_quartz_gc_new (GdkDrawable *drawable,
- GdkGCValues *values,
- GdkGCValuesMask values_mask);
-void _gdk_quartz_gc_update_cg_context (GdkGC *gc,
- GdkDrawable *drawable,
- CGContextRef context,
- GdkQuartzContextValuesMask mask);
-
-/* Colormap */
-CGColorRef _gdk_quartz_colormap_get_cgcolor_from_pixel (GdkDrawable *drawable,
- guint32 pixel);
/* Window */
gboolean _gdk_quartz_window_is_ancestor (GdkWindow *ancestor,
void _gdk_quartz_window_debug_highlight (GdkWindow *window,
gint number);
-void _gdk_quartz_window_set_needs_display_in_region (GdkWindow *window,
- GdkRegion *region);
-
void _gdk_quartz_window_update_position (GdkWindow *window);
-/* Events */
-typedef enum {
- GDK_QUARTZ_EVENT_SUBTYPE_EVENTLOOP
-} GdkQuartzEventSubType;
-
-void _gdk_quartz_events_update_focus_window (GdkWindow *new_window,
- gboolean got_focus);
-void _gdk_quartz_events_send_map_event (GdkWindow *window);
-GdkEventMask _gdk_quartz_events_get_current_event_mask (void);
-
-void _gdk_quartz_events_send_enter_notify_event (GdkWindow *window);
-
-/* Event loop */
-gboolean _gdk_quartz_event_loop_check_pending (void);
-NSEvent * _gdk_quartz_event_loop_get_pending (void);
-void _gdk_quartz_event_loop_release_event (NSEvent *event);
-
-/* FIXME: image */
-GdkImage *_gdk_quartz_image_copy_to_image (GdkDrawable *drawable,
- GdkImage *image,
- gint src_x,
- gint src_y,
- gint dest_x,
- gint dest_y,
- gint width,
- gint height);
-/* Keys */
-GdkEventType _gdk_quartz_keys_event_type (NSEvent *event);
-gboolean _gdk_quartz_keys_is_modifier (guint keycode);
+/* Window methods - testing */
+void _gdk_quartz_window_sync_rendering (GdkWindow *window);
+gboolean _gdk_quartz_window_simulate_key (GdkWindow *window,
+ gint x,
+ gint y,
+ guint keyval,
+ GdkModifierType modifiers,
+ GdkEventType key_pressrelease);
+gboolean _gdk_quartz_window_simulate_button (GdkWindow *window,
+ gint x,
+ gint y,
+ guint button,
+ GdkModifierType modifiers,
+ GdkEventType button_pressrelease);
+
+/* Window methods - property */
+gboolean _gdk_quartz_window_get_property (GdkWindow *window,
+ GdkAtom property,
+ GdkAtom type,
+ gulong offset,
+ gulong length,
+ gint pdelete,
+ GdkAtom *actual_property_type,
+ gint *actual_format_type,
+ gint *actual_length,
+ guchar **data);
+void _gdk_quartz_window_change_property (GdkWindow *window,
+ GdkAtom property,
+ GdkAtom type,
+ gint format,
+ GdkPropMode mode,
+ const guchar *data,
+ gint nelements);
+void _gdk_quartz_window_delete_property (GdkWindow *window,
+ GdkAtom property);
-/* Drawable */
-void _gdk_quartz_drawable_finish (GdkDrawable *drawable);
-void _gdk_quartz_drawable_flush (GdkDrawable *drawable);
-
-/* Geometry */
-void _gdk_quartz_window_scroll (GdkWindow *window,
- gint dx,
- gint dy);
-void _gdk_quartz_window_queue_translation (GdkWindow *window,
- GdkGC *gc,
- GdkRegion *area,
- gint dx,
- gint dy);
-gboolean _gdk_quartz_window_queue_antiexpose (GdkWindow *window,
- GdkRegion *area);
#endif /* __GDK_PRIVATE_QUARTZ_H__ */