e3a75147e6420eda96a0590fd923f4cc1d132299
[platform/upstream/gst-plugins-good.git] / gst / goom / goom_config_param.h
1 #ifndef _CONFIG_PARAM_H
2 #define _CONFIG_PARAM_H
3
4 #include <stdlib.h>
5
6 /**
7  * File created on 2003-05-24 by Jeko.
8  * (c)2003, JC Hoelt for iOS-software.
9  *
10  * LGPL Licence.
11  */
12
13 typedef enum {
14   PARAM_INTVAL,
15   PARAM_FLOATVAL,
16   PARAM_BOOLVAL,
17   PARAM_STRVAL,
18   PARAM_LISTVAL,
19 } ParamType;
20
21 struct IntVal {
22   int value;
23   int min;
24   int max;
25   int step;
26 };
27 struct FloatVal {
28   float value;
29   float min;
30   float max;
31   float step;
32 };
33 struct StrVal {
34   char *value;
35 };
36 struct ListVal {
37   char *value;
38   int nbChoices;
39   char **choices;
40 };
41 struct BoolVal {
42   int value;
43 };
44
45
46 typedef struct _PARAM {
47   char *name;
48   char *desc;
49   char rw;
50   ParamType type;
51   union {
52     struct IntVal ival;
53     struct FloatVal fval;
54     struct StrVal sval;
55     struct ListVal slist;
56     struct BoolVal bval;
57   } param;
58   
59   /* used by the core to inform the GUI of a change */
60   void (*change_listener)(struct _PARAM *_this);
61
62   /* used by the GUI to inform the core of a change */
63   void (*changed)(struct _PARAM *_this);
64   
65   void *user_data; /* can be used by the GUI */
66 } PluginParam;
67
68 #define IVAL(p) ((p).param.ival.value)
69 #define SVAL(p) ((p).param.sval.value)
70 #define FVAL(p) ((p).param.fval.value)
71 #define BVAL(p) ((p).param.bval.value)
72 #define LVAL(p) ((p).param.slist.value)
73
74 #define FMIN(p) ((p).param.fval.min)
75 #define FMAX(p) ((p).param.fval.max)
76 #define FSTEP(p) ((p).param.fval.step)
77
78 #define IMIN(p) ((p).param.ival.min)
79 #define IMAX(p) ((p).param.ival.max)
80 #define ISTEP(p) ((p).param.ival.step)
81
82 PluginParam goom_secure_param(void);
83
84 PluginParam goom_secure_f_param(char *name);
85 PluginParam goom_secure_i_param(char *name);
86 PluginParam goom_secure_b_param(char *name, int value);
87 PluginParam goom_secure_s_param(char *name);
88
89 PluginParam goom_secure_f_feedback(char *name);
90 PluginParam goom_secure_i_feedback(char *name);
91
92 void goom_set_str_param_value(PluginParam *p, const char *str);
93 void goom_set_list_param_value(PluginParam *p, const char *str);
94     
95 typedef struct _PARAMETERS {
96   char *name;
97   char *desc;
98   int nbParams;
99   PluginParam **params;
100 } PluginParameters;
101
102 PluginParameters goom_plugin_parameters(const char *name, int nb);
103 void goom_plugin_parameters_free(PluginParameters *p);
104
105 #define secure_param goom_secure_param
106 #define secure_f_param goom_secure_f_param
107 #define secure_i_param goom_secure_i_param
108 #define secure_b_param goom_secure_b_param
109 #define secure_s_param goom_secure_s_param
110 #define secure_f_feedback goom_secure_f_feedback
111 #define secure_i_feedback goom_secure_i_feedback
112 #define set_list_param_value goom_set_list_param_value
113 #define set_str_param_value goom_set_str_param_value
114 #define plugin_parameters goom_plugin_parameters
115
116 #endif