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_BUTTON,
00076 } bg_parameter_type_t;
00077
00082 typedef union
00083 {
00084 double val_f;
00085 int val_i;
00086 char * val_str;
00087 float val_color[4];
00088 gavl_time_t val_time;
00089 double val_pos[2];
00090 } bg_parameter_value_t;
00091
00092
00093
00097 #define BG_PARAMETER_SYNC (1<<0)
00098
00099
00102 #define BG_PARAMETER_HIDE_DIALOG (1<<1)
00103
00104
00108 typedef struct bg_parameter_info_s bg_parameter_info_t;
00109
00116 struct bg_parameter_info_s
00117 {
00118 char * name;
00119 char * long_name;
00120 char * opt;
00121
00122 char * gettext_domain;
00123 char * gettext_directory;
00124
00125 bg_parameter_type_t type;
00126
00127 int flags;
00128
00129 bg_parameter_value_t val_default;
00130 bg_parameter_value_t val_min;
00131 bg_parameter_value_t val_max;
00132
00133
00134
00135 char const * const * multi_names;
00136
00137
00138
00139
00140 char const * const * multi_labels;
00141 char const * const * multi_descriptions;
00142
00143
00144
00145
00146
00147
00148
00149 struct bg_parameter_info_s const * const * multi_parameters;
00150
00151 int num_digits;
00152
00153 char * help_string;
00154
00155 char ** multi_names_nc;
00156
00157 char ** multi_labels_nc;
00158
00159 char ** multi_descriptions_nc;
00160
00161 struct bg_parameter_info_s ** multi_parameters_nc;
00162
00163 };
00164
00165
00166
00167
00168
00169
00170
00171
00185 typedef void (*bg_set_parameter_func_t)(void * data, const char * name,
00186 const bg_parameter_value_t * v);
00187
00201 typedef int (*bg_get_parameter_func_t)(void * data, const char * name,
00202 bg_parameter_value_t * v);
00203
00213 bg_parameter_info_t *
00214 bg_parameter_info_copy_array(const bg_parameter_info_t * src);
00215
00224 void
00225 bg_parameter_info_set_const_ptrs(bg_parameter_info_t * info);
00226
00227
00236 void bg_parameter_info_copy(bg_parameter_info_t * dst,
00237 const bg_parameter_info_t * src);
00238
00244 void bg_parameter_info_destroy_array(bg_parameter_info_t * info);
00245
00256 void bg_parameter_value_copy(bg_parameter_value_t * dst,
00257 const bg_parameter_value_t * src,
00258 const bg_parameter_info_t * info);
00259
00266 void bg_parameter_value_free(bg_parameter_value_t * val,
00267 bg_parameter_type_t type);
00268
00269
00277 bg_parameter_info_t *
00278 bg_parameter_info_concat_arrays(bg_parameter_info_t const ** srcs);
00279
00290 int bg_parameter_get_selected(const bg_parameter_info_t * info,
00291 const char * val);
00292
00293
00305 const bg_parameter_info_t *
00306 bg_parameter_find(const bg_parameter_info_t * info,
00307 const char * name);
00308
00309
00320 bg_parameter_info_t * bg_xml_2_parameters(xmlDocPtr xml_doc,
00321 xmlNodePtr xml_parameters);
00322
00332 void
00333 bg_parameters_2_xml(const bg_parameter_info_t * info, xmlNodePtr xml_parameters);
00334
00335
00336
00337 #endif
00338