vg_loader: Get markers information form json data.
Summary: If json data has marker information, it is stored in vg file data. Test Plan: N/A Reviewers: Hermet, smohanty, kimcinoo Reviewed By: Hermet Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D10504
This commit is contained in:
parent
97f5894972
commit
ddaa5d1e6e
|
@ -141,6 +141,7 @@ typedef struct _Evas_Canvas3D_File_Eet Evas_Canvas3D_File_Eet;
|
||||||
|
|
||||||
typedef struct _Vg_File_Data Vg_File_Data;
|
typedef struct _Vg_File_Data Vg_File_Data;
|
||||||
typedef struct _Vg_File_Anim_Data Vg_File_Anim_Data;
|
typedef struct _Vg_File_Anim_Data Vg_File_Anim_Data;
|
||||||
|
typedef struct _Vg_File_Anim_Data_Marker Vg_File_Anim_Data_Marker;
|
||||||
|
|
||||||
struct _Evas_Canvas3D_Vec2_Eet
|
struct _Evas_Canvas3D_Vec2_Eet
|
||||||
{
|
{
|
||||||
|
@ -1533,11 +1534,19 @@ struct _Evas_Image_Save_Func
|
||||||
int (*image_save) (RGBA_Image *im, const char *file, const char *key, int quality, int compress, const char *encoding);
|
int (*image_save) (RGBA_Image *im, const char *file, const char *key, int quality, int compress, const char *encoding);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct _Vg_File_Anim_Data_Marker
|
||||||
|
{
|
||||||
|
Eina_Stringshare *name;
|
||||||
|
int startframe;
|
||||||
|
int endframe;
|
||||||
|
};
|
||||||
|
|
||||||
struct _Vg_File_Anim_Data
|
struct _Vg_File_Anim_Data
|
||||||
{
|
{
|
||||||
unsigned int frame_num; //current frame number
|
unsigned int frame_num; //current frame number
|
||||||
unsigned int frame_cnt; //total frame count
|
unsigned int frame_cnt; //total frame count
|
||||||
float duration; //animation duration
|
float duration; //animation duration
|
||||||
|
Eina_Inarray *markers; //array of Vg_File_Anim_Data_Marker
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _Vg_File_Data
|
struct _Vg_File_Data
|
||||||
|
|
|
@ -20,6 +20,13 @@ evas_vg_load_file_close_json(Vg_File_Data *vfd)
|
||||||
|
|
||||||
Lottie_Animation *lot_anim = (Lottie_Animation *) vfd->loader_data;
|
Lottie_Animation *lot_anim = (Lottie_Animation *) vfd->loader_data;
|
||||||
lottie_animation_destroy(lot_anim);
|
lottie_animation_destroy(lot_anim);
|
||||||
|
if (vfd->anim_data->markers)
|
||||||
|
{
|
||||||
|
Vg_File_Anim_Data_Marker *marker;
|
||||||
|
EINA_INARRAY_FOREACH(vfd->anim_data->markers, marker)
|
||||||
|
if (marker->name) eina_stringshare_del(marker->name);
|
||||||
|
eina_inarray_free(vfd->anim_data->markers);
|
||||||
|
}
|
||||||
if (vfd->anim_data) free(vfd->anim_data);
|
if (vfd->anim_data) free(vfd->anim_data);
|
||||||
if (vfd->root) efl_unref(vfd->root);
|
if (vfd->root) efl_unref(vfd->root);
|
||||||
free(vfd);
|
free(vfd);
|
||||||
|
@ -70,6 +77,23 @@ evas_vg_load_file_open_json(Eina_File *file,
|
||||||
if (!vfd->anim_data) goto err;
|
if (!vfd->anim_data) goto err;
|
||||||
vfd->anim_data->duration = lottie_animation_get_duration(lot_anim);
|
vfd->anim_data->duration = lottie_animation_get_duration(lot_anim);
|
||||||
vfd->anim_data->frame_cnt = frame_cnt;
|
vfd->anim_data->frame_cnt = frame_cnt;
|
||||||
|
|
||||||
|
// marker information
|
||||||
|
const LOTMarkerList *markerlist = lottie_animation_get_markerlist(lot_anim);
|
||||||
|
if (markerlist && markerlist->size > 0)
|
||||||
|
{
|
||||||
|
Vg_File_Anim_Data_Marker *marker;
|
||||||
|
int i = 0;
|
||||||
|
vfd->anim_data->markers = eina_inarray_new(sizeof(Vg_File_Anim_Data_Marker), 0);
|
||||||
|
eina_inarray_resize(vfd->anim_data->markers, markerlist->size);
|
||||||
|
EINA_INARRAY_FOREACH(vfd->anim_data->markers, marker)
|
||||||
|
{
|
||||||
|
marker->name = eina_stringshare_add(markerlist->ptr[i].name);
|
||||||
|
marker->startframe = markerlist->ptr[i].startframe;
|
||||||
|
marker->endframe = markerlist->ptr[i].endframe;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//default size
|
//default size
|
||||||
|
|
Loading…
Reference in New Issue