From 8f6c71e8e1d4a7c32803080b706442fc6c362746 Mon Sep 17 00:00:00 2001 From: JunsuChoi Date: Mon, 17 Feb 2020 19:05:22 +0900 Subject: [PATCH] edje: Disable the json vector animation feature with a flag. Summary: Json vector animation requires the json loader to be loaded. Therefore, if the loader does not load, it prints an appropriate error message and disables the feature. Depends on D11228 Test Plan: N/A Reviewers: Hermet, Jaehyun_Cho, id213sin Reviewed By: Hermet Subscribers: raster, cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D11230 Change-Id: I4c7b966189c8612d06ff44739d0e57b6d15c9faa --- src/lib/edje/Edje_Common.h | 12 ++++++------ src/lib/edje/edje_calc.c | 16 ++++++++++++++-- src/lib/edje/edje_private.h | 2 ++ src/lib/edje/edje_program.c | 11 +++++++++++ 4 files changed, 33 insertions(+), 8 deletions(-) diff --git a/src/lib/edje/Edje_Common.h b/src/lib/edje/Edje_Common.h index 6b3489b..518c6ed 100644 --- a/src/lib/edje/Edje_Common.h +++ b/src/lib/edje/Edje_Common.h @@ -2490,12 +2490,12 @@ typedef enum _Edje_Action_Type //EDJE_ACTION_TYPE_MO = 25, /**< @since 1.15 @brief Mo action value */ //EDJE_ACTION_TYPE_LAST = 26 /**< Last action value */ EDJE_ACTION_TYPE_MO = 25, /**< @since 1.15 @brief Mo action value */ - EDJE_ACTION_TYPE_VG_ANIM_STOP, - EDJE_ACTION_TYPE_VG_ANIM_PAUSE, - EDJE_ACTION_TYPE_VG_ANIM_RESUME, - EDJE_ACTION_TYPE_VG_ANIM_PLAY, - EDJE_ACTION_TYPE_VG_ANIM_REWIND, - EDJE_ACTION_TYPE_VG_ANIM_LOOP, + EDJE_ACTION_TYPE_VG_ANIM_STOP = 26, /** @since 1.24 @brief Vector animation stop action value */ + EDJE_ACTION_TYPE_VG_ANIM_PAUSE = 27, /** @since 1.24 @brief Vector animation pause action value */ + EDJE_ACTION_TYPE_VG_ANIM_RESUME = 28, /** @since 1.24 @brief Vector animation resume action value */ + EDJE_ACTION_TYPE_VG_ANIM_PLAY = 29, /** @since 1.24 @brief Vector animation play action value */ + EDJE_ACTION_TYPE_VG_ANIM_REWIND = 30, /** @since 1.24 @brief Vector animation rewind action value */ + EDJE_ACTION_TYPE_VG_ANIM_LOOP = 31, /** @since 1.24 @brief Vector animation loop value */ #ifdef EDJE_TIZEN_PLUGIN EDJE_ACTION_TYPE_RUN_PLUGIN = 32, EDJE_ACTION_TYPE_LAST = 33 /**< Last action value */ diff --git a/src/lib/edje/edje_calc.c b/src/lib/edje/edje_calc.c index 5aae9a4..58c1c76 100644 --- a/src/lib/edje/edje_calc.c +++ b/src/lib/edje/edje_calc.c @@ -3344,6 +3344,7 @@ _edje_image_recalc_apply(Edje *ed, Edje_Real_Part *ep, Edje_Calc_Params *p3, Edj evas_object_image_border_center_fill_set(ep->object, EVAS_BORDER_FILL_SOLID); } +#ifdef BUILD_VG_LOADER_JSON static void _edje_vector_animation_running_cb(void *data, const Efl_Event *event) { @@ -3434,6 +3435,7 @@ _edje_vector_load_json(Edje *ed, Edje_Real_Part *ep, const char *key) efl_gfx_frame_controller_frame_set(ep->object, (int)(frame_count * desc->vg.frame)); } } +#endif 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) @@ -3452,8 +3454,11 @@ _edje_vector_recalc_apply(Edje *ed, Edje_Real_Part *ep, Edje_Calc_Params *p3 EIN if (type == EDJE_VECTOR_FILE_TYPE_JSON) { +#ifdef BUILD_VG_LOADER_JSON _edje_vector_load_json(ed, ep, src_key); - +#else + ERR("Evas Vg Json (Lottie) Loader is not supported, Only Static Vector Image(SVG) is available!"); +#endif return; } @@ -3473,7 +3478,12 @@ _edje_vector_recalc_apply(Edje *ed, Edje_Real_Part *ep, Edje_Calc_Params *p3 EIN if ((new_id < 0) || (new_type == EDJE_VECTOR_FILE_TYPE_JSON)) { - efl_file_simple_load(ep->object, ed->file->path, src_key); +#ifndef BUILD_VG_LOADER_JSON + if (new_type == EDJE_VECTOR_FILE_TYPE_JSON) + ERR("Evas Vg Json (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); } else { @@ -3499,6 +3509,7 @@ _edje_vector_recalc_apply(Edje *ed, Edje_Real_Part *ep, Edje_Calc_Params *p3 EIN } } +#ifdef BUILD_VG_LOADER_JSON void _edje_part_vector_anim_stop(Edje *ed EINA_UNUSED, Edje_Real_Part *rp) { @@ -3535,6 +3546,7 @@ _edje_part_vector_anim_play(Edje *ed EINA_UNUSED, Edje_Real_Part *rp, Eina_Bool rp->typedata.vector->is_playing = EINA_TRUE; efl_canvas_object_animation_start(rp->object, rp->typedata.vector->anim, 1.0, 0.0); } +#endif static Edje_Real_Part * _edje_real_part_state_get(Edje *ed, Edje_Real_Part *ep, int flags, int id, int *state) diff --git a/src/lib/edje/edje_private.h b/src/lib/edje/edje_private.h index a390bba..3a951d5 100644 --- a/src/lib/edje/edje_private.h +++ b/src/lib/edje/edje_private.h @@ -3540,10 +3540,12 @@ char * _edje_text_cursor_content_get(Edje_Real_Part *rp, Efl_Text_Cursor_Handle void _edje_object_part_text_insert(Edje *ed, Edje_Real_Part *rp, const char *text); void _edje_internal_proxy_shutdown(void); +#ifdef BUILD_VG_LOADER_JSON void _edje_part_vector_anim_stop(Edje *ed, Edje_Real_Part *rp); void _edje_part_vector_anim_pause(Edje *ed, Edje_Real_Part *rp); void _edje_part_vector_anim_resume(Edje *ed, Edje_Real_Part *rp); void _edje_part_vector_anim_play(Edje *ed, Edje_Real_Part *rp, Eina_Bool backward, Eina_Bool loop); +#endif #ifdef HAVE_EPHYSICS Eina_Bool _edje_ephysics_load(void); diff --git a/src/lib/edje/edje_program.c b/src/lib/edje/edje_program.c index ec3536f..56e54ea 100644 --- a/src/lib/edje/edje_program.c +++ b/src/lib/edje/edje_program.c @@ -1257,6 +1257,7 @@ low_mem_current: break; #endif +#ifdef BUILD_VG_LOADER_JSON case EDJE_ACTION_TYPE_VG_ANIM_STOP: if (_edje_block_break(ed)) goto break_prog; @@ -1327,6 +1328,16 @@ low_mem_current: } } break; +#else + case EDJE_ACTION_TYPE_VG_ANIM_STOP: + case EDJE_ACTION_TYPE_VG_ANIM_PAUSE: + case EDJE_ACTION_TYPE_VG_ANIM_RESUME: + case EDJE_ACTION_TYPE_VG_ANIM_LOOP: + case EDJE_ACTION_TYPE_VG_ANIM_REWIND: + case EDJE_ACTION_TYPE_VG_ANIM_PLAY: + ERR("Evas Vg Json (Lottie) Loader is not supported, Only Static Vector Image(SVG) is available!"); + break; +#endif default: // _edje_emit(ed, "program,start", pr->name); -- 2.7.4