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
This commit is contained in:
junsu choi 2020-02-17 19:05:22 +09:00
parent 2fe158ce65
commit a4311f73ee
5 changed files with 34 additions and 9 deletions

View File

@ -15789,7 +15789,7 @@ st_collections_group_programs_program_action(void)
"VG_ANIM_PAUSE", EDJE_ACTION_TYPE_VG_ANIM_PAUSE,
"VG_ANIM_RESUME", EDJE_ACTION_TYPE_VG_ANIM_RESUME,
"VG_ANIM_PLAY", EDJE_ACTION_TYPE_VG_ANIM_PLAY,
"VG_ANIM_PLAY_BACK", EDJE_ACTION_TYPE_VG_ANIM_REWIND,
"VG_ANIM_REWIND", EDJE_ACTION_TYPE_VG_ANIM_REWIND,
"VG_ANIM_LOOP", EDJE_ACTION_TYPE_VG_ANIM_LOOP,
NULL);
if (ep->action == EDJE_ACTION_TYPE_STATE_SET)

View File

@ -1952,12 +1952,12 @@ typedef enum _Edje_Action_Type
EDJE_ACTION_TYPE_PHYSICS_ROT_SET = 23, /**< @since 1.8 @brief Physics rotation set action value */
EDJE_ACTION_TYPE_VIBRATION_SAMPLE = 24, /**< @since 1.10 @brief vibration sample 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 */
EDJE_ACTION_TYPE_LAST = 32 /**< Last action value */
} Edje_Action_Type;

View File

@ -3279,6 +3279,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)
{
@ -3363,6 +3364,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)
@ -3381,8 +3383,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;
}
@ -3402,7 +3407,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
{
@ -3428,6 +3438,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)
{
@ -3464,6 +3475,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)

View File

@ -3350,10 +3350,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);

View File

@ -1222,6 +1222,7 @@ low_mem_current:
#endif
#ifdef BUILD_VG_LOADER_JSON
case EDJE_ACTION_TYPE_VG_ANIM_STOP:
if (_edje_block_break(ed))
goto break_prog;
@ -1292,6 +1293,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);