found = EINA_TRUE;
break;
}
+ else if (vector->type == EDJE_VECTOR_FILE_TYPE_SVG)
+ {
+ char *svg_data = NULL;
+ int svg_data_len = 0;
+
+ f = eina_file_open(eina_strbuf_string_get(buf), EINA_FALSE);
+ if (!f) continue;
+
+ svg_data_len = (int) eina_file_size_get(f);
+ svg_data = eina_file_map_all(f, EINA_FILE_POPULATE);
+
+ eina_strbuf_reset(buf);
+ eina_strbuf_append_printf(buf, "edje/vectors/%i", vector->id);
+ eet_write(ef, eina_strbuf_string_get(buf), svg_data, svg_data_len, EET_COMPRESSION_NONE);
+
+ eina_file_map_free(f, svg_data);
+ eina_file_close(f);
+
+ *vector_num += 1;
+ found = EINA_TRUE;
+ break;
+ }
else
{
f = eina_file_open(eina_strbuf_string_get(buf), EINA_FALSE);
#endif
static void
+_edje_vector_load_svg(Edje *ed, Edje_Real_Part *ep, const char *key)
+{
+ Edje_Part_Description_Vector *desc = (Edje_Part_Description_Vector *)ep->chosen_description;
+ Eina_File *file;
+ char *svg_data;
+ int svg_data_len = 0;
+
+ if (ep->typedata.vector->current_id != desc->vg.id)
+ {
+ svg_data = (char *)eet_read(ed->file->ef, key, &svg_data_len);
+ if (svg_data)
+ {
+ svg_data[svg_data_len] = '\0';
+ file = eina_file_virtualize(NULL, svg_data, svg_data_len + 1, EINA_FALSE);
+ if (efl_file_loaded_get(ep->object)) efl_file_unload(ep->object);
+ efl_file_simple_mmap_load(ep->object, file, NULL);
+
+ ep->typedata.vector->current_id = desc->vg.id;
+ }
+ }
+}
+
+static void
_edje_vector_recalc_apply(Edje *ed, Edje_Real_Part *ep, Edje_Calc_Params *p3 EINA_UNUSED, Edje_Part_Description_Vector *chosen_desc, FLOAT_T pos)
{
int new_id = -1; //invalid svg
char src_key[32], dest_key[32];
Efl_VG *src_root, *dest_root, *root;
Edje_Vector_File_Type type = chosen_desc->vg.type;
- Edje_Vector_File_Type new_type = EDJE_VECTOR_FILE_TYPE_SVG;
+ Edje_Vector_File_Type new_type = EDJE_VECTOR_FILE_TYPE_SVGZ;
evas_object_geometry_get(ep->object, NULL, NULL, &w, &h);
if( (w == 0) || (h == 0)) return;
#endif
return;
}
+ else if (type == EDJE_VECTOR_FILE_TYPE_SVG)
+ {
+ _edje_vector_load_svg(ed, ep, src_key);
+ return;
+ }
if (ep->param2)
{
}
}
- if ((new_id < 0) || (new_type == EDJE_VECTOR_FILE_TYPE_LOTTIE))
+ if ((new_id < 0) || (new_type == EDJE_VECTOR_FILE_TYPE_LOTTIE) || (new_type == EDJE_VECTOR_FILE_TYPE_SVG))
{
#ifndef BUILD_VG_LOADER_JSON
if (new_type == EDJE_VECTOR_FILE_TYPE_LOTTIE)
ERR("Evas Vg Lottie (Lottie) Loader is not supported, Only Static Vector Image(SVG) is available!");
else
#endif
- efl_file_simple_load(ep->object, ed->file->path, src_key);
+ efl_file_simple_load(ep->object, ed->file->path, src_key);
}
else
{
typedef enum _Edje_Vector_File_Type
{
- EDJE_VECTOR_FILE_TYPE_SVG = 0,
- EDJE_VECTOR_FILE_TYPE_LOTTIE
+ EDJE_VECTOR_FILE_TYPE_SVGZ = 0,
+ EDJE_VECTOR_FILE_TYPE_LOTTIE,
+ EDJE_VECTOR_FILE_TYPE_SVG
} Edje_Vector_File_Type;
struct _Edje_Vector_Directory_Entry