Tizen 2.0 Release
[framework/multimedia/gst-plugins-good0.10.git] / gst / goom / goom_filters.h
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., 59 Temple Place - Suite 330,
17  * Boston, MA 02111-1307, 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