diff options
author | Michael David Emmel <memmel@src.gnome.org> | 2006-02-05 04:04:29 +0000 |
---|---|---|
committer | Michael David Emmel <memmel@src.gnome.org> | 2006-02-05 04:04:29 +0000 |
commit | f94921838ec7ab49dc7d131770ec0e4c0efbaa1f (patch) | |
tree | 9921fb48f1e45edb7ef3f54f9ed1178e2f4ae98e /gdk/directfb/gdkprivate-directfb.h | |
parent | 9bfabba034d61521bb2d01db886446889ba42666 (diff) | |
download | gtk+-f94921838ec7ab49dc7d131770ec0e4c0efbaa1f.tar.gz |
Added new directfb backend
Diffstat (limited to 'gdk/directfb/gdkprivate-directfb.h')
-rw-r--r-- | gdk/directfb/gdkprivate-directfb.h | 318 |
1 files changed, 318 insertions, 0 deletions
diff --git a/gdk/directfb/gdkprivate-directfb.h b/gdk/directfb/gdkprivate-directfb.h new file mode 100644 index 0000000000..a9a5e5d40e --- /dev/null +++ b/gdk/directfb/gdkprivate-directfb.h @@ -0,0 +1,318 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * 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. + */ + +/* + * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GTK+ Team. + */ + +/* + * GTK+ DirectFB backend + * Copyright (C) 2001-2002 convergence integrated media GmbH + * Copyright (C) 2002-2004 convergence GmbH + * Written by Denis Oliver Kropp <dok@convergence.de> and + * Sven Neumann <sven@convergence.de> + */ + +#ifndef __GDK_PRIVATE_DIRECTFB_H__ +#define __GDK_PRIVATE_DIRECTFB_H__ + +//#include <gdk/gdk.h> +#include <gdk/gdkprivate.h> +#include "gdkinternals.h" +#include "gdkcursor.h" +#include "gdkdisplay-directfb.h" +#include <cairo.h> + + + +#define GDK_TYPE_DRAWABLE_IMPL_DIRECTFB (gdk_drawable_impl_directfb_get_type ()) +#define GDK_DRAWABLE_IMPL_DIRECTFB(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_DRAWABLE_IMPL_DIRECTFB, GdkDrawableImplDirectFB)) +#define GDK_IS_DRAWABLE_IMPL_DIRECTFB(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_DRAWABLE_IMPL_DIRECTFB)) + +#define GDK_TYPE_WINDOW_IMPL_DIRECTFB (gdk_window_impl_directfb_get_type ()) +#define GDK_WINDOW_IMPL_DIRECTFB(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_WINDOW_IMPL_DIRECTFB, GdkWindowImplDirectFB)) +#define GDK_IS_WINDOW_IMPL_DIRECTFB(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_WINDOW_IMPL_DIRECTFB)) + +#define GDK_TYPE_PIXMAP_IMPL_DIRECTFB (gdk_pixmap_impl_directfb_get_type ()) +#define GDK_PIXMAP_IMPL_DIRECTFB(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_PIXMAP_IMPL_DIRECTFB, GdkPixmapImplDirectFB)) +#define GDK_IS_PIXMAP_IMPL_DIRECTFB(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_PIXMAP_IMPL_DIRECTFB)) + + +typedef struct _GdkDrawableImplDirectFB GdkDrawableImplDirectFB; +typedef struct _GdkWindowImplDirectFB GdkWindowImplDirectFB; +typedef struct _GdkPixmapImplDirectFB GdkPixmapImplDirectFB; + + +struct _GdkDrawableImplDirectFB +{ + GdkDrawable parent_object; + + GdkDrawable *wrapper; + + gboolean buffered; + + GdkRegion *paint_region; + gint paint_depth; + + gint width; + gint height; + gint abs_x; + gint abs_y; + + GdkColormap *colormap; + + IDirectFBSurface *surface; + DFBSurfacePixelFormat format; + cairo_surface_t * cairo_surface; + +}; + +typedef struct +{ + GdkDrawableClass parent_class; +} GdkDrawableImplDirectFBClass; + +GType gdk_drawable_impl_directfb_get_type (void); + +void _gdk_directfb_draw_rectangle (GdkDrawable *drawable, + GdkGC *gc, + gint filled, + gint x, + gint y, + gint width, + gint height); + +void _gdk_directfb_update (GdkDrawableImplDirectFB *impl, + DFBRegion *region); + +GdkEvent * gdk_directfb_event_make (GdkWindow *window, + GdkEventType type); + + +/* + * Pixmap + */ + +struct _GdkPixmapImplDirectFB +{ + GdkDrawableImplDirectFB parent_instance; +}; + +typedef struct +{ + GdkDrawableImplDirectFBClass parent_class; +} GdkPixmapImplDirectFBClass; + +GType gdk_pixmap_impl_directfb_get_type (void); + + + +/* + * Window + */ + +typedef struct +{ + gulong length; + GdkAtom type; + gint format; + guchar data[1]; +} GdkWindowProperty; + + +struct _GdkWindowImplDirectFB +{ + GdkDrawableImplDirectFB drawable; + + IDirectFBWindow *window; + + DFBWindowID dfb_id; + + GdkCursor *cursor; + GHashTable *properties; + + guint8 opacity; + + GdkWindowTypeHint type_hint; +}; + +typedef struct +{ + GdkDrawableImplDirectFBClass parent_class; +} GdkWindowImplDirectFBClass; + +GType gdk_window_impl_directfb_get_type (void); + +void gdk_directfb_window_send_crossing_events (GdkWindow *src, + GdkWindow *dest, + GdkCrossingMode mode); + +void _gdk_directfb_calc_abs (GdkWindow *window); + +GdkWindow * gdk_directfb_window_find_toplevel (GdkWindow *window); + + +void gdk_directfb_window_id_table_insert (DFBWindowID dfb_id, + GdkWindow *window); +void gdk_directfb_window_id_table_remove (DFBWindowID dfb_id); +GdkWindow * gdk_directfb_window_id_table_lookup (DFBWindowID dfb_id); + + +typedef struct +{ + GdkCursor cursor; + + gint hot_x; + gint hot_y; + IDirectFBSurface *shape; +} GdkCursorDirectFB; + +typedef struct +{ + GdkVisual visual; + DFBSurfacePixelFormat format; +} GdkVisualDirectFB; + +typedef struct +{ + IDirectFBSurface *surface; +} GdkImageDirectFB; + + +#define GDK_TYPE_GC_DIRECTFB (gdk_gc_directfb_get_type ()) +#define GDK_GC_DIRECTFB(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_GC_DIRECTFB, GdkGCDirectFB)) +#define GDK_IS_GC_DIRECTFB(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_GC_DIRECTFB)) + +typedef struct +{ + GdkGC parent_instance; + + GdkRegion *clip_region; + + GdkGCValuesMask values_mask; + GdkGCValues values; +} GdkGCDirectFB; + +typedef struct +{ + GdkGCClass parent_class; +} GdkGCDirectFBClass; + +GType gdk_gc_directfb_get_type (void); + +GdkGC * _gdk_directfb_gc_new (GdkDrawable *drawable, + GdkGCValues *values, + GdkGCValuesMask values_mask); + +GdkImage* _gdk_directfb_copy_to_image (GdkDrawable *drawable, + GdkImage *image, + gint src_x, + gint src_y, + gint dest_x, + gint dest_y, + gint width, + gint height); + +void gdk_directfb_event_windows_add (GdkWindow *window); + +GdkGrabStatus gdk_directfb_pointer_grab (GdkWindow *window, + gint owner_events, + GdkEventMask event_mask, + GdkWindow *confine_to, + GdkCursor *cursor, + guint32 time, + gboolean implicit_grab); +void gdk_directfb_pointer_ungrab (guint32 time, + gboolean implicit_grab); + +guint32 gdk_directfb_get_time (void); + +GdkWindow * gdk_directfb_pointer_event_window (GdkWindow *window, + GdkEventType type); +GdkWindow * gdk_directfb_keyboard_event_window (GdkWindow *window, + GdkEventType type); +GdkWindow * gdk_directfb_other_event_window (GdkWindow *window, + GdkEventType type); +void _gdk_selection_window_destroyed (GdkWindow *window); + +void _gdk_directfb_move_resize_child (GdkWindow *window, + gint x, + gint y, + gint width, + gint height); + +GdkWindow * gdk_directfb_child_at (GdkWindow *window, + gint *x, + gint *y); + +GdkWindow * gdk_directfb_window_find_focus (void); + +void gdk_directfb_change_focus (GdkWindow *new_focus_window); + +void gdk_directfb_mouse_get_info (gint *x, + gint *y, + GdkModifierType *mask); + +/**********************/ +/* Global variables */ +/**********************/ + +extern GdkDisplayDFB *_gdk_display; + +/* Pointer grab info */ +extern GdkWindow * _gdk_directfb_pointer_grab_window; +extern gboolean _gdk_directfb_pointer_grab_owner_events; +extern GdkWindow * _gdk_directfb_pointer_grab_confine; +extern GdkEventMask _gdk_directfb_pointer_grab_events; +extern GdkCursor * _gdk_directfb_pointer_grab_cursor; + +/* Keyboard grab info */ +extern GdkWindow * _gdk_directfb_keyboard_grab_window; +extern GdkEventMask _gdk_directfb_keyboard_grab_events; +extern gboolean _gdk_directfb_keyboard_grab_owner_events; + +extern GdkScreen * _gdk_screen; + +extern GdkAtom _gdk_selection_property; + + +IDirectFBPalette * gdk_directfb_colormap_get_palette (GdkColormap *colormap); + + +/* these are Linux-FB specific functions used for window decorations */ + +typedef gboolean (* GdkWindowChildChanged) (GdkWindow *window, + gint x, + gint y, + gint width, + gint height, + gpointer user_data); +typedef void (* GdkWindowChildGetPos) (GdkWindow *window, + gint *x, + gint *y, + gpointer user_data); + +void gdk_fb_window_set_child_handler (GdkWindow *window, + GdkWindowChildChanged changed, + GdkWindowChildGetPos get_pos, + gpointer user_data); + + +#endif /* __GDK_PRIVATE_DIRECTFB_H__ */ |