#ifndef _GTK2PERL_H_
#define _GTK2PERL_H_
#include <gperl.h>
#include <pango-perl.h>
#include <gtk/gtk.h>
#include "gtk2perl-versions.h"
#ifndef GTK_TYPE_BINDING_SET
# define GTK_TYPE_BINDING_SET (gtk2perl_binding_set_get_type ())
GType gtk2perl_binding_set_get_type (
void
) G_GNUC_CONST;
#endif
#ifndef GDK_TYPE_REGION
# define GDK_TYPE_REGION (gtk2perl_gdk_region_get_type ())
GType gtk2perl_gdk_region_get_type (
void
) G_GNUC_CONST;
#endif
#include "gtk2perl-autogen.h"
#ifndef GDK_WINDOWING_X11
# undef GTK_TYPE_PLUG
# undef GTK_TYPE_SOCKET
#endif
SV * gtk2perl_new_gtkobject (GtkObject * object);
#define SvGdkBitmap(sv) ((GdkBitmap*)gperl_get_object_check (sv, GDK_TYPE_DRAWABLE))
typedef
GdkBitmap GdkBitmap_ornull;
#define SvGdkBitmap_ornull(sv) (gperl_sv_is_defined (sv) ? SvGdkBitmap(sv) : NULL)
typedef
GdkBitmap GdkBitmap_noinc;
SV * newSVGdkBitmap (GdkBitmap * bitmap);
SV * newSVGdkBitmap_noinc (GdkBitmap * bitmap);
#define newSVGdkBitmap_ornull(b) (b ? newSVGdkBitmap (b) : Nullsv)
SV * newSVGdkGCValues (GdkGCValues * v);
void
SvGdkGCValues (SV * data, GdkGCValues * v, GdkGCValuesMask * m);
SV * newSVPangoRectangle (PangoRectangle * rectangle);
PangoRectangle * SvPangoRectangle (SV * sv);
SV * newSVGdkAtom (GdkAtom atom);
GdkAtom SvGdkAtom (SV * sv);
SV * newSVGtkTargetEntry (GtkTargetEntry * target_entry);
GtkTargetEntry * SvGtkTargetEntry (SV * sv);
void
gtk2perl_read_gtk_target_entry (SV * sv, GtkTargetEntry * entry);
#define GTK2PERL_STACK_ITEMS_TO_TARGET_ENTRY_ARRAY(first, targets, ntargets) \
{ \
guint i; \
if
(items <= first) { \
ntargets = 0; \
targets = NULL; \
}
else
{ \
ntargets = items - first; \
targets = gperl_alloc_temp (
sizeof
(GtkTargetEntry) * ntargets); \
for
(i = 0 ; i < ntargets ; i++) \
gtk2perl_read_gtk_target_entry (ST (i + first), \
targets + i); \
} \
}
#define GTK2PERL_STACK_ITEMS_TO_GTYPE_ARRAY(arrayvar, first, last) \
(arrayvar) = g_array_new (FALSE, FALSE,
sizeof
(GType)); \
g_array_set_size ((arrayvar), (last) - (first) + 1); \
{ \
int
i; \
for
(i = (first) ; i <= (last) ; i++) { \
char
* package = SvPV_nolen (ST (i)); \
\
GType t = gperl_type_from_package (package); \
if
(t == 0) { \
g_array_free ((arrayvar), TRUE); \
croak (
"package %s is not registered with GPerl"
, \
package); \
g_assert (
"not reached"
); \
} \
g_array_index ((arrayvar), GType, i-(first)) = t; \
} \
}
#if GTK_CHECK_VERSION (2, 10, 0)
# undef newSVGtkTargetList
# undef newSVGtkTargetList_ornull
# undef SvGtkTargetList
# undef SvGtkTargetList_ornull
#else
typedef
GtkTargetList GtkTargetList_ornull;
#endif
SV * newSVGtkTargetList (GtkTargetList * list);
#define newSVGtkTargetList_ornull(list) ((list) ? newSVGtkTargetList (list) : &PL_sv_undef)
GtkTargetList * SvGtkTargetList (SV * sv);
#define SvGtkTargetList_ornull(sv) (gperl_sv_is_defined (sv) ? SvGtkTargetList (sv) : NULL)
void
gtk2perl_menu_position_func (GtkMenu * menu,
gint * x,
gint * y,
gboolean * push_in,
GPerlCallback * callback);
#if ! GTK_CHECK_VERSION (2, 4, 0)
# undef SvGtkTextSearchFlags
# undef newSVGtkTextSearchFlags
# define SvGtkTextSearchFlags(sv) (gperl_convert_enum (GTK_TYPE_TEXT_SEARCH_FLAGS, sv))
# define newSVGtkTextSearchFlags(val) (gperl_convert_back_enum (GTK_TYPE_TEXT_SEARCH_FLAGS, val))
#endif
SV * newSVGdkGeometry (GdkGeometry *geometry);
GdkGeometry * SvGdkGeometry (SV *object);
GdkGeometry * SvGdkGeometryReal (SV *object, GdkWindowHints *hints);
#if GTK_CHECK_VERSION (2, 2, 0)
SV * newSVGdkPixbufFormat (GdkPixbufFormat * format);
GdkPixbufFormat * SvGdkPixbufFormat (SV * sv);
#endif
#endif /* _GTK2PERL_H_ */