pidgin/plugins/crazychat/cc_features.c

Fri, 14 Sep 2007 08:27:26 +0000

author
Sadrul Habib Chowdhury <sadrul@pidgin.im>
date
Fri, 14 Sep 2007 08:27:26 +0000
changeset 20036
3bdbea94ad0c
parent 15435
4b933b06d75e
child 31294
73607ab89c6f
permissions
-rw-r--r--

Part of #1332 to introduce pidgin_text_combo_box_new_entry and
accessor functions. I made some changes to:
* Not leak
* Popup the dropdown when up/down arrows are pressed, to imitate the old
behaviour to some extent.
* Change the accessor defines to accessor functions.
I think this all works OK now. Yell at me if things don't work, and then fix
it. :-P

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