parameter.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __BG_PARAMETER_H_
00023 #define __BG_PARAMETER_H_
00024
00025 #include <libxml/tree.h>
00026 #include <libxml/parser.h>
00027
00028 #include <gavl/gavl.h>
00029
00044
00045
00053 typedef enum
00054 {
00055 BG_PARAMETER_SECTION,
00056 BG_PARAMETER_CHECKBUTTON,
00057 BG_PARAMETER_INT,
00058 BG_PARAMETER_FLOAT,
00059 BG_PARAMETER_SLIDER_INT,
00060 BG_PARAMETER_SLIDER_FLOAT,
00061 BG_PARAMETER_STRING,
00062 BG_PARAMETER_STRING_HIDDEN,
00063 BG_PARAMETER_STRINGLIST,
00064 BG_PARAMETER_COLOR_RGB,
00065 BG_PARAMETER_COLOR_RGBA,
00066 BG_PARAMETER_FONT,
00067 BG_PARAMETER_DEVICE,
00068 BG_PARAMETER_FILE,
00069 BG_PARAMETER_DIRECTORY,
00070 BG_PARAMETER_MULTI_MENU,
00071 BG_PARAMETER_MULTI_LIST,
00072 BG_PARAMETER_MULTI_CHAIN,
00073 BG_PARAMETER_TIME,
00074 BG_PARAMETER_POSITION
00075 } bg_parameter_type_t;
00076
00081 typedef union
00082 {
00083 double val_f;
00084 int val_i;
00085 char * val_str;
00086 float val_color[4];
00087 gavl_time_t val_time;
00088 double val_pos[2];
00089 } bg_parameter_value_t;
00090
00091
00092
00096 #define BG_PARAMETER_SYNC (1<<0)
00097
00098
00101 #define BG_PARAMETER_HIDE_DIALOG (1<<1)
00102
00103
00107 typedef struct bg_parameter_info_s bg_parameter_info_t;
00108
00115 struct bg_parameter_info_s
00116 {
00117 char * name;
00118 char * long_name;
00119 char * opt;
00120
00121 char * gettext_domain;
00122 char * gettext_directory;
00123
00124 bg_parameter_type_t type;
00125
00126 int flags;
00127
00128 bg_parameter_value_t val_default;
00129 bg_parameter_value_t val_min;
00130 bg_parameter_value_t val_max;
00131
00132
00133
00134 char const * const * multi_names;
00135
00136
00137
00138
00139 char const * const * multi_labels;
00140 char const * const * multi_descriptions;
00141
00142
00143
00144
00145
00146
00147
00148 struct bg_parameter_info_s const * const * multi_parameters;
00149
00150 int num_digits;
00151
00152 char * help_string;
00153
00154 char ** multi_names_nc;
00155
00156 char ** multi_labels_nc;
00157
00158 char ** multi_descriptions_nc;
00159
00160 struct bg_parameter_info_s ** multi_parameters_nc;
00161
00162 };
00163
00164
00165
00166
00167
00168
00169
00170
00184 typedef void (*bg_set_parameter_func_t)(void * data, const char * name,
00185 const bg_parameter_value_t * v);
00186
00200 typedef int (*bg_get_parameter_func_t)(void * data, const char * name,
00201 bg_parameter_value_t * v);
00202
00212 bg_parameter_info_t *
00213 bg_parameter_info_copy_array(const bg_parameter_info_t * src);
00214
00223 void
00224 bg_parameter_info_set_const_ptrs(bg_parameter_info_t * info);
00225
00226
00235 void bg_parameter_info_copy(bg_parameter_info_t * dst,
00236 const bg_parameter_info_t * src);
00237
00243 void bg_parameter_info_destroy_array(bg_parameter_info_t * info);
00244
00255 void bg_parameter_value_copy(bg_parameter_value_t * dst,
00256 const bg_parameter_value_t * src,
00257 const bg_parameter_info_t * info);
00258
00265 void bg_parameter_value_free(bg_parameter_value_t * val,
00266 bg_parameter_type_t type);
00267
00268
00276 bg_parameter_info_t *
00277 bg_parameter_info_concat_arrays(bg_parameter_info_t const ** srcs);
00278
00289 int bg_parameter_get_selected(const bg_parameter_info_t * info,
00290 const char * val);
00291
00292
00304 const bg_parameter_info_t *
00305 bg_parameter_find(const bg_parameter_info_t * info,
00306 const char * name);
00307
00308
00319 bg_parameter_info_t * bg_xml_2_parameters(xmlDocPtr xml_doc,
00320 xmlNodePtr xml_parameters);
00321
00331 void
00332 bg_parameters_2_xml(const bg_parameter_info_t * info, xmlNodePtr xml_parameters);
00333
00334
00335
00336 #endif
00337