Mercurial > pidgin.yaz
diff plugins/crazychat/cc_interface.h @ 11232:8bcd4d4ccef6
[gaim-migrate @ 13372]
committing crazychat again. hopefully here to stay.
committer: Tailor Script <tailor@pidgin.im>
author | Charlie Stockman <chuckleberry> |
---|---|
date | Thu, 11 Aug 2005 07:56:29 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/cc_interface.h Thu Aug 11 07:56:29 2005 +0000 @@ -0,0 +1,129 @@ +#ifndef __CC_INTERFACE_H__ +#define __CC_INTERFACE_H__ + +#include <gtk/gtk.h> +#include "crazychat.h" + +/* XXX feature encapsulation: still in flux, not stable XXX */ + +//charlie +typedef enum {REMOTE, LOCAL} OUTPUT; + +gboolean configure(GtkWidget *widget, + GdkEventConfigure *event, void *data); + +#ifdef DISABLE_MODELS +#define draw(a, b, c) 1 +#define setupDrawlists(a) +#else +gboolean draw(GtkWidget *widget, GdkEventExpose *event, + void *data); + +void setupDrawlists(OUTPUT output); +#endif + +void init (GtkWidget *widget, void *data); + +void setupLighting(GtkWidget *widget); + +struct cc_features { + guint8 head_size; + guint8 left_eye_open, right_eye_open; /*booleans*/ + guint8 mouth_open; /*percentage*/ + guint8 head_x_rot, head_y_rot, head_z_rot; /* head rotation */ + guint8 x, y; /*center of head*/ + guint8 head_color, appendage_color, lid_color, right_iris_color, left_iris_color; //colors + guint8 mode, kind; +}; + +struct output_instance { + struct cc_features *features; + struct cc_session *session; + float past_y; + OUTPUT my_output; + GtkWidget *widget; + GtkWidget *box; +}; + +struct input_instance { + int timer_id; + struct cc_features face; + GtkWidget *widget; + GtkWidget *box; + GtkWidget *button; + GtkWidget *label; + GtkWidget *model; + GtkWidget *head, *appendage, *lid, *right_iris, *left_iris; + struct output_instance output; +}; + +struct output_handlers { + int (*configure)(GtkWidget *widget, GdkEventConfigure *event, + void *data); + void (*init) (GtkWidget *widget, void *data); + gboolean (*draw) (GtkWidget *widget, GdkEventExpose *event, void *data); +}; + +struct cc_session { + struct crazychat *cc; /**< crazychat global data */ + char *name; /**< session peer */ + guint32 peer_ip; /**< peer's ip addr, nbo */ + guint16 peer_port; /**< peer's port hbo */ + struct sockaddr_in peer; /**< peer udp sock addr */ + CC_STATE state; /**< connection state */ + int timer_id; /**< glib timer callback id */ + int tcp_sock; /**< tcp socket connection */ + int udp_sock; /**< udp socket connection */ + struct cc_features features; /**< network peer features */ + struct output_instance *output; /**< output instance data */ + filter_bank *filter; /**< filter instance */ +}; + +struct crazychat { + guint16 tcp_port; /**< tcp port to bind on */ + guint16 udp_port; /**< udp session data port */ + struct cc_session_node *sessions; /**< list of sessions */ + struct input_instance *input_data; /**< input instance data */ + gboolean features_state; /**< features state on/off */ +}; + +/* --- input feature interface --- */ + +#ifdef _DISABLE_QT_ +#define init_input(a) NULL +#define destroy_input(a) +#else + +/** + * Initializes the input subsystem. + * @param cc global crazychat data structure + * @return pointer to an input instance + */ +struct input_instance *init_input(struct crazychat *cc); + +/** + * Destroys the input subsystem. + * @param instance input instance + */ +void destroy_input(struct input_instance *instance); + +#endif /* _DISABLE_QT_ */ + +/* --- output feature interface --- */ + +/** + * Initializes an output instance. + * @param features pointer to features + * @param session pointer to the crazychat session + * @return pointer to the output instance + */ +struct output_instance *init_output(struct cc_features *features, + struct cc_session *session); + +/** + * Destroys an output instance. + * @param instance output instance + */ +void destroy_output(struct output_instance *instance); + +#endif