* edje: Use fixed point for tween too.

SVN revision: 46429
This commit is contained in:
Cedric BAIL 2010-02-24 15:37:16 +00:00
parent 41b6529e00
commit fc20b4541e
8 changed files with 26 additions and 26 deletions

View File

@ -6599,7 +6599,7 @@ st_collections_group_programs_program_transition(void)
"ACCELERATE", EDJE_TWEEN_MODE_ACCELERATE, "ACCELERATE", EDJE_TWEEN_MODE_ACCELERATE,
"DECELERATE", EDJE_TWEEN_MODE_DECELERATE, "DECELERATE", EDJE_TWEEN_MODE_DECELERATE,
NULL); NULL);
ep->tween.time = parse_float_range(1, 0.0, 999999999.0); ep->tween.time = FROM_DOUBLE(parse_float_range(1, 0.0, 999999999.0));
} }
/** /**

View File

@ -16,14 +16,14 @@ static void _edje_part_recalc_single(Edje *ed, Edje_Real_Part *ep, Edje_Part_Des
static void _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags); static void _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags);
void void
_edje_part_pos_set(Edje *ed, Edje_Real_Part *ep, int mode, double pos) _edje_part_pos_set(Edje *ed, Edje_Real_Part *ep, int mode, FLOAT_T pos)
{ {
FLOAT_T fp_pos; FLOAT_T fp_pos;
FLOAT_T npos; FLOAT_T npos;
pos = CLAMP(pos, 0.0, 1.0); pos = CLAMP(pos, ZERO, FROM_INT(1));
fp_pos = FROM_DOUBLE(pos); fp_pos = pos;
npos = ZERO; npos = ZERO;
/* take linear pos along timescale and use interpolation method */ /* take linear pos along timescale and use interpolation method */

View File

@ -225,7 +225,7 @@ _edje_edd_init(void)
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "value", value, EET_T_DOUBLE); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "value", value, EET_T_DOUBLE);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "value2", value2, EET_T_DOUBLE); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "value2", value2, EET_T_DOUBLE);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "tween.mode", tween.mode, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "tween.mode", tween.mode, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "tween.time", tween.time, EET_T_DOUBLE); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "tween.time", tween.time, EDJE_T_FLOAT);
EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_program, Edje_Program, "targets", targets, _edje_edd_edje_program_target); EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_program, Edje_Program, "targets", targets, _edje_edd_edje_program_target);
EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_program, Edje_Program, "after", after, _edje_edd_edje_program_after); EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_program, Edje_Program, "after", after, _edje_edd_edje_program_after);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "api.name", api.name, EET_T_STRING); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "api.name", api.name, EET_T_STRING);

View File

@ -4950,7 +4950,7 @@ edje_edit_program_add(Evas_Object *obj, const char *name)
epr->state2 = NULL; epr->state2 = NULL;
epr->value2 = 0.0; epr->value2 = 0.0;
epr->tween.mode = 1; epr->tween.mode = 1;
epr->tween.time = 0.0; epr->tween.time = ZERO;
epr->targets = NULL; epr->targets = NULL;
epr->after = NULL; epr->after = NULL;
@ -5383,7 +5383,7 @@ edje_edit_program_transition_time_get(Evas_Object *obj, const char *prog)
GET_EPR_OR_RETURN(-1); GET_EPR_OR_RETURN(-1);
//printf("GET TRANSITION_TIME for program: %s [%.4f]\n", prog, epr->tween.time); //printf("GET TRANSITION_TIME for program: %s [%.4f]\n", prog, epr->tween.time);
return epr->tween.time; return TO_DOUBLE(epr->tween.time);
} }
EAPI Eina_Bool EAPI Eina_Bool
@ -5392,7 +5392,7 @@ edje_edit_program_transition_time_set(Evas_Object *obj, const char *prog, double
GET_EPR_OR_RETURN(0); GET_EPR_OR_RETURN(0);
//printf("GET TRANSITION_TIME for program: %s [%.4f]\n", prog, epr->tween.time); //printf("GET TRANSITION_TIME for program: %s [%.4f]\n", prog, epr->tween.time);
epr->tween.time = seconds; epr->tween.time = FROM_DOUBLE(seconds);
return 1; return 1;
} }

View File

