evas_cache_vg : Implements sector_get/set internal APIs

Summary:
These APIs to get and set frames for a specific section in vg animation.
get API looks for a sector by name in the markerlist of VG_File_Data.
Then return start and end frames.

Depends on D10504

Test Plan: N/A

Reviewers: Hermet, smohanty, kimcinoo

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10505
This commit is contained in:
junsu choi 2019-11-12 14:29:50 +09:00
parent ddaa5d1e6e
commit 93551ca58e
2 changed files with 54 additions and 0 deletions

View File

@ -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);

View File

@ -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)
{