/* Goom Project * Copyright (C) <2003> iOS-Software * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #ifndef _CONFIG_PARAM_H #define _CONFIG_PARAM_H #include /* * File created on 2003-05-24 by Jeko. * (c)2003, JC Hoelt for iOS-software. * * LGPL Licence. */ typedef enum { PARAM_INTVAL, PARAM_FLOATVAL, PARAM_BOOLVAL, PARAM_STRVAL, PARAM_LISTVAL, } ParamType; struct IntVal { int value; int min; int max; int step; }; struct FloatVal { float value; float min; float max; float step; }; struct StrVal { char *value; }; struct ListVal { char *value; int nbChoices; char **choices; }; struct BoolVal { int value; }; typedef struct _PARAM { char *name; char *desc; char rw; ParamType type; union { struct IntVal ival; struct FloatVal fval; struct StrVal sval; struct ListVal slist; struct BoolVal bval; } param; /* used by the core to inform the GUI of a change */ void (*change_listener)(struct _PARAM *_this); /* used by the GUI to inform the core of a change */ void (*changed)(struct _PARAM *_this); void *user_data; /* can be used by the GUI */ } PluginParam; #define IVAL(p) ((p).param.ival.value) #define SVAL(p) ((p).param.sval.value) #define FVAL(p) ((p).param.fval.value) #define BVAL(p) ((p).param.bval.value) #define LVAL(p) ((p).param.slist.value) #define FMIN(p) ((p).param.fval.min) #define FMAX(p) ((p).param.fval.max) #define FSTEP(p) ((p).param.fval.step) #define IMIN(p) ((p).param.ival.min) #define IMAX(p) ((p).param.ival.max) #define ISTEP(p) ((p).param.ival.step) PluginParam goom_secure_param(void); PluginParam goom_secure_f_param(char *name); PluginParam goom_secure_i_param(char *name); PluginParam goom_secure_b_param(char *name, int value); PluginParam goom_secure_s_param(char *name); PluginParam goom_secure_f_feedback(char *name); PluginParam goom_secure_i_feedback(char *name); void goom_set_str_param_value(PluginParam *p, const char *str); void goom_set_list_param_value(PluginParam *p, const char *str); typedef struct _PARAMETERS { char *name; char *desc; int nbParams; PluginParam **params; } PluginParameters; PluginParameters goom_plugin_parameters(const char *name, int nb); void goom_plugin_parameters_free(PluginParameters *p); #define secure_param goom_secure_param #define secure_f_param goom_secure_f_param #define secure_i_param goom_secure_i_param #define secure_b_param goom_secure_b_param #define secure_s_param goom_secure_s_param #define secure_f_feedback goom_secure_f_feedback #define secure_i_feedback goom_secure_i_feedback #define set_list_param_value goom_set_list_param_value #define set_str_param_value goom_set_str_param_value #define plugin_parameters goom_plugin_parameters #endif