diff --git a/src/lib/evas/canvas/evas_vg_private.h b/src/lib/evas/canvas/evas_vg_private.h index 036604b6ad..f5600f9757 100644 --- a/src/lib/evas/canvas/evas_vg_private.h +++ b/src/lib/evas/canvas/evas_vg_private.h @@ -151,6 +151,8 @@ Vg_File_Data * evas_cache_vg_file_open(const Eina_File *file, const Eina_Bool evas_cache_vg_file_save(Efl_VG *root, int w, int h, const char *file, const char *key, const Efl_File_Save_Info *info); Eina_Bool evas_cache_vg_entry_file_save(Vg_Cache_Entry *vg_entry, const char *file, const char *key, const Efl_File_Save_Info *info); double evas_cache_vg_anim_duration_get(const Vg_Cache_Entry *vg_entry); +Eina_Bool evas_cache_vg_anim_sector_set(const Vg_Cache_Entry* vg_entry, const char *name, int startframe, int endframe); +Eina_Bool evas_cache_vg_anim_sector_get(const Vg_Cache_Entry* vg_entry, const char *name, int* startframe, int* endframe); unsigned int evas_cache_vg_anim_frame_count_get(const Vg_Cache_Entry *vg_entry); Eina_Size2D evas_cache_vg_entry_default_size_get(const Vg_Cache_Entry *vg_entry); void efl_canvas_vg_node_vg_obj_set(Efl_VG *node, Efl_VG *vg_obj, Efl_Canvas_Vg_Object_Data *vd); diff --git a/src/lib/evas/vg/evas_vg_cache.c b/src/lib/evas/vg/evas_vg_cache.c index 391d3cb2a9..8ffdfab3f8 100644 --- a/src/lib/evas/vg/evas_vg_cache.c +++ b/src/lib/evas/vg/evas_vg_cache.c @@ -433,6 +433,58 @@ evas_cache_vg_anim_frame_count_get(const Vg_Cache_Entry* vg_entry) return vfd->anim_data->frame_cnt; } +Eina_Bool +evas_cache_vg_anim_sector_set(const Vg_Cache_Entry* vg_entry, const char *name, int startframe, int endframe) +{ + if (!vg_entry) return EINA_FALSE; + if (!vg_entry->vfd->anim_data) return EINA_FALSE; + if (!vg_entry->vfd->anim_data->markers) return EINA_FALSE; + if (!name) return EINA_FALSE; + + Vg_File_Anim_Data_Marker *marker; + Vg_File_Anim_Data_Marker new_marker; + int i = 0; + + EINA_INARRAY_FOREACH(vg_entry->vfd->anim_data->markers, marker) + { + if (!strcmp(marker->name, name)) + { + marker->startframe = startframe; + marker->endframe = endframe; + return EINA_TRUE; + } + i++; + } + + new_marker.name = eina_stringshare_add(name); + new_marker.startframe = startframe; + new_marker.endframe = endframe; + eina_inarray_push(vg_entry->vfd->anim_data->markers, &new_marker); + + return EINA_TRUE; +} + +Eina_Bool +evas_cache_vg_anim_sector_get(const Vg_Cache_Entry* vg_entry, const char *name, int* startframe, int* endframe) +{ + if (!vg_entry) return EINA_FALSE; + if (!vg_entry->vfd->anim_data) return EINA_FALSE; + if (!vg_entry->vfd->anim_data->markers) return EINA_FALSE; + if (!name) return EINA_FALSE; + + Vg_File_Anim_Data_Marker *marker; + EINA_INARRAY_FOREACH(vg_entry->vfd->anim_data->markers, marker) + { + if (!strcmp(marker->name, name)) + { + if (startframe) *startframe = marker->startframe; + if (endframe) *endframe = marker->endframe; + return EINA_TRUE; + } + } + return EINA_FALSE; +} + Efl_VG* evas_cache_vg_tree_get(Vg_Cache_Entry *vg_entry, unsigned int frame_num) {