1 /* Goom Project
2  * Copyright (C) <2003> iOS-Software
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Library General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Library General Public License for more details.
13  *
14  * You should have received a copy of the GNU Library General Public
15  * License along with this library; if not, write to the
16  * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
17  * Boston, MA 02110-1301, USA.
18  */
19 #ifndef FILTERS_H
20 #define FILTERS_H
21 
22 #include "goom_config.h"
23 #include "goom_typedefs.h"
24 #include "goom_visual_fx.h"
25 #include "goom_graphic.h"
26 
27 void zoomFilterVisualFXWrapper_create(VisualFX *fx);
28 
29 struct _ZOOM_FILTER_DATA
30 {
31 	int     vitesse;           /* 128 = vitesse nule... * * 256 = en arriere
32 	                            * hyper vite.. * * 0 = en avant hype vite. */
33 	unsigned char pertedec;
34 	unsigned char sqrtperte;
35 	int     middleX, middleY;  /* milieu de l'effet */
36 	char    reverse;           /* inverse la vitesse */
37 	char    mode;              /* type d'effet � appliquer (cf les #define) */
38 	/** @since June 2001 */
39 	int     hPlaneEffect;      /* deviation horitontale */
40 	int     vPlaneEffect;      /* deviation verticale */
41 	/** @since April 2002 */
42 	int     waveEffect;        /* applique une "surcouche" de wave effect */
43 	int     hypercosEffect;    /* applique une "surcouche de hypercos effect */
44 
45 	char    noisify;           /* ajoute un bruit a la transformation */
46 };
47 
48 #define NORMAL_MODE 0
49 #define WAVE_MODE 1
50 #define CRYSTAL_BALL_MODE 2
51 #define SCRUNCH_MODE 3
52 #define AMULETTE_MODE 4
53 #define WATER_MODE 5
54 #define HYPERCOS1_MODE 6
55 #define HYPERCOS2_MODE 7
56 #define YONLY_MODE 8
57 #define SPEEDWAY_MODE 9
58 
59 void pointFilter (PluginInfo *goomInfo, Pixel * pix1, Color c,
60                   float t1, float t2, float t3, float t4, guint32 cycle);
61 
62 /* filtre de zoom :
63  * le contenu de pix1 est copie dans pix2.
64  * zf : si non NULL, configure l'effet.
65  * resx,resy : taille des buffers.
66  */
67 void zoomFilterFastRGB (PluginInfo *goomInfo, Pixel * pix1, Pixel * pix2, ZoomFilterData * zf, guint32 resx,
68                         guint32 resy, int switchIncr, float switchMult);
69 
70 #endif
71