19
19
#define STOP_SPEED 128
22
goom_init (GoomData *goomdata, guint32 resx, guint32 resy)
22
goom_init (GoomData * goomdata, guint32 resx, guint32 resy)
25
25
printf ("GOOM: init (%d, %d);\n", resx, resy);
38
38
goomdata->cycle = 0;
41
goomdata->goomlimit = 2; /* sensibilit� du goom */
42
goomdata->zfd = zoomFilterNew();
43
goomdata->lockvar = 0; /* pour empecher de nouveaux changements */
44
goomdata->goomvar = 0; /* boucle des gooms */
45
goomdata->totalgoom = 0; /* nombre de gooms par seconds */
46
goomdata->agoom = 0; /* un goom a eu lieu.. */
47
goomdata->loopvar = 0; /* mouvement des points */
48
goomdata->speedvar = 0; /* vitesse des particules */
49
goomdata->lineMode = 0; /* l'effet lineaire a dessiner */
41
goomdata->goomlimit = 2; /* sensibilit� du goom */
42
goomdata->zfd = zoomFilterNew ();
43
goomdata->lockvar = 0; /* pour empecher de nouveaux changements */
44
goomdata->goomvar = 0; /* boucle des gooms */
45
goomdata->totalgoom = 0; /* nombre de gooms par seconds */
46
goomdata->agoom = 0; /* un goom a eu lieu.. */
47
goomdata->loopvar = 0; /* mouvement des points */
48
goomdata->speedvar = 0; /* vitesse des particules */
49
goomdata->lineMode = 0; /* l'effet lineaire a dessiner */
53
goom_set_resolution (GoomData *goomdata, guint32 resx, guint32 resy)
53
goom_set_resolution (GoomData * goomdata, guint32 resx, guint32 resy)
55
55
guint32 buffsize = resx * resy;
57
57
if ((goomdata->resolx == resx) && (goomdata->resoly == resy))
60
if (goomdata->buffsize < buffsize)
60
if (goomdata->buffsize < buffsize) {
62
61
if (goomdata->pixel)
63
62
free (goomdata->pixel);
64
63
if (goomdata->back)
67
66
goomdata->back = (guint32 *) malloc (buffsize * sizeof (guint32) + 128);
68
67
goomdata->buffsize = buffsize;
70
goomdata->p1 = (void *) (((unsigned long) goomdata->pixel + 0x7f) & (~0x7f));
70
(void *) (((unsigned long) goomdata->pixel + 0x7f) & (~0x7f));
71
71
goomdata->p2 = (void *) (((unsigned long) goomdata->back + 0x7f) & (~0x7f));
169
170
if ((accelvar > goomdata->goomlimit) || (accelvar < -goomdata->goomlimit)) {
170
171
/* UN GOOM !!! YAHOO ! */
171
172
goomdata->totalgoom++;
172
goomdata->agoom = 20; /* mais pdt 20 cycles, il n'y en aura plus. */
173
goomdata->lineMode = (goomdata->lineMode + 1) % 20; /* Tous les 10 gooms on change de mode lineaire */
173
goomdata->agoom = 20; /* mais pdt 20 cycles, il n'y en aura plus. */
174
goomdata->lineMode = (goomdata->lineMode + 1) % 20; /* Tous les 10 gooms on change de mode lineaire */
175
176
/* changement eventuel de mode */
176
177
switch (iRAND (goomdata, 10)) {
302
303
pzfd->hPlaneEffect = iRAND (goomdata, 2) ? 0 : pzfd->hPlaneEffect;
305
if (newvit < pzfd->vitesse) { /* on accelere */
306
if (newvit < pzfd->vitesse) { /* on accelere */
307
308
if (((newvit < STOP_SPEED - 7) &&
308
309
(pzfd->vitesse < STOP_SPEED - 6) &&
333
334
/* gros frein si la musique est calme */
334
if ((goomdata->speedvar < 1) && (pzfd->vitesse < STOP_SPEED - 4) && (goomdata->cycle % 16 == 0)) {
335
if ((goomdata->speedvar < 1) && (pzfd->vitesse < STOP_SPEED - 4)
336
&& (goomdata->cycle % 16 == 0)) {
336
338
printf ("++slow part... %i\n", zfd.vitesse) ;
367
369
/* si on est dans un goom : afficher les lignes... */
368
370
if (goomdata->agoom > 15)
370
(goomdata, data, ((pzfd->middleX == resolx / 2) && (pzfd->middleY == resoly / 2)
372
(goomdata, data, ((pzfd->middleX == resolx / 2)
373
&& (pzfd->middleY == resoly / 2)
371
374
&& (pzfd->mode != WATER_MODE))
372
375
? (goomdata->lineMode / 10) : 0, goomdata->p2, goomdata->agoom - 15);
398
goom_close (GoomData *goomdata)
401
goom_close (GoomData * goomdata)
400
403
if (goomdata->pixel != NULL)
401
404
free (goomdata->pixel);
402
405
if (goomdata->back != NULL)
403
406
free (goomdata->back);
407
if (goomdata->zfd != NULL) {
408
zoomFilterDestroy (goomdata->zfd);
409
goomdata->zfd = NULL;
404
411
goomdata->pixel = goomdata->back = NULL;
405
412
RAND_CLOSE (goomdata);