diff --git a/src/bin/colors.c b/src/bin/colors.c index 46208b15..abbe24fc 100644 --- a/src/bin/colors.c +++ b/src/bin/colors.c @@ -370,6 +370,9 @@ static const Color default_colors256[256] = { 0xee, 0xee, 0xee, 0xff }, }; +static Eet_Data_Descriptor *edd_cs = NULL; +static Eet_Data_Descriptor *edd_color = NULL; + void colors_term_init(Evas_Object *textgrid, const Evas_Object *bg, @@ -655,3 +658,82 @@ color_scheme_apply(Evas_Object *edje, #undef CS_YELLOW #undef CS_SET } + +void +colors_init(void) +{ + Eet_Data_Descriptor_Class eddc; + + eet_eina_stream_data_descriptor_class_set + (&eddc, sizeof(eddc), "Color", sizeof(Color)); + edd_color = eet_data_descriptor_stream_new(&eddc); + + EET_DATA_DESCRIPTOR_ADD_BASIC + (edd_color, Color, "r", r, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC + (edd_color, Color, "g", g, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC + (edd_color, Color, "b", b, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC + (edd_color, Color, "a", a, EET_T_UCHAR); + + eet_eina_stream_data_descriptor_class_set + (&eddc, sizeof(eddc), "Color_Scheme", sizeof(Color_Scheme)); + edd_cs = eet_data_descriptor_stream_new(&eddc); + + EET_DATA_DESCRIPTOR_ADD_BASIC + (edd_cs, Color_Scheme, "version", version, EET_T_INT); + + EET_DATA_DESCRIPTOR_ADD_BASIC + (edd_cs, Color_Scheme, "md.version", md.version, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC + (edd_cs, Color_Scheme, "md.name", md.name, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC + (edd_cs, Color_Scheme, "md.author", md.author, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC + (edd_cs, Color_Scheme, "md.website", md.website, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC + (edd_cs, Color_Scheme, "md.license", md.license, EET_T_STRING); + + EET_DATA_DESCRIPTOR_ADD_SUB_NESTED + (edd_cs, Color_Scheme, "def", def, edd_color); + EET_DATA_DESCRIPTOR_ADD_SUB_NESTED + (edd_cs, Color_Scheme, "bg", bg, edd_color); + EET_DATA_DESCRIPTOR_ADD_SUB_NESTED + (edd_cs, Color_Scheme, "fg", fg, edd_color); + EET_DATA_DESCRIPTOR_ADD_SUB_NESTED + (edd_cs, Color_Scheme, "main", main, edd_color); + EET_DATA_DESCRIPTOR_ADD_SUB_NESTED + (edd_cs, Color_Scheme, "hl", hl, edd_color); + EET_DATA_DESCRIPTOR_ADD_SUB_NESTED + (edd_cs, Color_Scheme, "end_sel", end_sel, edd_color); + + EET_DATA_DESCRIPTOR_ADD_SUB_NESTED + (edd_cs, Color_Scheme, "tab_missed_1", tab_missed_1, edd_color); + EET_DATA_DESCRIPTOR_ADD_SUB_NESTED + (edd_cs, Color_Scheme, "tab_missed_2", tab_missed_2, edd_color); + EET_DATA_DESCRIPTOR_ADD_SUB_NESTED + (edd_cs, Color_Scheme, "tab_missed_3", tab_missed_3, edd_color); + EET_DATA_DESCRIPTOR_ADD_SUB_NESTED + (edd_cs, Color_Scheme, "tab_missed_over_1", tab_missed_over_1, edd_color); + EET_DATA_DESCRIPTOR_ADD_SUB_NESTED + (edd_cs, Color_Scheme, "tab_missed_over_2", tab_missed_over_2, edd_color); + EET_DATA_DESCRIPTOR_ADD_SUB_NESTED + (edd_cs, Color_Scheme, "tab_missed_over_3", tab_missed_over_3, edd_color); + + EET_DATA_DESCRIPTOR_ADD_SUB_NESTED + (edd_cs, Color_Scheme, "tab_title_2", tab_title_2, edd_color); + + EET_DATA_DESCRIPTOR_ADD_ARRAY + (edd_cs, Color_Scheme, "ansi", ansi, edd_color); +} + +void +colors_shutdown(void) +{ + eet_data_descriptor_free(edd_cs); + edd_cs = NULL; + + eet_data_descriptor_free(edd_color); + edd_color = NULL; +} diff --git a/src/bin/colors.h b/src/bin/colors.h index e2f2f588..ed30ae1b 100644 --- a/src/bin/colors.h +++ b/src/bin/colors.h @@ -4,6 +4,39 @@ #include #include "config.h" +typedef struct _Color_Scheme Color_Scheme; + +struct _Color_Scheme +{ + int version; + struct { + int version; + const char *name; + const char *author; + const char *website; + const char *license; + } md; + + Color def; + Color bg; + Color fg; + Color main; + Color hl; + Color end_sel; + + Color tab_missed_1; + Color tab_missed_2; + Color tab_missed_3; + Color tab_missed_over_1; + Color tab_missed_over_2; + Color tab_missed_over_3; + + Color tab_title_2; + + Color ansi[16]; +}; + + void colors_term_init(Evas_Object *textgrid, const Evas_Object *bg, @@ -28,4 +61,11 @@ void color_scheme_apply(Evas_Object *edje, const Config *config); +void +colors_init(void); + +void +colors_shutdown(void); + + #endif diff --git a/src/bin/main.c b/src/bin/main.c index 917e50b8..4e76ab58 100644 --- a/src/bin/main.c +++ b/src/bin/main.c @@ -879,6 +879,7 @@ elm_main(int argc, char **argv) } config_init(); + colors_init(); _main_config = config_load(); if (key_bindings_load(_main_config) < 0) @@ -1063,6 +1064,7 @@ elm_main(int argc, char **argv) config_del(_main_config); key_bindings_shutdown(); + colors_shutdown(); config_shutdown(); controls_shutdown(); eina_log_domain_unregister(_log_domain);