jsuya pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=ddaa5d1e6e76e76cf836182ee392f8b464a243d4

commit ddaa5d1e6e76e76cf836182ee392f8b464a243d4
Author: JunsuChoi <[email protected]>
Date:   Tue Nov 12 14:28:44 2019 +0900

    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
---
 src/lib/evas/include/evas_private.h                |  9 ++++++++
 .../evas/vg_loaders/json/evas_vg_load_json.c       | 24 ++++++++++++++++++++++
 2 files changed, 33 insertions(+)

diff --git a/src/lib/evas/include/evas_private.h 
b/src/lib/evas/include/evas_private.h
index 2081c3dc85..838174a3f2 100644
--- a/src/lib/evas/include/evas_private.h
+++ b/src/lib/evas/include/evas_private.h
@@ -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_Anim_Data              Vg_File_Anim_Data;
+typedef struct _Vg_File_Anim_Data_Marker       Vg_File_Anim_Data_Marker;
 
 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);
 };
 
+struct _Vg_File_Anim_Data_Marker
+{
+   Eina_Stringshare *name;
+   int               startframe;
+   int               endframe;
+};
+
 struct _Vg_File_Anim_Data
 {
    unsigned int frame_num;            //current frame number
    unsigned int frame_cnt;            //total frame count
    float        duration;             //animation duration
+   Eina_Inarray *markers;             //array of Vg_File_Anim_Data_Marker
 };
 
 struct _Vg_File_Data
diff --git a/src/modules/evas/vg_loaders/json/evas_vg_load_json.c 
b/src/modules/evas/vg_loaders/json/evas_vg_load_json.c
index fbcfa9c83a..e7f2754dd9 100644
--- a/src/modules/evas/vg_loaders/json/evas_vg_load_json.c
+++ b/src/modules/evas/vg_loaders/json/evas_vg_load_json.c
@@ -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_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->root) efl_unref(vfd->root);
    free(vfd);
@@ -70,6 +77,23 @@ evas_vg_load_file_open_json(Eina_File *file,
         if (!vfd->anim_data) goto err;
         vfd->anim_data->duration = lottie_animation_get_duration(lot_anim);
         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

-- 


Reply via email to