clouseau/src/lib/clouseau_data_legacy.c

296 lines
13 KiB
C

#include "clouseau_data_legacy.h"
Eet_Data_Descriptor *clouseau_object_edd = NULL;
static Eet_Data_Descriptor *clouseau_union_edd = NULL;
static Eet_Data_Descriptor *clouseau_textblock_edd = NULL;
static Eet_Data_Descriptor *clouseau_edje_edd = NULL;
static Eet_Data_Descriptor *clouseau_image_edd = NULL;
static Eet_Data_Descriptor *clouseau_text_edd = NULL;
static Eet_Data_Descriptor *clouseau_elm_edd = NULL;
static Eet_Data_Descriptor *clouseau_map_point_props_edd = NULL;
static struct {
Clouseau_Object_Type u;
const char *name;
} eet_props_mapping[] = {
/* As eet_mapping */
{ CLOUSEAU_OBJ_TYPE_OTHER, "CLOUSEAU_OBJ_TYPE_OTHER" },
{ CLOUSEAU_OBJ_TYPE_ELM, "CLOUSEAU_OBJ_TYPE_ELM" },
{ CLOUSEAU_OBJ_TYPE_TEXT, "CLOUSEAU_OBJ_TYPE_TEXT" },
{ CLOUSEAU_OBJ_TYPE_IMAGE, "CLOUSEAU_OBJ_TYPE_IMAGE" },
{ CLOUSEAU_OBJ_TYPE_EDJE, "CLOUSEAU_OBJ_TYPE_EDJE" },
{ CLOUSEAU_OBJ_TYPE_TEXTBLOCK, "CLOUSEAU_OBJ_TYPE_TEXTBLOCK" },
{ CLOUSEAU_OBJ_TYPE_UNKNOWN, NULL }
};
static const char *
_clouseau_props_union_type_get(const void *data, Eina_Bool *unknow)
{ /* _union_type_get */
const Clouseau_Object_Type *u = data;
int i;
if (unknow)
*unknow = EINA_FALSE;
for (i = 0; eet_props_mapping[i].name != NULL; ++i)
if (*u == eet_props_mapping[i].u)
return eet_props_mapping[i].name;
if (unknow)
*unknow = EINA_TRUE;
return NULL;
}
static Eina_Bool
_clouseau_props_union_type_set(const char *type, void *data, Eina_Bool unknow)
{ /* same as _union_type_set */
Clouseau_Object_Type *u = data;
int i;
if (unknow)
return EINA_FALSE;
for (i = 0; eet_props_mapping[i].name != NULL; ++i)
if (strcmp(eet_props_mapping[i].name, type) == 0)
{
*u = eet_props_mapping[i].u;
return EINA_TRUE;
}
return EINA_FALSE;
}
static void
_clouseau_elm_desc_make(void)
{
Eet_Data_Descriptor_Class eddc;
EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Clouseau_Elm_Props);
clouseau_elm_edd = eet_data_descriptor_stream_new(&eddc);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_elm_edd, Clouseau_Elm_Props,
"type", type, EET_T_STRING);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_elm_edd, Clouseau_Elm_Props,
"style", style, EET_T_STRING);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_elm_edd, Clouseau_Elm_Props,
"scale", scale, EET_T_DOUBLE);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_elm_edd, Clouseau_Elm_Props,
"has_focus", has_focus, EET_T_UCHAR);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_elm_edd, Clouseau_Elm_Props,
"is_disabled", is_disabled, EET_T_UCHAR);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_elm_edd, Clouseau_Elm_Props,
"is_mirrored", is_mirrored, EET_T_UCHAR);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_elm_edd, Clouseau_Elm_Props,
"is_mirrored_automatic", is_mirrored_automatic, EET_T_UCHAR);
}
static void
_clouseau_text_desc_make(void)
{
Eet_Data_Descriptor_Class eddc;
EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Clouseau_Evas_Text_Props);
clouseau_text_edd = eet_data_descriptor_stream_new(&eddc);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_text_edd, Clouseau_Evas_Text_Props,
"font", font, EET_T_STRING);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_text_edd, Clouseau_Evas_Text_Props,
"size", size, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_text_edd, Clouseau_Evas_Text_Props,
"source", source, EET_T_STRING);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_text_edd, Clouseau_Evas_Text_Props,
"text", text, EET_T_STRING);
}
static void
_clouseau_image_desc_make(void)
{
Eet_Data_Descriptor_Class eddc;
EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Clouseau_Evas_Image_Props);
clouseau_image_edd = eet_data_descriptor_stream_new(&eddc);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_image_edd, Clouseau_Evas_Image_Props,
"file", file, EET_T_STRING);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_image_edd, Clouseau_Evas_Image_Props,
"key", key, EET_T_STRING);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_image_edd, Clouseau_Evas_Image_Props,
"source", source, EET_T_UINT);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_image_edd, Clouseau_Evas_Image_Props,
"load_err", load_err, EET_T_STRING);
}
static void
_clouseau_edje_desc_make(void)
{
Eet_Data_Descriptor_Class eddc;
EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Clouseau_Edje_Props);
clouseau_edje_edd = eet_data_descriptor_stream_new(&eddc);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_edje_edd, Clouseau_Edje_Props,
"file", file, EET_T_STRING);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_edje_edd, Clouseau_Edje_Props,
"group", group, EET_T_STRING);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_edje_edd, Clouseau_Edje_Props,
"load_err", load_err, EET_T_STRING);
}
static void
_clouseau_textblock_desc_make(void)
{
Eet_Data_Descriptor_Class eddc;
EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Clouseau_Evas_Textblock_Props);
clouseau_textblock_edd = eet_data_descriptor_stream_new(&eddc);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_textblock_edd, Clouseau_Evas_Textblock_Props,
"style", style, EET_T_STRING);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_textblock_edd, Clouseau_Evas_Textblock_Props,
"text", text, EET_T_STRING);
}
static void
_clouseau_map_point_props_desc_make(void)
{
Eet_Data_Descriptor_Class eddc;
EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc,
Clouseau_Evas_Map_Point_Props);
clouseau_map_point_props_edd = eet_data_descriptor_stream_new(&eddc);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_map_point_props_edd,
Clouseau_Evas_Map_Point_Props, "x", x, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_map_point_props_edd,
Clouseau_Evas_Map_Point_Props, "y", y, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_map_point_props_edd,
Clouseau_Evas_Map_Point_Props, "z", z, EET_T_INT);
}
void
clouseau_data_descriptors_legacy_init(void)
{
Eet_Data_Descriptor_Class eddc;
EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Clouseau_Object);
clouseau_object_edd = eet_data_descriptor_stream_new(&eddc);
/* START - evas_props Struct desc */
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_object_edd, Clouseau_Object,
"evas_props.name", evas_props.name, EET_T_STRING);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_object_edd, Clouseau_Object,
"evas_props.bt", evas_props.bt, EET_T_STRING);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_object_edd, Clouseau_Object,
"evas_props.layer", evas_props.layer, EET_T_SHORT);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_object_edd, Clouseau_Object,
"evas_props.x", evas_props.x, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_object_edd, Clouseau_Object,
"evas_props.y", evas_props.y, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_object_edd, Clouseau_Object,
"evas_props.w", evas_props.w, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_object_edd, Clouseau_Object,
"evas_props.h", evas_props.h, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_object_edd, Clouseau_Object,
"evas_props.scale", evas_props.scale, EET_T_DOUBLE);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_object_edd, Clouseau_Object,
"evas_props.min_w", evas_props.min_w, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_object_edd, Clouseau_Object,
"evas_props.min_h", evas_props.min_h, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_object_edd, Clouseau_Object,
"evas_props.max_w", evas_props.max_w, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_object_edd, Clouseau_Object,
"evas_props.max_h", evas_props.max_h, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_object_edd, Clouseau_Object,
"evas_props.req_w", evas_props.req_w, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_object_edd, Clouseau_Object,
"evas_props.req_h", evas_props.req_h, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_object_edd, Clouseau_Object,
"evas_props.align_x", evas_props.align_x, EET_T_DOUBLE);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_object_edd, Clouseau_Object,
"evas_props.align_y", evas_props.align_y, EET_T_DOUBLE);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_object_edd, Clouseau_Object,
"evas_props.weight_x", evas_props.weight_x, EET_T_DOUBLE);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_object_edd, Clouseau_Object,
"evas_props.weight_y", evas_props.weight_y, EET_T_DOUBLE);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_object_edd, Clouseau_Object,
"evas_props.r", evas_props.r, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_object_edd, Clouseau_Object,
"evas_props.g", evas_props.g, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_object_edd, Clouseau_Object,
"evas_props.b", evas_props.b, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_object_edd, Clouseau_Object,
"evas_props.a", evas_props.a, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_object_edd, Clouseau_Object,
"evas_props.pass_events", evas_props.pass_events, EET_T_UCHAR);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_object_edd, Clouseau_Object,
"evas_props.repeat_events", evas_props.repeat_events, EET_T_UCHAR);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_object_edd, Clouseau_Object,
"evas_props.propagate_events", evas_props.propagate_events, EET_T_UCHAR);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_object_edd, Clouseau_Object,
"evas_props.has_focus", evas_props.has_focus, EET_T_UCHAR);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_object_edd, Clouseau_Object,
"evas_props.is_clipper", evas_props.is_clipper, EET_T_UCHAR);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_object_edd, Clouseau_Object,
"evas_props.is_visible", evas_props.is_visible, EET_T_UCHAR);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_object_edd, Clouseau_Object,
"evas_props.clipper", evas_props.clipper, EET_T_ULONG_LONG);
EET_DATA_DESCRIPTOR_ADD_BASIC(clouseau_object_edd, Clouseau_Object,
"evas_props.mode", evas_props.mode, EET_T_INT);
_clouseau_elm_desc_make();
_clouseau_text_desc_make();
_clouseau_image_desc_make();
_clouseau_edje_desc_make();
_clouseau_textblock_desc_make();
_clouseau_map_point_props_desc_make();
EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY(clouseau_object_edd, Clouseau_Object,
"evas_props.points", evas_props.points,
clouseau_map_point_props_edd);
/* for union */
EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Clouseau_Extra_Props);
eddc.func.type_get = _clouseau_props_union_type_get;
eddc.func.type_set = _clouseau_props_union_type_set;
clouseau_union_edd = eet_data_descriptor_file_new(&eddc);
EET_DATA_DESCRIPTOR_ADD_MAPPING(clouseau_union_edd,
"CLOUSEAU_OBJ_TYPE_ELM", clouseau_elm_edd);
EET_DATA_DESCRIPTOR_ADD_MAPPING(clouseau_union_edd,
"CLOUSEAU_OBJ_TYPE_TEXT",
clouseau_text_edd);
EET_DATA_DESCRIPTOR_ADD_MAPPING(clouseau_union_edd,
"CLOUSEAU_OBJ_TYPE_IMAGE",
clouseau_image_edd);
EET_DATA_DESCRIPTOR_ADD_MAPPING(clouseau_union_edd,
"CLOUSEAU_OBJ_TYPE_EDJE",
clouseau_edje_edd);
EET_DATA_DESCRIPTOR_ADD_MAPPING(clouseau_union_edd,
"CLOUSEAU_OBJ_TYPE_TEXTBLOCK",
clouseau_textblock_edd);
EET_DATA_DESCRIPTOR_ADD_UNION(clouseau_object_edd, Clouseau_Object,
"u", extra_props.u,
extra_props.type, clouseau_union_edd);
}
void
clouseau_data_descriptors_legacy_shutdown(void)
{
eet_data_descriptor_free(clouseau_object_edd);
eet_data_descriptor_free(clouseau_elm_edd);
eet_data_descriptor_free(clouseau_text_edd);
eet_data_descriptor_free(clouseau_image_edd);
eet_data_descriptor_free(clouseau_edje_edd);
eet_data_descriptor_free(clouseau_textblock_edd);
eet_data_descriptor_free(clouseau_union_edd);
eet_data_descriptor_free(clouseau_map_point_props_edd);
}