Revert "edje_calc: make INTP use TO_INT_ROUND"
Summary:
This reverts commit be00af9bc3
which has
incorrect calculation. For more information please refer to:
https://phab.enlightenment.org/D8665
Reviewers: Hermet
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D8666
This commit is contained in:
parent
29b65ccf88
commit
e9b2e3c6c3
|
@ -2397,29 +2397,12 @@ _edje_filter_get(Edje *ed, Edje_Part_Description_Spec_Filter *filter)
|
||||||
static void
|
static void
|
||||||
_edje_part_pixel_adjust(Edje *ed,
|
_edje_part_pixel_adjust(Edje *ed,
|
||||||
Edje_Real_Part *ep,
|
Edje_Real_Part *ep,
|
||||||
Edje_Calc_Params *params,
|
Edje_Calc_Params *params)
|
||||||
Eina_Bool round)
|
|
||||||
{
|
{
|
||||||
int xw, yh, fxw, fyh;
|
|
||||||
|
|
||||||
xw = ABS(params->final.x) + params->final.w;
|
|
||||||
yh = ABS(params->final.y) + params->final.h;
|
|
||||||
|
|
||||||
if (round)
|
|
||||||
{
|
|
||||||
fxw = TO_INT_ROUND(ADD(ABS(params->eval.x), params->eval.w));
|
|
||||||
fyh = TO_INT_ROUND(ADD(ABS(params->eval.y), params->eval.h));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
fxw = TO_INT(ADD(ABS(params->eval.x), params->eval.w));
|
|
||||||
fyh = TO_INT(ADD(ABS(params->eval.y), params->eval.h));
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Adjust rounding to not loose one pixels compared to float
|
/* Adjust rounding to not loose one pixels compared to float
|
||||||
information only when rendering to avoid infinite adjustement
|
information only when rendering to avoid infinite adjustement
|
||||||
when doing min restricted calc */
|
when doing min restricted calc */
|
||||||
if (xw < fxw)
|
if (ABS(params->final.x) + params->final.w < TO_INT(ADD(ABS(params->eval.x), params->eval.w)))
|
||||||
{
|
{
|
||||||
if (!ed->calc_only)
|
if (!ed->calc_only)
|
||||||
{
|
{
|
||||||
|
@ -2430,7 +2413,7 @@ _edje_part_pixel_adjust(Edje *ed,
|
||||||
ep->invalidate = EINA_TRUE;
|
ep->invalidate = EINA_TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (xw > fxw)
|
else if (ABS(params->final.x) + params->final.w > TO_INT(ADD(ABS(params->eval.x), params->eval.w)))
|
||||||
{
|
{
|
||||||
if (!ed->calc_only)
|
if (!ed->calc_only)
|
||||||
{
|
{
|
||||||
|
@ -2441,8 +2424,7 @@ _edje_part_pixel_adjust(Edje *ed,
|
||||||
ep->invalidate = EINA_TRUE;
|
ep->invalidate = EINA_TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (ABS(params->final.y) + params->final.h < TO_INT(ADD(ABS(params->eval.y), params->eval.h)))
|
||||||
if (yh < fyh)
|
|
||||||
{
|
{
|
||||||
if (!ed->calc_only)
|
if (!ed->calc_only)
|
||||||
{
|
{
|
||||||
|
@ -2453,7 +2435,7 @@ _edje_part_pixel_adjust(Edje *ed,
|
||||||
ep->invalidate = EINA_TRUE;
|
ep->invalidate = EINA_TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (yh > fyh)
|
else if (ABS(params->final.y) + params->final.h > TO_INT(ADD(ABS(params->eval.y), params->eval.h)))
|
||||||
{
|
{
|
||||||
if (!ed->calc_only)
|
if (!ed->calc_only)
|
||||||
{
|
{
|
||||||
|
@ -2467,6 +2449,7 @@ _edje_part_pixel_adjust(Edje *ed,
|
||||||
|
|
||||||
if (params->final.w < 0 || params->final.h < 0)
|
if (params->final.w < 0 || params->final.h < 0)
|
||||||
ERR("The params final size became negative");
|
ERR("The params final size became negative");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -3011,7 +2994,7 @@ _edje_part_recalc_single(Edje *ed,
|
||||||
params->final.w = TO_INT(params->eval.w);
|
params->final.w = TO_INT(params->eval.w);
|
||||||
params->final.h = TO_INT(params->eval.h);
|
params->final.h = TO_INT(params->eval.h);
|
||||||
|
|
||||||
_edje_part_pixel_adjust(ed, ep, params, EINA_FALSE);
|
_edje_part_pixel_adjust(ed, ep, params);
|
||||||
/* fill */
|
/* fill */
|
||||||
if (ep->part->type == EDJE_PART_TYPE_IMAGE)
|
if (ep->part->type == EDJE_PART_TYPE_IMAGE)
|
||||||
_edje_part_recalc_single_fill(ep, &((Edje_Part_Description_Image *)desc)->image.fill, params);
|
_edje_part_recalc_single_fill(ep, &((Edje_Part_Description_Image *)desc)->image.fill, params);
|
||||||
|
@ -3473,7 +3456,7 @@ _edje_physics_body_add(Edje *ed, Edje_Real_Part *rp, EPhysics_World *world)
|
||||||
? (_x1) \
|
? (_x1) \
|
||||||
: ADD(_x1, MUL(_p, SUB(_x2, _x1))));
|
: ADD(_x1, MUL(_p, SUB(_x2, _x1))));
|
||||||
|
|
||||||
#define INTP(_x1, _x2, _p) TO_INT_ROUND(FINTP(_x1, _x2, _p))
|
#define INTP(_x1, _x2, _p) TO_INT(FINTP(_x1, _x2, _p))
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_map_colors_free(Edje_Calc_Params *pf)
|
_map_colors_free(Edje_Calc_Params *pf)
|
||||||
|
@ -4360,7 +4343,7 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta
|
||||||
p3->req.w = INTP(p1->req.w, p2->req.w, pos);
|
p3->req.w = INTP(p1->req.w, p2->req.w, pos);
|
||||||
p3->req.h = INTP(p1->req.h, p2->req.h, pos);
|
p3->req.h = INTP(p1->req.h, p2->req.h, pos);
|
||||||
|
|
||||||
_edje_part_pixel_adjust(ed, ep, p3, EINA_TRUE);
|
_edje_part_pixel_adjust(ed, ep, p3);
|
||||||
|
|
||||||
if (ep->part->dragable.x)
|
if (ep->part->dragable.x)
|
||||||
{
|
{
|
||||||
|
|
|
@ -155,9 +155,7 @@ EAPI extern int _edje_default_log_dom ;
|
||||||
#define FROM_DOUBLE(a) eina_f32p32_double_from(a)
|
#define FROM_DOUBLE(a) eina_f32p32_double_from(a)
|
||||||
#define FROM_INT(a) eina_f32p32_int_from(a)
|
#define FROM_INT(a) eina_f32p32_int_from(a)
|
||||||
#define TO_INT(a) eina_f32p32_int_to(a)
|
#define TO_INT(a) eina_f32p32_int_to(a)
|
||||||
#define TO_INT_ROUND(a) (((a) >= 0.0) \
|
#define TO_INT_ROUND(a) eina_f32p32_int_to(ADD(a, FROM_DOUBLE(0.5)))
|
||||||
? eina_f32p32_int_to(ADD(a, FROM_DOUBLE(0.5)) \
|
|
||||||
: eina_f32p32_int_to(ADD(a, FROM_DOUBLE(-0.5))
|
|
||||||
#define ZERO 0
|
#define ZERO 0
|
||||||
#define COS(a) eina_f32p32_cos(a)
|
#define COS(a) eina_f32p32_cos(a)
|
||||||
#define SIN(a) eina_f32p32_sin(a)
|
#define SIN(a) eina_f32p32_sin(a)
|
||||||
|
@ -180,7 +178,7 @@ EAPI extern int _edje_default_log_dom ;
|
||||||
#define FROM_DOUBLE(a) (a)
|
#define FROM_DOUBLE(a) (a)
|
||||||
#define FROM_INT(a) (double)(a)
|
#define FROM_INT(a) (double)(a)
|
||||||
#define TO_INT(a) (int)(a)
|
#define TO_INT(a) (int)(a)
|
||||||
#define TO_INT_ROUND(a) (((a) >= 0.0) ? (int)(a + 0.5) : (int)(a - 0.5))
|
#define TO_INT_ROUND(a) (int)(a + 0.5)
|
||||||
#define ZERO 0.0
|
#define ZERO 0.0
|
||||||
#define COS(a) cos(a)
|
#define COS(a) cos(a)
|
||||||
#define SIN(a) sin(a)
|
#define SIN(a) sin(a)
|
||||||
|
|
Loading…
Reference in New Issue