theme.h (1278B)
1 #ifndef _LTK_THEME_H_ 2 #define _LTK_THEME_H_ 3 4 #include "ltk.h" 5 6 typedef enum { 7 THEME_STRING, 8 THEME_COLOR, 9 THEME_INT, 10 THEME_BOOL, 11 THEME_BORDERSIDES 12 } ltk_theme_datatype; 13 14 typedef struct { 15 char *key; 16 ltk_theme_datatype type; 17 /* Note: Bool and int are both integers, but they are 18 separate just to make it a bit clearer */ 19 union { 20 char **str; 21 ltk_color *color; 22 int *i; 23 int *b; 24 ltk_border_sides *border; 25 } ptr; 26 /* Note: The default color is also given as a string 27 because it has to be allocated first (it is only a 28 different entry in the union in order to make it 29 a bit clearer) */ 30 union { 31 char *str; 32 char *color; 33 int i; 34 int b; 35 ltk_border_sides border; 36 } defaultval; 37 int min, max; /* only for integers */ 38 int initialized; 39 } ltk_theme_parseinfo; 40 41 /* FIXME: this only needs renderdata, not window */ 42 /* Both return 1 on error, 0 on success */ 43 int ltk_theme_handle_value(ltk_window *window, char *debug_name, const char *prop, const char *value, ltk_theme_parseinfo *parseinfo, size_t len, int *sorted); 44 int ltk_theme_fill_defaults(ltk_window *window, char *debug_name, ltk_theme_parseinfo *parseinfo, size_t len); 45 void ltk_theme_uninitialize(ltk_window *window, ltk_theme_parseinfo *parseinfo, size_t len); 46 47 #endif /* _LTK_THEME_H_ */