comparison 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
comparison
equal deleted inserted replaced
11231:64e2c65ef650 11232:8bcd4d4ccef6
1 #ifndef __CC_INTERFACE_H__
2 #define __CC_INTERFACE_H__
3
4 #include <gtk/gtk.h>
5 #include "crazychat.h"
6
7 /* XXX feature encapsulation: still in flux, not stable XXX */
8
9 //charlie
10 typedef enum {REMOTE, LOCAL} OUTPUT;
11
12 gboolean configure(GtkWidget *widget,
13 GdkEventConfigure *event, void *data);
14
15 #ifdef DISABLE_MODELS
16 #define draw(a, b, c) 1
17 #define setupDrawlists(a)
18 #else
19 gboolean draw(GtkWidget *widget, GdkEventExpose *event,
20 void *data);
21
22 void setupDrawlists(OUTPUT output);
23 #endif
24
25 void init (GtkWidget *widget, void *data);
26
27 void setupLighting(GtkWidget *widget);
28
29 struct cc_features {
30 guint8 head_size;
31 guint8 left_eye_open, right_eye_open; /*booleans*/
32 guint8 mouth_open; /*percentage*/
33 guint8 head_x_rot, head_y_rot, head_z_rot; /* head rotation */
34 guint8 x, y; /*center of head*/
35 guint8 head_color, appendage_color, lid_color, right_iris_color, left_iris_color; //colors
36 guint8 mode, kind;
37 };
38
39 struct output_instance {
40 struct cc_features *features;
41 struct cc_session *session;
42 float past_y;
43 OUTPUT my_output;
44 GtkWidget *widget;
45 GtkWidget *box;
46 };
47
48 struct input_instance {
49 int timer_id;
50 struct cc_features face;
51 GtkWidget *widget;
52 GtkWidget *box;
53 GtkWidget *button;
54 GtkWidget *label;
55 GtkWidget *model;
56 GtkWidget *head, *appendage, *lid, *right_iris, *left_iris;
57 struct output_instance output;
58 };
59
60 struct output_handlers {
61 int (*configure)(GtkWidget *widget, GdkEventConfigure *event,
62 void *data);
63 void (*init) (GtkWidget *widget, void *data);
64 gboolean (*draw) (GtkWidget *widget, GdkEventExpose *event, void *data);
65 };
66
67 struct cc_session {
68 struct crazychat *cc; /**< crazychat global data */
69 char *name; /**< session peer */
70 guint32 peer_ip; /**< peer's ip addr, nbo */
71 guint16 peer_port; /**< peer's port hbo */
72 struct sockaddr_in peer; /**< peer udp sock addr */
73 CC_STATE state; /**< connection state */
74 int timer_id; /**< glib timer callback id */
75 int tcp_sock; /**< tcp socket connection */
76 int udp_sock; /**< udp socket connection */
77 struct cc_features features; /**< network peer features */
78 struct output_instance *output; /**< output instance data */
79 filter_bank *filter; /**< filter instance */
80 };
81
82 struct crazychat {
83 guint16 tcp_port; /**< tcp port to bind on */
84 guint16 udp_port; /**< udp session data port */
85 struct cc_session_node *sessions; /**< list of sessions */
86 struct input_instance *input_data; /**< input instance data */
87 gboolean features_state; /**< features state on/off */
88 };
89
90 /* --- input feature interface --- */
91
92 #ifdef _DISABLE_QT_
93 #define init_input(a) NULL
94 #define destroy_input(a)
95 #else
96
97 /**
98 * Initializes the input subsystem.
99 * @param cc global crazychat data structure
100 * @return pointer to an input instance
101 */
102 struct input_instance *init_input(struct crazychat *cc);
103
104 /**
105 * Destroys the input subsystem.
106 * @param instance input instance
107 */
108 void destroy_input(struct input_instance *instance);
109
110 #endif /* _DISABLE_QT_ */
111
112 /* --- output feature interface --- */
113
114 /**
115 * Initializes an output instance.
116 * @param features pointer to features
117 * @param session pointer to the crazychat session
118 * @return pointer to the output instance
119 */
120 struct output_instance *init_output(struct cc_features *features,
121 struct cc_session *session);
122
123 /**
124 * Destroys an output instance.
125 * @param instance output instance
126 */
127 void destroy_output(struct output_instance *instance);
128
129 #endif