
Contents of /GTK2-2.23/pgtk.h:
/*
|| This file is part of Pike. For copyright information see COPYRIGHT.
|| Pike is distributed under GPL, LGPL and MPL. See the file COPYING
|| for more information.
|| $Id: pgtk.h,v 1.13 2006/01/14 00:43:09 nilsson Exp $
*/
/* Sort of unnessesary, and decreases code-size with 140Kb */
#define GTK_NO_CHECK_CASTS
/* Also sort of unessesary, most code is autogenerated anyway. */
#define NO_PIKE_SHORTHAND
#include "pgtk_config.h"
#include <program.h>
#include <pike_types.h>
#include <interpret.h>
#include <module_support.h>
#include <array.h>
#include <backend.h>
#include <stralloc.h>
#include <mapping.h>
#include <object.h>
#include <bignum.h>
#include <threads.h>
#include <builtin_functions.h>
#include <operators.h>
/*
#include <glib.h>
#include <glib-object.h>
*/
#include <gtk/gtk.h>
#if defined(HAVE_GNOMEUI)
# include <gnome.h>
/*# include <libgnorba/gnorba.h> */
#elif defined(HAVE_GNOME)
# include <libgnome/libgnome.h>
#endif
#ifdef HAVE_GNOMECANVAS
#include <libgnomecanvas/libgnomecanvas.h>
#endif
#ifdef __NT__
/* Sockets are unimplemented on NT */
#undef GTK_TYPE_SOCKET
#endif
#ifdef HAVE_GTKEXTRA_GTKEXTRA_H
# include <gtkextra/gtkextra.h>
#endif
#ifdef HAVE_SIGNAL_H
#include <signal.h>
#endif
#ifdef HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
#ifdef HAVE_ARPA_INET_H
#include <arpa/inet.h>
#endif
/*
#undef GTK_STYLE
#define GTK_STYLE(X) ((GtkStyle *)X)
*/
/*
#undef GTK_ACCEL_GROUP
#define GTK_ACCEL_GROUP(X) ((void *)X)
*/
/* #include "modules/Image/image.h" */
#include "image.h"
struct object_wrapper {
GObject *obj;
int extra_int;
void *extra_data;
};
struct mixin_wrapper {
ptrdiff_t offset;
};
struct signal_data {
struct svalue cb;
struct svalue args;
int signal_id;
};
struct store_data {
GType *types;
int n_cols;
};
struct my_pixel {
unsigned char r;
unsigned char g;
unsigned char b;
unsigned char padding;
};
#include "pgtk2_symbol_remap.h"
/* Prototypes.h is generated in the build directory. */
#include "prototypes.h"
extern struct pike_string * pstr_vector[];
extern const char __pgtk_string_data[];
extern int pigtk_is_setup;
struct program *pgtk_type_to_program(GObject *widget);
void my_pop_n_elems(int n);
void my_ref_push_object(struct object *o);
void pgtk_return_this(int n);
void push_atom(GdkAtom a);
void pgtk_verify_setup();
void pgtk_verify_gnome_setup();
void pgtk_verify_obj_inited();
void pgtk_verify_obj_not_inited();
void pgtk_verify_mixin_inited();
void pgtk_verify_mixin_not_inited();
void push_Xpseudo32bitstring(void *f, int nelems);
int get_color_from_pikecolor(struct object *o, INT_TYPE *r, INT_TYPE *g, INT_TYPE *b);
int pgtk_signal_func_wrapper(struct signal_data *d, ...);
void pgtk_free_signal_data(struct signal_data *s, GClosure *gcl);
void pgtk_free_object(struct object *o);
void push_gdk_event(GdkEvent *e);
int pgtk_buttonfuncwrapper(GObject *obj, struct signal_data *d, void *foo);
/*
int signal_func_wrapper(GtkObject *obj, struct signal_data *d,
int nparams, GValue *params);
*/
#define pgtk__init_this_object() pgtk__init_object(Pike_fp->current_object)
void pgtk__init_object(struct object *o);
void *get_pgdkobject(struct object *from, struct program *type);
#define get_gdkobject(X,Y) (void *)get_pgdkobject(X,pgdk_##Y##_program)
GObject *get_pgobject(struct object *from, struct program *type);
/*
#define get_pgtkobject(X,Y) get_pgobject(X,Y)
*/
#define get_gobject(from) get_pgobject(from,pg_object_program)
/*
#define get_gtkobject(from) get_pgobject(from,pg_object_program)
*/
void push_gobjectclass(void *obj, struct program *def);
/*
#define push_gtkobjectclass(X,Y) push_gobjectclass(X,Y)
*/
#define push_gobject(o) push_gobjectclass(o,pgtk_type_to_program((void *)o))
/*
#define push_gtkobject(o) push_gobjectclass(o,pgtk_type_to_program((void*)o))
*/
void pgtk_clear_obj_struct(struct object *o);
void pgtk_setup_mixin(struct object *o, struct program *p);
void pgtk_default__sprintf(int n, int a, int l);
void push_pgdkobject(void *obj, struct program *def);
#define push_gdkobject(X,Y) push_pgdkobject(X,pgdk_##Y##_program)
GdkImage *gdkimage_from_pikeimage(struct object *img, int fast, GdkImage *i);
struct object *pikeimage_from_gdkimage(GdkImage *img);
#ifdef THIS
#undef THIS
#endif
#ifdef CLASS_TYPE
#undef CLASS_TYPE
#endif
#define OBJ_STORAGE (Pike_fp->current_storage)
#define MIXIN_STORAGE (Pike_fp->current_object->storage + ((struct mixin_wrapper *)OBJ_STORAGE)->offset)
/* Default when CLASS_TYPE is not defined */
#define CLASS_TYPE_STORAGE OBJ_STORAGE
#define STORAGE_FOR(X) PIKE_CONCAT(X,_STORAGE)
#define STORAGE STORAGE_FOR(CLASS_TYPE)
#define THIS ((struct object_wrapper *)STORAGE)
#define THISO ((struct object_wrapper *)STORAGE)->obj
#define MIXIN_THIS ((struct object_wrapper *)MIXIN_STORAGE)
#define pgtk_verify_MIXIN_inited pgtk_verify_mixin_inited
#define pgtk_verify_MIXIN_not_inited pgtk_verify_mixin_not_inited
#define pgtk_verify_OBJ_inited pgtk_verify_obj_inited
#define pgtk_verify_OBJ_not_inited pgtk_verify_obj_not_inited
/* Default when CLASS_TYPE is not defined */
#define pgtk_verify_CLASS_TYPE_inited pgtk_verify_OBJ_inited
#define pgtk_verify_CLASS_TYPE_not_inited pgtk_verify_OBJ_not_inited
#define pgtk_verify_inited_for(X) PIKE_CONCAT3(pgtk_verify_,X,_inited)
#define pgtk_verify_not_inited_for(X) PIKE_CONCAT3(pgtk_verify_,X,_not_inited)
#define pgtk_verify_inited pgtk_verify_inited_for(CLASS_TYPE)
#define pgtk_verify_not_inited pgtk_verify_not_inited_for(CLASS_TYPE)
#define RETURN_THIS() pgtk_return_this(args)
struct my_pixel pgtk_pixel_from_xpixel(unsigned int pix, GdkImage *i);
typedef void *Gdk_Atom;
GdkAtom get_gdkatom(struct object *o);
void pgtk_get_mapping_arg(struct mapping *map,
char *name, int type, int madd,
void *dest, long *mask, int len);
void pgtk_index_stack(char *with);
void pgtk_get_image_module();
void pgtk_encode_truecolor_masks(struct image *i,
int bitspp,
int pad,
int byteorder,
unsigned int red_mask,
unsigned int green_mask,
unsigned int blue_mask,
unsigned char *buffer,
int debuglen);
#if defined(PGTK_DEBUG) && defined(HAVE_GETHRTIME)
# define TIMER_INIT(X) do { long long cur,last,start; start = gethrtime(); last=start;fprintf(stderr, "%20s ... ",(X))
# define TIMER_END() cur=gethrtime();fprintf(stderr, "%4.1fms (%4.1fms)\n\n",(cur-last)/1000000.0,(cur-start)/1000000.0);} while(0);
# define PFTIME(X) cur=gethrtime();fprintf(stderr, "%4.1fms (%4.1fms)\n%20s ... ",(cur-last)/1000000.0,(cur-start)/1000000.0,(X));last=cur;
# define DEBUG_PF(X) printf X
#else
# define TIMER_INIT(X)
# define PFTIME(X)
# define TIMER_END()
# define DEBUG_PF(X)
#endif
void pgtk_push_gchar(const gchar *s);
gchar *pgtk_get_str(struct svalue *sv);
void pgtk_free_str(gchar *s);
# define PGTK_ISSTR(X) ((X)->type==PIKE_T_STRING)
# define PGTK_GETSTR(X) pgtk_get_str(X)
# define PGTK_FREESTR(X) pgtk_free_str(X)
# define PGTK_PUSH_GCHAR(X) pgtk_push_gchar(X)
/*
#else
# define PGTK_ISSTR( X ) (((X)->type==PIKE_T_STRING)&&((X)->u.string->size_shift==0))
# define PGTK_GETSTR(X) ((char*)((X)->u.string->str))
# define PGTK_FREESTR(X)
# define PGTK_PUSH_GCHAR(X) push_text( X )
#endif
*/
#define GSTR0(X) (gchar*)STR0(X)
#define CGSTR0(X) (const gchar*)STR0(X)
/* Somewhat more complex than one could expect. Consider bignums. */
LONGEST pgtk_get_int(struct svalue *s);
int pgtk_is_int(struct svalue *s);
# define PGTK_ISINT(X) (((X)->type==PIKE_T_INT) || pgtk_is_int(X))
# define PGTK_GETINT(X) pgtk_get_int(X)
# define PGTK_PUSH_INT(X) push_int64((LONGEST)(X))
/* Can convert from int to float, and, if bignum is present, bignum to
* float.
*/
double pgtk_get_float(struct svalue *s);
int pgtk_is_float(struct svalue *s);
#define PGTK_ISFLT(X) pgtk_is_float(X)
#define PGTK_GETFLT(X) pgtk_get_float(X)
int pgtk_last_event_time();
#define PSTR (char*)__pgtk_string_data
#define PGTK_CHECK_TYPE(ob,t) (g_type_is_a(G_TYPE_FROM_INSTANCE(ob),(t)))
#define setprop(x,y) g_object_set(THIS->obj,x,y,NULL)
#define getprop(x,y) g_object_get(THIS->obj,x,y,NULL)
void pgtk_set_property(GObject *g, char *prop, struct svalue *sv);
void pgtk__low_get_property(GObject *g, char *prop);
void pgtk_get_property(GObject *g, char *prop);
void pgtk_destroy_store_data(gpointer data);
void pgtk_set_gvalue(GValue *gv, GType gt, struct svalue *sv);
int pgtk_tree_sortable_callback(GtkTreeModel *model, GtkTreeIter *a,
GtkTreeIter *b, struct signal_data *d);
GObject *pgtk_create_new_obj_with_properties(GType type, struct mapping *m);
#define INIT_WITH_PROPS(X) do { \
struct mapping *m; \
get_all_args("create",args,"%m",&m); \
THIS->obj=pgtk_create_new_obj_with_properties(X,m); \
} while(0)
void push_gvalue_r(GValue *param, GType t);