pidgin/plugins/crazychat/camproc.c

Wed, 21 Sep 2011 06:45:26 +0000

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Wed, 21 Sep 2011 06:45:26 +0000
changeset 32575
eb4fc932fae9
parent 31294
73607ab89c6f
permissions
-rw-r--r--

Apply conversation theme when opening the GTK conversation. All the
parsing stuff was moved out of the theme code and into the conversation
code.

Someone (not me!) needs to check the code I commented out and see if
we really need that stuff (and then port it to WebKit/styling).

We also need to determine where to place Template.html and the rest
of our (not-yet-written) default theme.

11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
1 /*
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
2 * camproc.c
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
3 * basecame
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
4 *
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
5 * Created by CS194 on Mon Apr 26 2004.
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
6 * Copyright (c) 2004 __MyCompanyName__. All rights reserved.
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
7 *
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
8 */
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
9
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
10
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
11 #include "camdata.h"
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
12 #include "Utilities.h"
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
13 #include "QTUtilities.h"
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
14 #include "stdio.h"
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
15 #include "math.h"
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
16 #include <gtk/gtk.h>
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
17 #include "cc_interface.h"
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
18 #include "filter.h"
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
19
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
20
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
21 extern int detection_mode;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
22 extern mungDataPtr myMungData;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
23 extern int x_click;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
24 extern int y_click;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
25
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
26
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
27 #define kMinimumIdleDurationInMillis kEventDurationMillisecond
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
28 #define BailErr(x) {if (x != noErr) goto bail;}
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
29 #define PRE_CALIBRATE_MODE 0
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
30 #define CALIBRATE_MODE 1
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
31 #define SCAN_MODE 2
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
32
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
33 #define CALIB_TOP 190
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
34 #define CALIB_BOTTOM 200
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
35 #define CALIB_LEFT 200
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
36 #define CALIB_RIGHT 210
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
37
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
38 #define CALIB_RADIUS 5
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
39
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
40 #define NUM_FRAMES_EYE_SEARCH 50
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
41 #define EYE_UNCONFIDENCE_LIMIT 7
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
42
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
43 #define BLINK_THRESHOLD 75
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
44 #define BLINK_LENGTH 10
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
45 #define WHITE_THRESH 25
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
46 #define WHITE_COUNT_MAX 200
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
47
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
48
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
49 struct input_instance* instance;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
50 int scan_region_left;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
51 int scan_region_right;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
52 int scan_region_top;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
53 int scan_region_bottom;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
54
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
55 int lum_thresh=150;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
56 int face_left;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
57 int face_right;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
58 int face_top;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
59 int face_bottom;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
60 int old_left_eye_x=50;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
61 int old_left_eye_y=50;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
62 int old_right_eye_x=50;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
63 int old_right_eye_y=50;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
64 int left_eye_x;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
65 int left_eye_y;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
66 int right_eye_x;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
67 int right_eye_y;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
68 int eye_search_frame_count=0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
69 int bozo_bit=0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
70 int eye_unconfidence=0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
71 int last_eye_count_left=0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
72 int last_eye_count_right=0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
73 int mouth_ctr_x;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
74 int mouth_ctr_y;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
75 int mouth_size, mouth_left, mouth_right, mouth_top, mouth_bottom;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
76 int white_count;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
77 guint8 head_size_old;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
78 int left_eye_blink_count;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
79 int right_eye_blink_count;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
80
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
81 int left_eye_top, left_eye_bottom, left_eye_right, left_eye_left;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
82 int right_eye_top, right_eye_bottom, right_eye_right, right_eye_left;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
83
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
84 filter_bank *bank;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
85
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
86 static SeqGrabComponent mSeqGrab = NULL;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
87 static SGChannel mSGChanVideo = NULL;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
88 static SGDataUPP mMyDataProcPtr = NULL;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
89 static EventLoopTimerRef mSGTimerRef = 0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
90 static ImageSequence mDecomSeq = 0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
91 static EventLoopTimerUPP mSGTimerUPP = nil;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
92 static Rect mMungRect = {0, 0, 480, 640};
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
93 int lower_left_corner_x = 200;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
94 int lower_left_corner_y = 200;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
95 int upper_right_corner_x = 210;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
96 int upper_right_corner_y = 190;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
97
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
98
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
99 static pascal OSErr MiniMungDataProc(SGChannel c, Ptr p, long len, long *offset, long chRefCon, TimeValue time, short writeType, long refCon);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
100 static pascal void SGIdlingTimer(EventLoopTimerRef inTimer, void *inUserData);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
101 static void DetectLobster(GWorldPtr mungDataOffscreen);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
102 int SkinDetect(double Y, double E, double S);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
103 void ScanSkin(PixMapHandle p);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
104 void drawbox(int top, int bottom, int left, int right, int color);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
105 void SkinStats (PixMapHandle p, int top, int bottom, int left, int right);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
106 void SetEyeSearchRegions(void);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
107
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
108
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
109 typedef enum {RED, GREEN, BLUE} color;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
110 color saved_best=-1;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
111
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
112 int filenum=0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
113
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
114
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
115 OSErr CamProc(struct input_instance *inst, filter_bank *f)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
116 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
117 OSStatus error;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
118 OSErr err = noErr;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
119
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
120 BailErr(err = InitializeMungData(mMungRect));
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
121
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
122 bank = f;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
123
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
124 instance=inst;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
125 mMyDataProcPtr = NewSGDataUPP(MiniMungDataProc);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
126 mSeqGrab = OpenDefaultComponent(SeqGrabComponentType, 0);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
127 BailErr((err = CreateNewSGChannelForRecording( mSeqGrab,
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
128 mMyDataProcPtr,
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
129 GetMungDataOffscreen(), // drawing destination
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
130 &mMungRect,
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
131 &mSGChanVideo,
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
132 NULL)));
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
133
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
134 bail:
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
135 return err;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
136 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
137
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
138 void QueryCam (void)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
139 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
140 SGIdle(mSeqGrab);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
141 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
142
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
143 static pascal void SGIdlingTimer(EventLoopTimerRef inTimer, void *inUserData)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
144 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
145 #pragma unused(inUserData)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
146
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
147 if (mSeqGrab)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
148 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
149 SGIdle(mSeqGrab);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
150 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
151
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
152 // Reschedule the event loop timer
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
153 SetEventLoopTimerNextFireTime(inTimer, kMinimumIdleDurationInMillis);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
154 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
155
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
156 static pascal OSErr MiniMungDataProc(SGChannel c, Ptr p, long len, long *offset, long chRefCon, TimeValue time, short writeType, long refCon)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
157 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
158
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
159
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
160 #pragma unused(offset,chRefCon,time,writeType,refCon)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
161 ComponentResult err = noErr;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
162 CodecFlags ignore;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
163 GWorldPtr gWorld;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
164
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
165
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
166
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
167
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
168 if (!myMungData) goto bail;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
169
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
170 gWorld = GetMungDataOffscreen();
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
171 if(gWorld)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
172 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
173 if (mDecomSeq == 0) // init a decompression sequence
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
174 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
175 Rect bounds;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
176
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
177 GetMungDataBoundsRect(&bounds);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
178
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
179 BailErr( CreateDecompSeqForSGChannelData(c, &bounds, gWorld, &mDecomSeq));
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
180
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
181 if(1)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
182 //if ((!mUseOverlay) && (GetCurrentClamp() == -1) && (!mUseEffect))
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
183 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
184 ImageSequence drawSeq;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
185
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
186 err = CreateDecompSeqForGWorldData( gWorld,
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
187 &bounds,
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
188 nil,
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
189 GetMungDataWindowPort(),
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
190 &drawSeq);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
191 SetMungDataDrawSeq(drawSeq);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
192 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
193 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
194
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
195 // decompress data to our offscreen gworld
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
196 BailErr(DecompressSequenceFrameS(mDecomSeq,p,len,0,&ignore,nil));
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
197
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
198 // image is now in the GWorld - manipulate it at will!
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
199 //if ((mUseOverlay) || (GetCurrentClamp() != -1) || (mUseEffect))
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
200 //{
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
201 // use our custom decompressor to "decompress" the data
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
202 // to the screen with overlays or color clamping
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
203 // BlitOneMungData(myMungData);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
204 //}
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
205 //else
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
206 //{
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
207 // we are doing a motion detect grab, so
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
208 // search for lobsters in our image data
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
209 DetectLobster(gWorld);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
210 //}
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
211
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
212 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
213
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
214 bail:
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
215 return err;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
216 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
217
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
218 void Die()
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
219 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
220 //RemoveEventLoopTimer(mSGTimerRef);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
221 // mSGTimerRef = nil;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
222 // DisposeEventLoopTimerUPP(mSGTimerUPP);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
223 DoCloseSG(mSeqGrab, mSGChanVideo, mMyDataProcPtr);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
224
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
225 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
226
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
227
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
228 float Y_mean=-1;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
229 float Y_dev,E_mean,E_dev,S_mean,S_dev;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
230 /*
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
231 extern colorBuf[480][640];
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
232 */
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
233 extern unsigned int (*colorBuf)[644];
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
234 extern struct input_instance input_data;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
235
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
236 static void DetectLobster(GWorldPtr mungDataOffscreen)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
237 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
238 CGrafPtr oldPort;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
239 GDHandle oldDevice;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
240 int x, y;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
241 Rect bounds;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
242 PixMapHandle pix = GetGWorldPixMap(mungDataOffscreen);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
243 UInt32 * baseAddr;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
244 UInt32 reds = 0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
245 Str255 tempString;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
246 int minX = 10000, maxX = -10000;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
247 int minY = 10000, maxY = -10000;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
248 Rect tempRect;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
249 float percent;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
250 OSErr err;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
251 CodecFlags ignore;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
252 color best;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
253 long R_total=0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
254 long G_total=0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
255 long B_total=0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
256
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
257
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
258
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
259 //fprintf(stderr, "Starting to find some lobsters...\n");
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
260
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
261
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
262 GetPortBounds(mungDataOffscreen, &bounds);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
263 OffsetRect(&bounds, -bounds.left, -bounds.top);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
264
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
265
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
266 UInt32 color;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
267
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
268
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
269 int sum_x,sum_y=0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
270 int count=0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
271 int k,j;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
272 long R;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
273 long G;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
274 long B;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
275 int search_width=200;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
276 int search_height=200;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
277
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
278
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
279 colorBuf = GetPixBaseAddr(pix);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
280
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
281 switch (detection_mode) {
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
282
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
283 case PRE_CALIBRATE_MODE:
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
284 //drawbox(CALIB_TOP, CALIB_BOTTOM, CALIB_LEFT, CALIB_RIGHT);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
285 break;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
286
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
287 case CALIBRATE_MODE:
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
288 SkinStats(pix, y_click-CALIB_RADIUS, y_click+CALIB_RADIUS, x_click-CALIB_RADIUS, x_click+CALIB_RADIUS);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
289 scan_region_left=x_click-CALIB_RADIUS;//10;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
290 scan_region_right=x_click+CALIB_RADIUS;//630;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
291 scan_region_top=y_click-CALIB_RADIUS;//10;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
292 scan_region_bottom=y_click+CALIB_RADIUS;//470;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
293 ScanSkin(pix);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
294 detection_mode=SCAN_MODE;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
295 //fprintf(stderr, "scan left: %d scan right: %d \n",scan_region_left,scan_region_right);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
296 head_size_old=50;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
297 break;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
298
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
299 case SCAN_MODE:
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
300 ScanSkin(pix);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
301 drawbox(face_top, face_bottom, face_left, face_right,1);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
302 //drawbox(scan_region_top, scan_region_bottom, scan_region_left, scan_region_right);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
303 drawbox((left_eye_y-5),(left_eye_y+5),(left_eye_x-5),(left_eye_x+5),0);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
304 drawbox((right_eye_y-5),(right_eye_y+5),(right_eye_x-5),(right_eye_x+5),0);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
305 int face_scale=instance->face.head_size;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
306 int mouth_width=face_scale;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
307 int mouth_height=face_scale;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
308 // if (bozo_bit==1) drawbax((mouth_ctr_y-mouth_height),(mouth_ctr_y+mouth_height),(mouth_ctr_x-mouth_width),(mouth_ctr_x+mouth_width));
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
309 filter(&instance->face, bank);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
310 break;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
311 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
312
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
313 //fprintf(stderr, "Lobsters found...\n");
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
314
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
315
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
316 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
317
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
318
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
319
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
320
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
321 void ScanSkin(PixMapHandle p)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
322 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
323 int y,x,j,k;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
324 int right_eye_x_sum,right_eye_y_sum,left_eye_x_sum,left_eye_y_sum,right_eye_pt_count,left_eye_pt_count;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
325 right_eye_x_sum=right_eye_y_sum=left_eye_x_sum=left_eye_y_sum=right_eye_pt_count=left_eye_pt_count=0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
326 long R,G,B,sum_x,sum_y;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
327 int count;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
328 double Y,E,S,lum;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
329 double min_lum_mouth=766;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
330 double min_lum_left=766;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
331 double min_lum_right=766;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
332 UInt32 color;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
333 UInt32 * baseAddr;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
334 int max_horz=0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
335 int max_vert=0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
336 sum_x=sum_y=count=0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
337 int horz_count[480];
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
338 int vert_count[640];
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
339
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
340
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
341
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
342 memset(horz_count,0,480*sizeof(int));
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
343 memset(vert_count,0,640*sizeof(int));
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
344
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
345 if (eye_search_frame_count<NUM_FRAMES_EYE_SEARCH) eye_search_frame_count++;
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
346 else if (eye_search_frame_count==NUM_FRAMES_EYE_SEARCH && bozo_bit==0)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
347 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
348 bozo_bit=1;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
349 //fprintf(stderr, "GOOD You flipped the bozo bit (to good)\n");
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
350 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
351
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
352 SetEyeSearchRegions();
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
353
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
354
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
355 for (y = scan_region_top; y < scan_region_bottom; y++) // change this to only calculate in bounding box
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
356 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
357 baseAddr = (UInt32*)(GetPixBaseAddr(p) + y * GetPixRowBytes(p));
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
358 for (x = scan_region_left; x < scan_region_right; x++)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
359 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
360 color=baseAddr[x];
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
361 R = (color & 0x00FF0000) >> 16;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
362 G = (color & 0x0000FF00) >> 8;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
363 B = (color & 0x000000FF) >> 0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
364 Y=.253*R+.684*G+.063*B;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
365 E=.5*R-.5*G;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
366 S=.25*R+.25*G-.5*B;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
367 lum=R+G+B;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
368
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
369 if (y>left_eye_top && y<left_eye_bottom)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
370 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
371 if (x > left_eye_left && x<left_eye_right)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
372 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
373 if (lum < lum_thresh) {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
374 left_eye_x_sum+=x;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
375 left_eye_y_sum+=y;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
376 left_eye_pt_count++;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
377 //colorBuf[y][x]=0x0000FF00;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
378 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
379 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
380 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
381 if (y>right_eye_top && y<right_eye_bottom)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
382 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
383 if (x > right_eye_left && x < right_eye_right)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
384 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
385 if (lum < lum_thresh) {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
386 right_eye_x_sum+=x;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
387 right_eye_y_sum+=y;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
388 right_eye_pt_count++;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
389 //colorBuf[y][x]=0x0000FF00;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
390 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
391 }
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
392 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
393
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
394 if(SkinDetect(Y,E,S))
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
395 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
396 sum_x+=x;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
397 sum_y+=y;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
398 count++;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
399
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
400 ++horz_count[y];
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
401 ++vert_count[x];
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
402
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
403 if (horz_count[y]>max_horz) max_horz=horz_count[y];
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
404 if (vert_count[x]>max_vert) max_vert=vert_count[x];
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
405
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
406 //colorBuf[y][x]=0x00FF0000;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
407 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
408
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
409 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
410 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
411
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
412
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
413 left_eye_x=left_eye_x_sum/left_eye_pt_count;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
414 left_eye_y=left_eye_y_sum/left_eye_pt_count;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
415 right_eye_x=right_eye_x_sum/right_eye_pt_count;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
416 right_eye_y=right_eye_y_sum/right_eye_pt_count;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
417
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
418
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
419
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
420 int width=right_eye_x-left_eye_x;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
421 int height=right_eye_y-left_eye_y;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
422 double face_ang;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
423 if (width!=0) face_ang=atan((double)height/width);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
424 else face_ang=0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
425 face_ang=face_ang*180/pi;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
426 //fprintf(stderr,"face angle: %f \n",face_ang);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
427
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
428 if ((left_eye_pt_count<5 || right_eye_pt_count<5 || width==0 || face_ang > 30 || face_ang < -30
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
429 || left_eye_y < (face_top+.15*(face_bottom-face_top))
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
430 || right_eye_y < (face_top+.15*(face_bottom-face_top)))
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
431 && bozo_bit==1){
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
432 eye_unconfidence++;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
433 left_eye_x=old_left_eye_x;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
434 left_eye_y=old_left_eye_y;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
435 right_eye_x=old_right_eye_x;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
436 right_eye_y=old_right_eye_y;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
437 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
438 else {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
439 eye_unconfidence=0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
440 old_left_eye_x=left_eye_x;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
441 old_left_eye_y=left_eye_y;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
442 old_right_eye_x=right_eye_x;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
443 old_right_eye_y=right_eye_y;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
444 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
445
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
446
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
447 if (eye_unconfidence==EYE_UNCONFIDENCE_LIMIT){
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
448 bozo_bit=0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
449 eye_search_frame_count=0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
450 //fprintf(stderr, "Recalibrating eyes\n");
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
451 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
452
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
453 if ((last_eye_count_left-left_eye_pt_count> BLINK_THRESHOLD) && eye_unconfidence==0)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
454 {
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
455 left_eye_blink_count=BLINK_LENGTH;
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
456 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
457 if (left_eye_blink_count>0){
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
458 instance->face.left_eye_open=0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
459 left_eye_blink_count--;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
460 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
461 else instance->face.left_eye_open=1;
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
462
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
463 if ((last_eye_count_right-right_eye_pt_count> BLINK_THRESHOLD) && eye_unconfidence==0)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
464 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
465 right_eye_blink_count=BLINK_LENGTH;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
466 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
467 if (right_eye_blink_count>0){
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
468 instance->face.right_eye_open=0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
469 right_eye_blink_count--;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
470 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
471 else instance->face.right_eye_open=1;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
472
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
473 if (instance->face.right_eye_open==0) instance->face.left_eye_open=0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
474 if (instance->face.left_eye_open==0) instance->face.right_eye_open=0;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
475
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
476 last_eye_count_left=left_eye_pt_count;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
477 last_eye_count_right=right_eye_pt_count;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
478
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
479 float x_shift=0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
480 if (width!=0) x_shift= (float)height/(float)width; // --> note dependence on earlier data here
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
481
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
482
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
483 if (bozo_bit==1){
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
484 int mouth_search_start_y=face_top+(.6*(face_bottom-face_top));
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
485 int mouth_search_end_y=face_bottom;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
486 int mouth_search_start_x=(left_eye_x+right_eye_x)/2 + (-x_shift*(mouth_search_start_y-((right_eye_y+left_eye_y)/2))) ;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
487
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
488 for (y=mouth_search_start_y; y < mouth_search_end_y; y++)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
489 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
490 x=mouth_search_start_x+((y - mouth_search_start_y)*(-x_shift));
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
491 baseAddr = (UInt32*)(GetPixBaseAddr(p) + y * GetPixRowBytes(p));
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
492 //colorBuf[y][x] = 0x0000FF00;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
493 color=baseAddr[x];
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
494 R = (color & 0x00FF0000) >> 16;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
495 G = (color & 0x0000FF00) >> 8;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
496 B = (color & 0x000000FF) >> 0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
497 lum=R+G+B;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
498
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
499 if (lum<min_lum_mouth) {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
500 min_lum_mouth=lum;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
501 mouth_ctr_x=x;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
502 mouth_ctr_y=y;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
503 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
504 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
505
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
506 mouth_size=(face_right-face_left)*100/640;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
507 mouth_left=mouth_ctr_x-mouth_size;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
508 if (mouth_left < face_left) mouth_left=face_left;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
509 mouth_right=mouth_ctr_x+mouth_size;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
510 if (mouth_right > face_right) mouth_right=face_right;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
511 mouth_top=mouth_ctr_y-mouth_size;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
512 if (mouth_top < face_top) mouth_top=face_top;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
513 mouth_bottom=mouth_ctr_y+mouth_size;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
514 if (mouth_bottom > face_bottom) mouth_bottom=face_bottom;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
515
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
516 white_count=0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
517
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
518 for (y=mouth_top; y< mouth_bottom; y++){
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
519 baseAddr = (UInt32*)(GetPixBaseAddr(p) + y * GetPixRowBytes(p));
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
520 for (x=mouth_left; x< mouth_right; x++){
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
521 color=baseAddr[x];
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
522 R = (color & 0x00FF0000) >> 16;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
523 G = (color & 0x0000FF00) >> 8;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
524 B = (color & 0x000000FF) >> 0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
525 if ((abs(R-G) < WHITE_THRESH) && (abs(G-B) < WHITE_THRESH) && (abs(R-B) < WHITE_THRESH))
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
526 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
527 white_count++;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
528 //colorBuf[y][x]=0x0000FF00;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
529 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
530 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
531 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
532
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
533 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
534 else white_count=10;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
535
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
536 // This next section finds the face region and sets the face_* parameters.
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
537
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
538 int scan;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
539 float thresh=.3;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
540 scan=scan_region_left+1;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
541 if (scan<0) scan=0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
542 //fprintf(stderr,"threshold value: %d boxtop value: %d \n", (max_horz), horz_count[scan_region_top]);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
543 while(1)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
544 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
545 if (vert_count[scan]>=(thresh*max_vert))
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
546 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
547 face_left=scan;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
548 break;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
549 }
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
550 scan++;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
551 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
552
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
553 scan=scan_region_right-1;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
554 if (scan>=640) scan=639;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
555 while(1)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
556 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
557 if (vert_count[scan]>=(thresh*max_vert))
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
558 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
559 face_right=scan;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
560 break;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
561 }
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
562 scan--;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
563 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
564
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
565 scan=scan_region_top+1;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
566 if (scan<0) scan=0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
567 while(1)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
568 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
569 if (horz_count[scan]>=(thresh*max_horz))
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
570 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
571 face_top=scan;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
572 break;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
573 }
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
574 scan++;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
575 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
576
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
577
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
578 scan=scan_region_bottom-1;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
579 if (scan>=480) scan=479;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
580 while(1)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
581 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
582 if (horz_count[scan]>=(thresh*max_horz))
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
583 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
584 face_bottom=scan;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
585 break;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
586 }
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
587 scan--;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
588 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
589
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
590 // Base scan region on face region here
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
591 scan_region_left=face_left-10;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
592 if (scan_region_left <= 0) scan_region_left=1;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
593 scan_region_right=face_right+10;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
594 if (scan_region_right >= 640) scan_region_right=639;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
595 scan_region_top=face_top-10;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
596 if (scan_region_top <= 0) scan_region_top=1;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
597 scan_region_bottom=face_bottom+10;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
598 if (scan_region_bottom >= 480) scan_region_bottom=479;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
599
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
600
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
601 // Calculate some stats
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
602
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
603 // face size
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
604 width=face_right-face_left;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
605 guint8 temp=width*100/640;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
606 instance->face.head_size=temp;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
607
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
608 // face location
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
609 temp=((double)100/(double)640)*(double)(face_right+face_left)/2;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
610 instance->face.x=temp;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
611 temp=((double)100/(double)480)*(double)(face_top+face_bottom)/2;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
612 instance->face.y=temp;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
613
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
614 // face angle-Z
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
615 instance->face.head_z_rot=face_ang+50;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
616
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
617 // face angle-Y
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
618 int center=(face_right+face_left)/2;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
619 int right_eye_strad=right_eye_x-center;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
620 int left_eye_strad=center-left_eye_x;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
621 double y_ang;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
622 if (right_eye_strad > left_eye_strad) y_ang= (double)right_eye_strad/(double)left_eye_strad;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
623 else y_ang=(double)left_eye_strad/(double)right_eye_strad;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
624 y_ang=y_ang*5;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
625 if (y_ang >= 10) y_ang=30;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
626 if (y_ang <= 1) y_ang=1;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
627
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
628 if (right_eye_strad > left_eye_strad) y_ang=-y_ang;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
629 temp = (guint8) 50 + y_ang;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
630 instance->face.head_y_rot=temp;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
631
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
632 if (abs (temp-50) > 15) instance->face.head_size=head_size_old;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
633 else head_size_old=instance->face.head_size;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
634
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
635 temp = (guint8) 100 * white_count / WHITE_COUNT_MAX;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
636 if (temp > 100) temp=100;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
637 instance->face.mouth_open = temp;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
638
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
639 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
640
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
641
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
642
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
643
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
644
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
645
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
646 // draw bounding box for either calibration or face
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
647
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
648
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
649 void SetEyeSearchRegions(void)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
650 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
651 if (bozo_bit==0)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
652 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
653 left_eye_top=face_top+(.25*(face_bottom-face_top));
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
654 left_eye_bottom=face_top+(.6*(face_bottom-face_top));
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
655 left_eye_right=((face_left+face_right)/2);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
656 left_eye_left=face_left+.15*(face_right-face_left);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
657
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
658 right_eye_top=face_top+(.25*(face_bottom-face_top));
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
659 right_eye_bottom=face_top+(.6*(face_bottom-face_top));
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
660 right_eye_right=face_right-.15*(face_right-face_left);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
661 right_eye_left=((face_left+face_right)/2);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
662 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
663
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
664 if (bozo_bit==1)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
665 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
666 left_eye_top=left_eye_y-20;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
667 left_eye_bottom=left_eye_y+20;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
668 left_eye_left=left_eye_x-20;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
669 left_eye_right=left_eye_x+20;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
670
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
671 right_eye_top=right_eye_y-20;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
672 right_eye_bottom=right_eye_y+20;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
673 right_eye_left=right_eye_x-20;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
674 right_eye_right=right_eye_x+20;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
675 }
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
676 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
677
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
678
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
679 void drawbox(int top, int bottom, int left, int right, int color)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
680 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
681 int y, x, j;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
682
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
683 unsigned int col;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
684
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
685
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
686 if (color==1)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
687 col=0x00FFFF00;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
688 else
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
689 col=0x00FF00FF;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
690
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
691 if (top<0) top =0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
692 if (top>=480) top=479;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
693 if (bottom<0) bottom =0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
694 if (bottom>=480) bottom=479;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
695 if (left<0) left =0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
696 if (left>=640) left=639;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
697 if (right<0) right =0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
698 if (right>=640) right=639;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
699
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
700 if (color==1){
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
701
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
702 for (y=top; y<bottom; y++)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
703 {
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
704 for (j=0;j<5;j++){
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
705 colorBuf[y][left+j] = col;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
706 colorBuf[y][right-j] = col;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
707 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
708
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
709 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
710
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
711 for (x=left; x<right; x++)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
712 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
713
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
714 for (j=0;j<5;j++){
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
715
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
716 colorBuf[bottom-j][x] = col;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
717 colorBuf[top+j][x] = col;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
718
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
719 }
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
720
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
721 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
722
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
723
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
724 } else {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
725
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
726
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
727
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
728 for (y=top; y<bottom; y++)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
729 {
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
730 for (x=left;x<right;x++){
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
731 colorBuf[y][x] = col;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
732 colorBuf[y][x] = col;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
733 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
734
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
735 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
736
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
737 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
738 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
739
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
740
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
741
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
742 void SkinStats (PixMapHandle p, int top, int bottom, int left, int right)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
743 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
744 double Y_sum,E_sum,S_sum;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
745 int R,G,B;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
746 int count=0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
747 Y_sum=E_sum=S_sum=0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
748 double Y,E,S;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
749 UInt32 color;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
750 int x, y;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
751 UInt32 * baseAddr;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
752
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
753 for (y=top; y<bottom; y++)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
754 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
755 baseAddr = (UInt32*)(GetPixBaseAddr(p) + y * GetPixRowBytes(p));
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
756 for (x=left; x<right; x++)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
757 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
758 count++;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
759 color=baseAddr[x];
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
760
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
761 R = (color & 0x00FF0000) >> 16;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
762 G = (color & 0x0000FF00) >> 8;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
763 B = (color & 0x000000FF) >> 0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
764 Y=.253*R+.684*G+.063*B;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
765 E=.5*R-.5*G;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
766 S=.25*R+.25*G-.5*B;
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
767 Y_sum+=Y;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
768 E_sum+=E;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
769 S_sum+=S;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
770 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
771 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
772
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
773 Y_mean=Y_sum/count;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
774 E_mean=E_sum/count;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
775 S_mean=S_sum/count;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
776
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
777 Y_sum=E_sum=S_sum=0;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
778
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
779 for (y=top; y<bottom; y++)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
780 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
781 baseAddr = (UInt32*)(GetPixBaseAddr(p) + y * GetPixRowBytes(p));
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
782 for (x=left; x<right; x++)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
783 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
784 color=baseAddr[x];
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
785 R = (color & 0x00FF0000) >> 16;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
786 G = (color & 0x0000FF00) >> 8;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
787 B = (color & 0x000000FF) >> 0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
788 Y=.253*R+.684*G+.063*B;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
789 E=.5*R-.5*G;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
790 S=.25*R+.25*G-.5*B;
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
791
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
792 Y_sum+=(Y-Y_mean)*(Y-Y_mean);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
793 E_sum+=(E-E_mean)*(E-E_mean);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
794 S_sum+=(S-S_mean)*(S-S_mean);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
795
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
796 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
797 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
798
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
799 Y_dev=sqrt(Y_sum/(count-1));
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
800 E_dev=sqrt(E_sum/(count-1));
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
801 S_dev=sqrt(S_sum/(count-1));
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
802
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 15435
diff changeset
803 //fprintf(stderr,"Y: %f, %f\n E: %f, %f\nS: %f, %f\n",Y_mean,E_mean,S_mean,Y_dev,E_dev,S_dev);
11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
804
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
805 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
806
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
807 int SkinDetect(double Y, double E, double S)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
808 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
809 if (E>(E_mean-(2*E_dev)) && E<(E_mean+(2*E_dev))) return 1;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
810 else return 0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
811 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
812

mercurial