diff -r b98e72d4089a -r 33bf2fd32108 pidgin/plugins/crazychat/cc_gtk_gl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/plugins/crazychat/cc_gtk_gl.h Mon Apr 16 00:44:33 2007 +0000 @@ -0,0 +1,50 @@ +#include +#include + +#define DEFAULT_FRAME_DELAY 40 + +typedef void (gl_init_func) (GtkWidget *widget, void *data); +typedef gboolean (*gl_config_func) (GtkWidget *widget, GdkEventConfigure *event, + void *data); +typedef gboolean (*gl_draw_func) (GtkWidget *widget, GdkEventExpose *event, + void *data); + +struct draw_info { + gboolean timeout; /* use/not use a timer callback */ + int timer_id; /* glib timer callback id */ + guint delay_ms; /* timer callback delay in ms */ + void *data; /* drawing data */ +}; + +struct window_box { + GtkWidget *window; + GtkWidget *vbox; + GtkWidget *draw_area; +}; + +/** + * Initialize the gtkglext framework for all our widgets. + * @return 0 on success, non-zero on failure + */ +int cc_init_gtk_gl(void); + +/** + * Create a new OpenGL enabled window + * @param init the initialize callback function + * @param draw the drawing callback function + * @param data drawing metadata + * @param ret struct with returned window and vbox + */ +void cc_new_gl_window(gl_init_func init, gl_config_func config, + gl_draw_func draw, struct draw_info *data, + struct window_box *ret); + +/** + * Create a new OpenGL enabled drawing area widget. + * @param init the initialize callback function + * @param draw the drawing callback function + * @param data drawing metadata + * @return the drawing widget + */ +GtkWidget *cc_new_gl_area(gl_init_func init, gl_config_func config, + gl_draw_func draw, struct draw_info *data);