11232
|
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
|