@ -836,7 +836,7 @@ _edje_embryo_fn_set_state(Embryo_Program *ep, Embryo_Cell *params)
{ {
if (rp->program) _edje_program_end(ed, rp->program); if (rp->program) _edje_program_end(ed, rp->program);
_edje_part_description_apply(ed, rp, state, value, NULL, 0.0); _edje_part_description_apply(ed, rp, state, value, NULL, 0.0);
_edje_part_pos_set(ed, rp, EDJE_TWEEN_MODE_LINEAR, 0.0); _edje_part_pos_set(ed, rp, EDJE_TWEEN_MODE_LINEAR, ZERO);
_edje_recalc(ed); _edje_recalc(ed);
} }
return 0; return 0;
@ -918,7 +918,7 @@ _edje_embryo_fn_set_tween_state(Embryo_Program *ep, Embryo_Cell *params)
{ {
if (rp->program) _edje_program_end(ed, rp->program); if (rp->program) _edje_program_end(ed, rp->program);
_edje_part_description_apply(ed, rp, state1, value1, state2, value2); _edje_part_description_apply(ed, rp, state1, value1, state2, value2);
_edje_part_pos_set(ed, rp, EDJE_TWEEN_MODE_LINEAR, tween); _edje_part_pos_set(ed, rp, EDJE_TWEEN_MODE_LINEAR, FROM_DOUBLE(tween));
_edje_recalc(ed); _edje_recalc(ed);
} }
return 0; return 0;

View File

@ -3781,7 +3781,7 @@ _edje_lua_part_set_state(lua_State *L)
_edje_part_description_apply(obj->ed, obj->rp, _edje_part_description_apply(obj->ed, obj->rp,
luaL_checkstring(L, -2), luaL_checknumber(L, -1), luaL_checkstring(L, -2), luaL_checknumber(L, -1),
NULL, 0.0); NULL, 0.0);
_edje_part_pos_set(obj->ed, obj->rp, EDJE_TWEEN_MODE_LINEAR, 0.0); _edje_part_pos_set(obj->ed, obj->rp, EDJE_TWEEN_MODE_LINEAR, ZERO);
_edje_recalc(obj->ed); _edje_recalc(obj->ed);
return 0; return 0;
} }
@ -3800,7 +3800,7 @@ _edje_lua_part_set_tween_state(lua_State *L)
luaL_checkstring(L, -4), luaL_checknumber(L, -3), luaL_checkstring(L, -4), luaL_checknumber(L, -3),
luaL_checkstring(L, -2), luaL_checknumber(L, -1)); luaL_checkstring(L, -2), luaL_checknumber(L, -1));
_edje_part_pos_set(obj->ed, obj->rp, EDJE_TWEEN_MODE_LINEAR, _edje_part_pos_set(obj->ed, obj->rp, EDJE_TWEEN_MODE_LINEAR,
luaL_checknumber(L, -5)); FROM_DOUBLE(luaL_checknumber(L, -5)));
_edje_recalc(obj->ed); _edje_recalc(obj->ed);
return 0; return 0;
} }

View File

@ -434,7 +434,7 @@ struct _Edje_Program /* a conditional program to be run */
struct { struct {
int mode; /* how to tween - linear, sinusoidal etc. */ int mode; /* how to tween - linear, sinusoidal etc. */
double time; /* time to graduate between current and new state */ FLOAT_T time; /* time to graduate between current and new state */
} tween; } tween;
Eina_List *targets; /* list of target parts to apply the state to */ Eina_List *targets; /* list of target parts to apply the state to */
@ -1211,7 +1211,7 @@ extern Eina_List *_edje_freeze_calc_list;
extern Eina_Mempool *_edje_real_part_mp; extern Eina_Mempool *_edje_real_part_mp;
extern Eina_Mempool *_edje_real_part_state_mp; extern Eina_Mempool *_edje_real_part_state_mp;
void _edje_part_pos_set(Edje *ed, Edje_Real_Part *ep, int mode, double pos); void _edje_part_pos_set(Edje *ed, Edje_Real_Part *ep, int mode, FLOAT_T pos);
Edje_Part_Description *_edje_part_description_find(Edje *ed, Edje_Real_Part *rp, const char *name, double val); Edje_Part_Description *_edje_part_description_find(Edje *ed, Edje_Real_Part *rp, const char *name, double val);
void _edje_part_description_apply(Edje *ed, Edje_Real_Part *ep, const char *d1, double v1, const char *d2, double v2); void _edje_part_description_apply(Edje *ed, Edje_Real_Part *ep, const char *d1, double v1, const char *d2, double v2);
void _edje_recalc(Edje *ed); void _edje_recalc(Edje *ed);

View File

