pidgin/plugins/crazychat/cc_features.c

Sun, 09 Nov 2008 20:55:10 +0000

author
Marcus Lundblad <malu@pidgin.im>
date
Sun, 09 Nov 2008 20:55:10 +0000
branch
maiku.vv
changeset 26159
24ffae1874f1
parent 20036
3bdbea94ad0c
child 31294
73607ab89c6f
permissions
-rw-r--r--

Added menu items to buddy list context menu to start voice and video sessions
After discussing the matter with Maiku, we decided to have two choises.
"Audio call" which will show up if audio sessions is possible with a buddy and
the other item is either "Audio/Video" or "Video" depending on if the buddy
supports both at the same time or not

11232
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
1 #include <assert.h>
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
2 #include <GL/gl.h>
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
3 #include <GL/glu.h>
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
4 #include "cc_interface.h"
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
5 #include "crazychat.h"
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
6
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
7 #include "Utilities.h"
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
8 #include "QTUtilities.h"
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
9 #include "camdata.h"
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
10 #include "camproc.h"
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
11 #include "util.h"
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
12 #include <unistd.h>
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
13
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
14
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
15 #ifdef __APPLE_CC__
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
16 #include <Carbon/Carbon.h>
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
17 #else
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
18 #include <Carbon.h>
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
19 #endif
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
20
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
21 /* temporarily including for development testing */
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
22 #include "cc_gtk_gl.h"
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
23
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
24 /* hard coding the webcam dimensions: BAD, but we're not probing hardware yet */
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
25
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
26 #define WEBCAM_X 644 /* webcam's x dim */
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
27 #define WEBCAM_Y 480 /* webcam's y dim */
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
28
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
29 /* default webcam timer callback delay */
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
30 #define WEBCAM_CALLBACK_DELAY 40 /* in ms */
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
31
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
32 int x_click, y_click;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
33 int mode_change=0;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
34
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
35 struct input_instance input_data;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
36
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
37 /* move this to input_instance eventually */
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
38 /*
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
39 UInt32 colorBuf[WEBCAM_Y][WEBCAM_X];
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
40 */
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
41 unsigned int (*colorBuf)[640];
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
42 int detection_mode=0;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
43 int draw_mode=0; //0=pixels, 1=face
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
44 int easter_count;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
45 static void *kickstart(void *data);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
46 static void *facefind(void *data);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
47
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
48 /**
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
49 * Resets the OpenGL viewport stuff on widget reconfiguration (resize,
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
50 * reposition)
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
51 * @param widget widget that got reconfigured
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
52 * @param event the configuration event
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
53 * @param data unused
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
54 * @return TRUE ( i don't know what FALSE would do )
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
55 */
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
56 static gboolean config_wrapper(GtkWidget *widget, GdkEventConfigure *event,
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
57 void *data);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
58
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
59 /**
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
60 * Debug features test. Draws pixels directly to the frame buffer.
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
61 * @param widget widget that we're drawing
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
62 * @param event the draw event
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
63 * @param data array of pixels
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
64 * @return DUNNO
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
65 */
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
66 static gboolean mydraw(GtkWidget *widget, GdkEventExpose *event,
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
67 void *data);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
68
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
69 /**
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
70 * Periodically querys the webcam for more data.
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
71 * @param instance webcam input instance data
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
72 * @return TRUE to stop other handler, FALSE to continue
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
73 */
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
74 static gboolean webcam_cb(struct input_instance *instance);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
75
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
76 /**
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
77 * Init window code, adding our click callback.
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
78 * @param widget the window we clicked in
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
79 * @param instance webcam input instance data
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
80 */
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
81 static void init_cb(GtkWidget *widget, struct input_instance *instance);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
82
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
83 /**
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
84 * Click callback
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
85 * @param widget the window we clicked in
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
86 * @param event the button click event structure
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
87 * @param instance input instance data
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
88 * @return TRUE to stop other handler, FALSE to continue
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
89 */
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
90 static gboolean click_cb(GtkWidget *widget, GdkEventButton *event,
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
91 struct input_instance *instance);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
92
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
93 /**
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
94 * Button callback
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
95 * @param button the button we clicked on
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
96 * @param instance input instance data
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
97 */
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
98 static void button_cb(GtkWidget *button, struct input_instance *instance);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
99
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
100 /**
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
101 * Destroy callback. Called when the input processing window is destroyed.
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
102 * @param widget the window we clicked in
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
103 * @param cc crazychat global data structure
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
104 */
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
105 static void destroy_cb(GtkWidget *widget, struct crazychat *cc);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
106
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
107 /**
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
108 * Set feature material.
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
109 * @param entry model selector combo box entry
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
110 * @param material pointer to material we're setting
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
111 */
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
112 static void material_set(GtkWidget *entry, guint8 *material);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
113
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
114 struct input_instance *init_input(struct crazychat *cc)
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
115 {
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
116
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
117 /*pthread_t userinput_t; // should we put this in a nicer wrapper?*/
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
118 struct draw_info *info;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
119 struct input_instance *instance;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
120 info = (struct draw_info*)malloc(sizeof(*info));
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
121 assert(info);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
122 memset(info, 0, sizeof(*info));
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
123 info->timeout = TRUE;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
124 info->delay_ms = DEFAULT_FRAME_DELAY;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
125 info->data = &input_data;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
126 instance = (struct input_instance*)info->data;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
127 memset(instance, 0, sizeof(*instance));
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
128 instance->output.features = &instance->face;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
129 EnterMovies();
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
130 filter_bank *bank;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
131 bank = Filter_Initialize();
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
132 assert(CamProc(instance, bank) == noErr); // change this prototype-> no windows
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
133 instance->timer_id = g_timeout_add(WEBCAM_CALLBACK_DELAY,
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
134 (GSourceFunc)webcam_cb, instance);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
135 /* THREAD_CREATE(&userinput_t, facefind, instance); // is this being created correctly?*/
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
136 struct window_box ret;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
137 cc_new_gl_window(init_cb, config_wrapper, mydraw,
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
138 info, &ret);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
139 instance->widget = ret.window;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
140 gtk_window_set_title(GTK_WINDOW(ret.window), "Local User");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
141 instance->box = ret.vbox;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
142 GtkWidget *label = gtk_label_new("Click your face");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
143 instance->label = label;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
144 gtk_box_pack_start(GTK_BOX(ret.vbox), label, FALSE, FALSE, 0);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
145 gtk_box_reorder_child(GTK_BOX(ret.vbox), label, 0);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
146 gtk_widget_show(label);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
147 GtkWidget *button = gtk_button_new_with_label("Confirm");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
148 gtk_box_pack_start(GTK_BOX(ret.vbox), button, FALSE, FALSE, 0);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
149 g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(button_cb),
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
150 instance);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
151 instance->button = button;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
152 gtk_widget_show(button);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
153
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
154 GtkWidget *hbox = gtk_hbox_new(TRUE, 0);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
155 gtk_box_pack_start(GTK_BOX(ret.vbox), hbox, FALSE, FALSE, 0);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
156 gtk_widget_show(hbox);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
157
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
158 GList *glist = NULL;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
159 glist = g_list_append(glist, "Dog");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
160 glist = g_list_append(glist, "Shark");
20036
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
161 instance->model = pidgin_text_combo_box_entry_new(NULL, glist);
11232
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
162 g_list_free(glist);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
163 //gtk_combo_box_set_column_span_column(GTK_COMBO(model_combo),
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
164 // 10);
20036
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
165 gtk_box_pack_start(GTK_BOX(hbox), instance->model, TRUE, TRUE, 0);
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
166 gtk_widget_show(instance->model);
11232
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
167
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
168 glist = NULL;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
169 glist = g_list_append(glist, "Red");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
170 glist = g_list_append(glist, "Dark Brown");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
171 glist = g_list_append(glist, "Light Brown");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
172 glist = g_list_append(glist, "White");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
173 glist = g_list_append(glist, "Green");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
174 glist = g_list_append(glist, "Black");
20036
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
175 instance->head = pidgin_text_combo_box_entry_new(NULL, glist);
11232
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
176 g_list_free(glist);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
177 //gtk_combo_box_set_column_span_column(GTK_COMBO(head_material_combo),
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
178 // 10);
20036
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
179 gtk_box_pack_start(GTK_BOX(hbox), instance->head, TRUE, TRUE, 0);
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
180 gtk_widget_show(instance->head);
11232
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
181
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
182 glist = NULL;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
183 glist = g_list_append(glist, "Red");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
184 glist = g_list_append(glist, "Dark Brown");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
185 glist = g_list_append(glist, "Light Brown");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
186 glist = g_list_append(glist, "White");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
187 glist = g_list_append(glist, "Green");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
188 glist = g_list_append(glist, "Black");
20036
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
189 instance->appendage = pidgin_text_combo_box_entry_new(NULL, glist);
11232
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
190 g_list_free(glist);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
191 //gtk_combo_box_set_column_span_column(GTK_COMBO(appendage_material_combo), 10);
20036
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
192 gtk_box_pack_start(GTK_BOX(hbox), instance->appendage,
11232
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
193 TRUE, TRUE, 0);
20036
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
194 gtk_widget_show(instance->appendage);
11232
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
195
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
196 hbox = gtk_hbox_new(TRUE, 0);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
197 gtk_box_pack_start(GTK_BOX(ret.vbox), hbox, FALSE, FALSE, 0);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
198 gtk_widget_show(hbox);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
199
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
200 glist = NULL;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
201 glist = g_list_append(glist, "Red");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
202 glist = g_list_append(glist, "Dark Brown");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
203 glist = g_list_append(glist, "Light Brown");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
204 glist = g_list_append(glist, "White");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
205 glist = g_list_append(glist, "Green");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
206 glist = g_list_append(glist, "Black");
20036
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
207 instance->lid = pidgin_text_combo_box_entry_new(NULL, glist);
11232
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
208 g_list_free(glist);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
209 //gtk_combo_box_set_column_span_column(GTK_COMBO(lids_material_combo), 10);
20036
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
210 gtk_box_pack_start(GTK_BOX(hbox), instance->lid, TRUE, TRUE, 0);
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
211 gtk_widget_show(instance->lid);
11232
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
212
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
213 glist = NULL;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
214 glist = g_list_append(glist, "Red");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
215 glist = g_list_append(glist, "Dark Brown");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
216 glist = g_list_append(glist, "Light Brown");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
217 glist = g_list_append(glist, "White");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
218 glist = g_list_append(glist, "Green");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
219 glist = g_list_append(glist, "Black");
20036
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
220 instance->left_iris = pidgin_text_combo_box_entry_new(NULL, glist);
11232
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
221 g_list_free(glist);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
222 //gtk_combo_box_set_column_span_column(GTK_COMBO(left_iris_material_combo), 10);
20036
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
223 gtk_box_pack_start(GTK_BOX(hbox), instance->left_iris, TRUE, TRUE, 0);
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
224 gtk_widget_show(instance->left_iris);
11232
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
225
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
226 /*
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
227 glist = NULL;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
228 glist = g_list_append(glist, "Red");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
229 glist = g_list_append(glist, "Dark Brown");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
230 glist = g_list_append(glist, "Light Brown");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
231 glist = g_list_append(glist, "White");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
232 glist = g_list_append(glist, "Green");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
233 glist = g_list_append(glist, "Black");
20036
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
234 instance->right_iris = pidgin_text_combo_box_entry_new(NULL, glist);
11232
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
235 g_list_free(glist);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
236 //gtk_combo_box_set_column_span_column(GTK_COMBO(right_iris_material_combo), 10);
20036
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
237 gtk_box_pack_start(GTK_BOX(hbox), instance->right_iris, TRUE, TRUE, 0);
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15435
diff changeset
238 gtk_widget_show(instance->right_iris);
11232
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
239 */
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
240 gtk_widget_add_events(ret.draw_area, GDK_BUTTON_PRESS_MASK);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
241 g_signal_connect(G_OBJECT(ret.draw_area), "button_press_event",
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
242 G_CALLBACK(click_cb), instance);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
243 g_signal_connect(G_OBJECT(ret.window), "destroy",
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
244 G_CALLBACK(destroy_cb), cc);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
245 // gtk_widget_set_size_request(window, 640, 480);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
246 gtk_window_set_default_size(GTK_WINDOW(ret.window),320,300);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
247
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
248
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
249 GdkGeometry hints;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
250 hints.max_width = 640;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
251 hints.max_height = 480;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
252
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
253 gtk_window_set_geometry_hints (GTK_WINDOW(ret.window),
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
254 NULL,
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
255 &hints,
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
256 GDK_HINT_MAX_SIZE);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
257 gtk_widget_show(ret.window);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
258 return instance;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
259 }
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
260
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
261 static gboolean webcam_cb(struct input_instance *instance)
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
262 {
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
263 assert(instance);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
264 QueryCam();
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
265 return TRUE;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
266 }
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
267
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
268 static void *facefind(void *data)
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
269 {
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
270 fprintf(stderr, "waiting\n");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
271 getchar();
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
272 fprintf(stderr,"got you");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
273 detection_mode=1;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
274 return;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
275 }
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
276
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
277 void destroy_input(struct input_instance *instance)
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
278 {
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
279 extern filter_bank *bank;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
280 assert(instance);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
281 Filter_Destroy(bank);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
282 g_source_remove(instance->timer_id);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
283 Die();
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
284 ExitMovies();
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
285 }
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
286
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
287 static gboolean config_wrapper(GtkWidget *widget, GdkEventConfigure *event,
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
288 void *data)
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
289 {
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
290
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
291
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
292 GdkGLContext *glcontext = gtk_widget_get_gl_context(widget);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
293 GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable(widget);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
294
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
295 GLfloat w = widget->allocation.width;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
296 GLfloat h = widget->allocation.height;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
297 GLfloat aspect;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
298
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
299 // fprintf(stderr,"Homicide %f %f %d\n", w,h,draw_mode);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
300
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
301 if (draw_mode==1){
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
302 // fprintf(stderr, "Bad place to be- actually not so bad\n");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
303 return configure(widget, event, data);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
304 }
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
305
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
306 /*** OpenGL BEGIN ***/
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
307 if (!gdk_gl_drawable_gl_begin(gldrawable, glcontext))
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
308 return FALSE;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
309
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
310
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
311 /* Undo all of the Model lighting here*/
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
312
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
313 // glDisable(GL_LIGHTING);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
314 glDisable(GL_DEPTH_TEST);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
315 // glDisable(GL_CULL_FACE);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
316 // glDisable(GL_LIGHT0);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
317 // glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
318 /* */
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
319
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
320
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
321 glViewport(0,-(h/14),w*2,h*2);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
322
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
323 glMatrixMode(GL_PROJECTION);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
324 glLoadIdentity();
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
325 gluOrtho2D(0,0,640,640);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
326 glRasterPos2i(0,0);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
327 glPixelZoom(-w/(1*640),(-h/(1*480)));
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
328 glMatrixMode(GL_MODELVIEW);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
329 glLoadIdentity();
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
330
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
331
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
332
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
333
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
334 gdk_gl_drawable_gl_end(gldrawable);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
335 /*** OpenGL END ***/
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
336
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
337 return TRUE;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
338 }
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
339
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
340 static gboolean mydraw(GtkWidget *widget, GdkEventExpose *event,
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
341 void *data)
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
342 {
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
343 GdkGLContext *glcontext = gtk_widget_get_gl_context (widget);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
344 GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable (widget);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
345 struct input_instance *instance = (struct input_instance*)data;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
346 unsigned int *boo;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
347 struct cc_features *features = &instance->face;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
348
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
349 char *string = gtk_entry_get_text(GTK_COMBO(instance->model)->entry);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
350 if (!strcmp(string, "Dog")) {
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
351 features->kind = 0;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
352 } else if (!strcmp(string, "Shark")) {
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
353 features->kind = 1;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
354 }
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
355
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
356 material_set(GTK_ENTRY(GTK_COMBO(instance->head)->entry),
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
357 &features->head_color);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
358 material_set(GTK_ENTRY(GTK_COMBO(instance->appendage)->entry),
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
359 &features->appendage_color);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
360 material_set(GTK_ENTRY(GTK_COMBO(instance->lid)->entry),
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
361 &features->lid_color);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
362 material_set(GTK_ENTRY(GTK_COMBO(instance->left_iris)->entry),
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
363 &features->left_iris_color);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
364 material_set(GTK_ENTRY(GTK_COMBO(instance->left_iris)->entry),
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
365 &features->right_iris_color);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
366
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
367 if (easter_count>0) {
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
368 easter_count--;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
369 } else {
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
370 instance->face.mode = 0;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
371 }
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
372
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
373 if (mode_change>0){
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
374 mode_change--;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
375 config_wrapper(widget, event, data);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
376 }
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
377
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
378 if (draw_mode==1){
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
379 instance->output.my_output=LOCAL;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
380 return draw(widget,event,&instance->output);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
381 }
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
382
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
383
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
384 boo = (unsigned int*)colorBuf;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
385
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
386 assert(instance);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
387 assert(gtk_widget_is_gl_capable(widget));
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
388
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
389 /*** OpenGL BEGIN ***/
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
390
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
391 if (!gdk_gl_drawable_gl_begin(gldrawable, glcontext)) {
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
392 // fprintf(stderr, "We're fucked this time.\n");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
393 return FALSE;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
394 }
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
395
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
396 glClearColor(0.0, 0.0, 0.0, 0.0);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
397 glClear(GL_COLOR_BUFFER_BIT);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
398
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
399 glDrawPixels(WEBCAM_X, WEBCAM_Y-70, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, boo);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
400
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
401 if (gdk_gl_drawable_is_double_buffered(gldrawable))
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
402 gdk_gl_drawable_swap_buffers(gldrawable);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
403 else
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
404 glFlush();
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
405
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
406 gdk_gl_drawable_gl_end(gldrawable);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
407
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
408 /*** OpenGL END ***/
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
409
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
410 return TRUE;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
411 }
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
412
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
413 static void init_cb(GtkWidget *widget, struct input_instance *instance)
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
414 {
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
415 // setupDrawlists(LOCAL);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
416 // fprintf(stderr,"init_cb\n");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
417 }
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
418
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
419 static gboolean click_cb(GtkWidget *widget, GdkEventButton *event,
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
420 struct input_instance *instance)
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
421 {
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
422
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
423 GLfloat w = widget->allocation.width;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
424 GLfloat h = widget->allocation.height;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
425 GLfloat aspect;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
426
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
427 if (draw_mode==1) {
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
428 switch (event->button) {
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
429 case 1:
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
430 Debug("F U!\n");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
431 instance->face.mode = 1;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
432 easter_count = 5;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
433 break;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
434 case 3:
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
435 Debug("should never get here\n");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
436 instance->face.mode = 2;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
437 easter_count = 5;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
438 break;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
439 default:
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
440 instance->face.mode = 0;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
441 break;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
442 }
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
443 return FALSE;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
444 }
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
445
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
446 x_click=(event->x*(640/w));
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
447 x_click=640-x_click;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
448 y_click=(event->y-(h/14))*(480/(h-(h/14)));
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
449 detection_mode=1;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
450 //Debug("@@@ x:%d y:%d\n", x_click, y_click);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
451
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
452 gtk_label_set_text(instance->label,
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
453 "Put on the box, then press confirm.");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
454 if (x_click <= 10) x_click=10;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
455 if (x_click >= WEBCAM_X-10) x_click=WEBCAM_X-60;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
456 if (y_click <= 10) y_click=10;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
457 if (y_click >= WEBCAM_Y-10) y_click=WEBCAM_Y-60;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
458
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
459 return FALSE;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
460 }
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
461
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
462 static void button_cb(GtkWidget *button, struct input_instance *instance)
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
463 {
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
464 if (!draw_mode) { /* transition to face mode */
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
465 if (detection_mode == 0) { /* ignore confirm if no calibrate */
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
466 return;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
467 }
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
468 setupLighting(instance->widget);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
469 mode_change = 1;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
470 gtk_button_set_label(GTK_BUTTON(button), "Calibrate");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
471 gtk_label_set_label(instance->label,
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
472 "If things get too crazy, click Calibrate.");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
473 } else { /* transition to calibration mode */
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
474 gtk_label_set_label(instance->label, "Click your face");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
475 mode_change = 2;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
476 gtk_button_set_label(GTK_BUTTON(button), "Confirm");
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
477 }
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
478 draw_mode = !draw_mode;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
479 }
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
480
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
481 static void destroy_cb(GtkWidget *widget, struct crazychat *cc)
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
482 {
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
483 cc->features_state = 0;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
484 destroy_input(cc->input_data);
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
485 cc->input_data = NULL;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
486 }
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
487
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
488 static void material_set(GtkWidget *entry, guint8 *material)
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
489 {
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
490 char *string = gtk_entry_get_text(GTK_ENTRY(entry));
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
491 if (!strcmp(string, "Red")) {
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
492 *material = 0;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
493 } else if (!strcmp(string, "Dark Brown")) {
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
494 *material = 1;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
495 } else if (!strcmp(string, "Light Brown")) {
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
496 *material = 2;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
497 } else if (!strcmp(string, "White")) {
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
498 *material = 3;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
499 } else if (!strcmp(string, "Green")) {
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
500 *material = 4;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
501 } else if (!strcmp(string, "Black")) {
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
502 *material = 5;
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
503 }
27bb80119f01 [gaim-migrate @ 13372]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
504 }

mercurial