Mercurial > hg > mood-conductor
comparison visualclient/visclient.py @ 22:858fc44a17c1
added s option to stop blobs from fading
author | gyorgyf |
---|---|
date | Fri, 22 Jun 2012 16:52:57 +0100 |
parents | 92903c908539 |
children | c97feb7ef9e9 |
comparison
equal
deleted
inserted
replaced
21:92903c908539 | 22:858fc44a17c1 |
---|---|
29 ecol = (0,0,0,255) | 29 ecol = (0,0,0,255) |
30 | 30 |
31 # X,Y=1140,900 | 31 # X,Y=1140,900 |
32 X,Y = 600,400 | 32 X,Y = 600,400 |
33 NBLOBS = 15 | 33 NBLOBS = 15 |
34 BLOBSIZE = 20 | 34 BLOBSIZE = 25 |
35 G=110 | 35 G=110 |
36 FADE = 40 | 36 FADE = 15 |
37 | 37 |
38 class Blob(object): | 38 class Blob(object): |
39 | 39 |
40 def __init__(self,bg,x,y,color=(255,255,255),mood=None): | 40 def __init__(self,bg,x,y,color=(255,255,255),mood=None,fade=FADE): |
41 self.x = x | 41 self.x = x |
42 self.y = y | 42 self.y = y |
43 self.xs = x * X | 43 self.xs = x * X |
44 self.ys = Y - (y * Y) | 44 self.ys = Y - (y * Y) |
45 self.bg = bg | 45 self.bg = bg |
47 self.time = time.time() | 47 self.time = time.time() |
48 self.alpha = 255 | 48 self.alpha = 255 |
49 self.c = color | 49 self.c = color |
50 self.count = 1 | 50 self.count = 1 |
51 self.visible = True | 51 self.visible = True |
52 self.FADE = fade | |
52 if mood and mood.color : | 53 if mood and mood.color : |
53 self.c = mood.color | 54 self.c = mood.color |
54 | 55 |
55 def __cmp__(self,other): | 56 def __cmp__(self,other): |
56 d = math.sqrt( math.pow((self.x-other.x),2) + math.pow((self.y-other.y),2) ) | 57 d = math.sqrt( math.pow((self.x-other.x),2) + math.pow((self.y-other.y),2) ) |
60 return -1 | 61 return -1 |
61 | 62 |
62 def draw(self): | 63 def draw(self): |
63 d=int(self.size) | 64 d=int(self.size) |
64 self.bg.blit(gradients.radial(self.size, (self.c[0],self.c[1],self.c[2],self.alpha), (0,0,0,self.alpha)), (self.xs-d,self.ys-d)) | 65 self.bg.blit(gradients.radial(self.size, (self.c[0],self.c[1],self.c[2],self.alpha), (0,0,0,self.alpha)), (self.xs-d,self.ys-d)) |
65 self.alpha = 255 - int(self.age()*FADE) | 66 self.alpha = 255 - int(self.age()*self.FADE) |
66 if self.alpha < 5 : | 67 if self.alpha < 5 : |
67 self.alpha = 1 | 68 self.alpha = 1 |
68 self.visible = False | 69 self.visible = False |
69 | 70 |
70 def age(self): | 71 def age(self): |
75 self.count = count | 76 self.count = count |
76 self.size = int(BLOBSIZE * int(self.count/1.5)) | 77 self.size = int(BLOBSIZE * int(self.count/1.5)) |
77 | 78 |
78 def get_distance(self,x,y): | 79 def get_distance(self,x,y): |
79 return math.sqrt( math.pow((self.x-x),2) + math.pow((self.y-y),2) ) | 80 return math.sqrt( math.pow((self.x-x),2) + math.pow((self.y-y),2) ) |
81 | |
82 def fade(self,fade): | |
83 if not fade : self.alpha = 255 | |
84 self.FADE = fade | |
85 | |
86 def reset_time(self): | |
87 self.time = time.time() | |
80 | 88 |
81 | 89 |
82 | 90 |
83 | 91 |
84 class Mood(): | 92 class Mood(): |
121 self.moods = [] | 129 self.moods = [] |
122 self.read_mood_data() | 130 self.read_mood_data() |
123 # pg.quit() | 131 # pg.quit() |
124 # sys.exit(-1) | 132 # sys.exit(-1) |
125 | 133 |
134 self.FADE = FADE | |
135 | |
126 pass | 136 pass |
127 | 137 |
128 def read_mood_data(self): | 138 def read_mood_data(self): |
129 | 139 |
130 with open('moods.csv') as mf: | 140 with open('moods.csv') as mf: |
131 data = mf.readlines()[1:] | 141 data = mf.readlines()[1:] |
132 for line in data : | 142 for line in data : |
133 l = line.split(',') | 143 l = line.split(',') |
134 mood = Mood(l[0],l[1],l[2]) | 144 mood = Mood(l[0],l[1],l[2]) |
135 self.moods.append(mood) | 145 self.moods.append(mood) |
136 with open('feelings.txt') as ff: | 146 # with open('feelings.txt') as ff: |
137 data = ff.readlines() | 147 # data = ff.readlines() |
138 data = map(lambda x: x.split('\t'),data) | 148 # data = map(lambda x: x.split('\t'),data) |
149 # for mood in self.moods : | |
150 # for colors in data : | |
151 # if mood.word == colors[0] : | |
152 # mood.color = colors[2] | |
153 with open('colors.txt') as ff: | |
154 data = ff.readlines()[1:] | |
155 data = map(lambda x: x.split(','),data) | |
139 for mood in self.moods : | 156 for mood in self.moods : |
157 d = cd = sys.float_info.max | |
140 for colors in data : | 158 for colors in data : |
141 if mood.word == colors[0] : | 159 d = mood.get_distance(float(colors[0]),float(colors[1])) |
142 mood.color = colors[2] | 160 if d < cd : |
143 pass | 161 cd = d |
144 for mood in self.moods: | 162 mood.color = tuple(map(lambda x: int(pow(math.atan((float(x)/7.0)),12.5)),(colors[2],colors[3],colors[4]))) |
145 if mood.color : | 163 |
146 mood.color = map(lambda x: '0x'+str(x).strip(),[mood.color[0:2],mood.color[2:4],mood.color[4:]]) | 164 # for mood in self.moods: |
147 mood.color = tuple(map(lambda x: int(eval(x)),mood.color)) | 165 # if mood.color : |
148 # print mood.color | 166 # # mood.color = map(lambda x: '0x'+str(x).strip(),[mood.color[0:2],mood.color[2:4],mood.color[4:]]) |
167 # mood.color = tuple(map(lambda x: int(x),mood.color)) | |
168 # print mood.color | |
149 | 169 |
150 | 170 |
151 def update(self): | 171 def update(self): |
152 | 172 |
153 # delete invisibles | 173 # delete invisibles |
175 d = mood.get_distance(x,y) | 195 d = mood.get_distance(x,y) |
176 if d < cd : | 196 if d < cd : |
177 cd = d | 197 cd = d |
178 cmood = mood | 198 cmood = mood |
179 | 199 |
180 new = Blob(self.bg,x,y,mood=cmood) | 200 new = Blob(self.bg,x,y,mood=cmood,fade=self.FADE) |
181 if not new in self.blobs : | 201 if not new in self.blobs : |
182 self.blobs.insert(0,new) | 202 self.blobs.insert(0,new) |
183 elif c > self.blobs[self.blobs.index(new)].count: | 203 elif c > self.blobs[self.blobs.index(new)].count: |
184 self.blobs[self.blobs.index(new)].increment(c) | 204 self.blobs[self.blobs.index(new)].increment(c) |
185 | 205 |
220 pg.quit() | 240 pg.quit() |
221 sys.exit() | 241 sys.exit() |
222 elif event.type == KEYDOWN : | 242 elif event.type == KEYDOWN : |
223 if event.key == K_ESCAPE : | 243 if event.key == K_ESCAPE : |
224 pg.event.post(pg.event.Event(QUIT)) | 244 pg.event.post(pg.event.Event(QUIT)) |
245 elif event.key == K_SPACE : | |
246 self.blobs = [] | |
247 elif event.key == K_s : | |
248 if self.FADE : | |
249 print "fade off" | |
250 self.FADE = 0 | |
251 for blob in self.blobs : | |
252 blob.fade(0) | |
253 else: | |
254 print "fade on" | |
255 self.FADE = 15 | |
256 for blob in self.blobs : | |
257 blob.fade(15) | |
258 blob.reset_time() | |
259 | |
260 | |
225 | 261 |
226 | 262 |
227 # Draw | 263 # Draw |
228 self.draw() | 264 self.draw() |
229 | 265 |