@ -379,7 +379,7 @@ edje_object_animation_set(Evas_Object *obj, int on)
runp = eina_list_data_get(newl); runp = eina_list_data_get(newl);
newl = eina_list_remove(newl, eina_list_data_get(newl)); newl = eina_list_remove(newl, eina_list_data_get(newl));
_edje_program_run_iterate(runp, runp->start_time + runp->program->tween.time); _edje_program_run_iterate(runp, runp->start_time + TO_DOUBLE(runp->program->tween.time));
if (_edje_block_break(ed)) if (_edje_block_break(ed))
{ {
eina_list_free(newl); eina_list_free(newl);
@ -440,7 +440,7 @@ edje_object_animation_get(const Evas_Object *obj)
int int
_edje_program_run_iterate(Edje_Running_Program *runp, double tim) _edje_program_run_iterate(Edje_Running_Program *runp, double tim)
{ {
double t, total; FLOAT_T t, total;
Eina_List *l; Eina_List *l;
Edje *ed; Edje *ed;
Edje_Program_Target *pt; Edje_Program_Target *pt;
@ -451,10 +451,10 @@ _edje_program_run_iterate(Edje_Running_Program *runp, double tim)
_edje_block(ed); _edje_block(ed);
_edje_ref(ed); _edje_ref(ed);
_edje_freeze(ed); _edje_freeze(ed);
t = tim - runp->start_time; t = FROM_DOUBLE(tim - runp->start_time);
total = runp->program->tween.time; total = runp->program->tween.time;
t /= total; t = DIV(t, total);
if (t > 1.0) t = 1.0; if (t > FROM_INT(1)) t = FROM_INT(1);
EINA_LIST_FOREACH(runp->program->targets, l, pt) EINA_LIST_FOREACH(runp->program->targets, l, pt)
{ {
if (pt->id >= 0) if (pt->id >= 0)
@ -464,7 +464,7 @@ _edje_program_run_iterate(Edje_Running_Program *runp, double tim)
runp->program->tween.mode, t); runp->program->tween.mode, t);
} }
} }
if (t >= 1.0) if (t >= FROM_INT(1))
{ {
Edje_Program_After *pa; Edje_Program_After *pa;
@ -481,7 +481,7 @@ _edje_program_run_iterate(Edje_Running_Program *runp, double tim)
NULL, NULL,
0.0); 0.0);
_edje_part_pos_set(ed, rp, _edje_part_pos_set(ed, rp,
runp->program->tween.mode, 0.0); runp->program->tween.mode, ZERO);
rp->program = NULL; rp->program = NULL;
} }
} }
@ -556,7 +556,7 @@ _edje_program_end(Edje *ed, Edje_Running_Program *runp)
NULL, NULL,
0.0); 0.0);
_edje_part_pos_set(ed, rp, _edje_part_pos_set(ed, rp,
runp->program->tween.mode, 0.0); runp->program->tween.mode, ZERO);
rp->program = NULL; rp->program = NULL;
} }
} }
@ -626,7 +626,7 @@ _edje_program_run(Edje *ed, Edje_Program *pr, int force, const char *ssig, const
_edje_freeze(ed); _edje_freeze(ed);
if (pr->action == EDJE_ACTION_TYPE_STATE_SET) if (pr->action == EDJE_ACTION_TYPE_STATE_SET)
{ {
if ((pr->tween.time > 0.0) && (!ed->no_anim)) if ((pr->tween.time > ZERO) && (!ed->no_anim))
{ {
Edje_Running_Program *runp; Edje_Running_Program *runp;
@ -645,7 +645,7 @@ _edje_program_run(Edje *ed, Edje_Program *pr, int force, const char *ssig, const
rp->param1.description->state.value, rp->param1.description->state.value,
pr->state, pr->state,
pr->value); pr->value);
_edje_part_pos_set(ed, rp, pr->tween.mode, 0.0); _edje_part_pos_set(ed, rp, pr->tween.mode, ZERO);
rp->program = runp; rp->program = runp;
} }
} }
@ -682,7 +682,7 @@ _edje_program_run(Edje *ed, Edje_Program *pr, int force, const char *ssig, const
pr->value, pr->value,
NULL, NULL,
0.0); 0.0);
_edje_part_pos_set(ed, rp, pr->tween.mode, 0.0); _edje_part_pos_set(ed, rp, pr->tween.mode, ZERO);
} }
} }
} }
@ -948,7 +948,7 @@ _edje_program_run(Edje *ed, Edje_Program *pr, int force, const char *ssig, const
} }
if (!((pr->action == EDJE_ACTION_TYPE_STATE_SET) if (!((pr->action == EDJE_ACTION_TYPE_STATE_SET)
/* hmm this fucks somethgin up. must look into it later */ /* hmm this fucks somethgin up. must look into it later */
/* && (pr->tween.time > 0.0) && (!ed->no_anim))) */ /* && (pr->tween.time > ZERO) && (!ed->no_anim))) */
)) ))
{ {
EINA_LIST_FOREACH(pr->after, l, pa) EINA_LIST_FOREACH(pr->after, l, pa)