forked from enlightenment/efl
edje: improve accuracy of math logic in part positioning.
This commit is contained in:
parent
56adc51e83
commit
397e0b90a2
12
ChangeLog
12
ChangeLog
|
@ -2,18 +2,24 @@
|
||||||
|
|
||||||
* Ecore-X: add ECORE_X_SYNC env variable for xlib backend
|
* Ecore-X: add ECORE_X_SYNC env variable for xlib backend
|
||||||
|
|
||||||
|
2013-07-18 Cedric Bail
|
||||||
|
|
||||||
|
* Edje: fix some logic in the fixed point path.
|
||||||
|
* Edje: improve accuracy of math part positionning.
|
||||||
|
|
||||||
2013-07-17 Guillaume Friloux
|
2013-07-17 Guillaume Friloux
|
||||||
* Fix ecore_con_server_timeout_set(). It was changing the
|
|
||||||
|
* Ecore_Con: fix ecore_con_server_timeout_set(). It was changing the
|
||||||
timeout value, but not the timer.
|
timeout value, but not the timer.
|
||||||
|
|
||||||
2013-07-17 Mike Blumenkrantz
|
2013-07-17 Mike Blumenkrantz
|
||||||
|
|
||||||
* Ecore-X: add error messages for xlib, ECORE_X_ATOM_XDND_DIRECTSAVE0,
|
* Ecore_X: add error messages for xlib, ECORE_X_ATOM_XDND_DIRECTSAVE0,
|
||||||
fix ecore_x_e_comp_pixmap_set to delete pixmap atom correctly
|
fix ecore_x_e_comp_pixmap_set to delete pixmap atom correctly
|
||||||
|
|
||||||
2013-07-15 Mike Blumenkrantz
|
2013-07-15 Mike Blumenkrantz
|
||||||
|
|
||||||
* Ecore-X: fix BadMatch errors in ecore_x_image_get when requested size was larger than XImage size
|
* Ecore_X: fix BadMatch errors in ecore_x_image_get when requested size was larger than XImage size
|
||||||
|
|
||||||
2013-07-15 Cedric Bail
|
2013-07-15 Cedric Bail
|
||||||
|
|
||||||
|
|
2
NEWS
2
NEWS
|
@ -211,6 +211,7 @@ Improvements:
|
||||||
- Reduce memory consumption of Edje program handler.
|
- Reduce memory consumption of Edje program handler.
|
||||||
- Use Eina_Cow to reduce memory usage.
|
- Use Eina_Cow to reduce memory usage.
|
||||||
- Use eo array of callbacks to reduce callbacks memory footprint.
|
- Use eo array of callbacks to reduce callbacks memory footprint.
|
||||||
|
- Improve accuracy of part positioning by keeping rounding information as long as possible.
|
||||||
* Ecore_Evas:
|
* Ecore_Evas:
|
||||||
- wayland-egl only renders now if last frame has been presented.
|
- wayland-egl only renders now if last frame has been presented.
|
||||||
* Embryo:
|
* Embryo:
|
||||||
|
@ -379,6 +380,7 @@ Fixes:
|
||||||
- Lua: Stop leaking evas objects in Lua.
|
- Lua: Stop leaking evas objects in Lua.
|
||||||
- Fix edje min size calc to calc sub GROUP parts too.
|
- Fix edje min size calc to calc sub GROUP parts too.
|
||||||
- Fix edje multisense segv (free non-malloced data from eet).
|
- Fix edje multisense segv (free non-malloced data from eet).
|
||||||
|
- Fix some logic issue when using fixed point path.
|
||||||
* Efreet:
|
* Efreet:
|
||||||
- Fix desktop command parsing of https.
|
- Fix desktop command parsing of https.
|
||||||
* Emotion:
|
* Emotion:
|
||||||
|
|
|
@ -866,7 +866,7 @@ _edje_part_recalc_single_rel(Edje *ed,
|
||||||
else
|
else
|
||||||
x = ADD(FROM_INT(desc->rel1.offset_x),
|
x = ADD(FROM_INT(desc->rel1.offset_x),
|
||||||
SCALE(desc->rel1.relative_x, ed->w));
|
SCALE(desc->rel1.relative_x, ed->w));
|
||||||
params->x = TO_INT(x);
|
params->eval.x = x;
|
||||||
|
|
||||||
if (rel2_to_x)
|
if (rel2_to_x)
|
||||||
w = ADD(SUB(ADD(FROM_INT(desc->rel2.offset_x + rel2_to_x->x),
|
w = ADD(SUB(ADD(FROM_INT(desc->rel2.offset_x + rel2_to_x->x),
|
||||||
|
@ -878,7 +878,7 @@ _edje_part_recalc_single_rel(Edje *ed,
|
||||||
SCALE(desc->rel2.relative_x, ed->w)),
|
SCALE(desc->rel2.relative_x, ed->w)),
|
||||||
x),
|
x),
|
||||||
FROM_INT(1));
|
FROM_INT(1));
|
||||||
params->w = TO_INT(w);
|
params->eval.w = w;
|
||||||
|
|
||||||
if (rel1_to_y)
|
if (rel1_to_y)
|
||||||
y = ADD(FROM_INT(desc->rel1.offset_y + rel1_to_y->y),
|
y = ADD(FROM_INT(desc->rel1.offset_y + rel1_to_y->y),
|
||||||
|
@ -886,7 +886,7 @@ _edje_part_recalc_single_rel(Edje *ed,
|
||||||
else
|
else
|
||||||
y = ADD(FROM_INT(desc->rel1.offset_y),
|
y = ADD(FROM_INT(desc->rel1.offset_y),
|
||||||
SCALE(desc->rel1.relative_y, ed->h));
|
SCALE(desc->rel1.relative_y, ed->h));
|
||||||
params->y = TO_INT(y);
|
params->eval.y = y;
|
||||||
|
|
||||||
if (rel2_to_y)
|
if (rel2_to_y)
|
||||||
h = ADD(SUB(ADD(FROM_INT(desc->rel2.offset_y + rel2_to_y->y),
|
h = ADD(SUB(ADD(FROM_INT(desc->rel2.offset_y + rel2_to_y->y),
|
||||||
|
@ -898,7 +898,7 @@ _edje_part_recalc_single_rel(Edje *ed,
|
||||||
SCALE(desc->rel2.relative_y, ed->h)),
|
SCALE(desc->rel2.relative_y, ed->h)),
|
||||||
y),
|
y),
|
||||||
FROM_INT(1));
|
FROM_INT(1));
|
||||||
params->h = TO_INT(h);
|
params->eval.h = h;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Edje_Internal_Aspect
|
static Edje_Internal_Aspect
|
||||||
|
@ -914,8 +914,8 @@ _edje_part_recalc_single_aspect(Edje *ed,
|
||||||
FLOAT_T aspect, amax, amin;
|
FLOAT_T aspect, amax, amin;
|
||||||
FLOAT_T new_w = ZERO, new_h = ZERO, want_x, want_y, want_w, want_h;
|
FLOAT_T new_w = ZERO, new_h = ZERO, want_x, want_y, want_w, want_h;
|
||||||
|
|
||||||
if (params->h <= ZERO) aspect = FROM_INT(999999);
|
if (params->eval.h <= ZERO) aspect = FROM_INT(999999);
|
||||||
else aspect = DIV(FROM_INT(params->w), FROM_INT(params->h));
|
else aspect = DIV(params->eval.w, params->eval.h);
|
||||||
amax = desc->aspect.max;
|
amax = desc->aspect.max;
|
||||||
amin = desc->aspect.min;
|
amin = desc->aspect.min;
|
||||||
if (desc->aspect.prefer == EDJE_ASPECT_PREFER_SOURCE &&
|
if (desc->aspect.prefer == EDJE_ASPECT_PREFER_SOURCE &&
|
||||||
|
@ -938,11 +938,11 @@ _edje_part_recalc_single_aspect(Edje *ed,
|
||||||
DIV(FROM_INT(ep->typedata.swallow->swallow_params.aspect.w),
|
DIV(FROM_INT(ep->typedata.swallow->swallow_params.aspect.w),
|
||||||
FROM_INT(ep->typedata.swallow->swallow_params.aspect.h));
|
FROM_INT(ep->typedata.swallow->swallow_params.aspect.h));
|
||||||
}
|
}
|
||||||
want_x = FROM_INT(params->x);
|
want_x = params->eval.x;
|
||||||
want_w = new_w = FROM_INT(params->w);
|
want_w = new_w = params->eval.w;
|
||||||
|
|
||||||
want_y = FROM_INT(params->y);
|
want_y = params->eval.y;
|
||||||
want_h = new_h = FROM_INT(params->h);
|
want_h = new_h = params->eval.h;
|
||||||
|
|
||||||
if ((amin > ZERO) && (amax > ZERO))
|
if ((amin > ZERO) && (amax > ZERO))
|
||||||
{
|
{
|
||||||
|
@ -978,24 +978,24 @@ _edje_part_recalc_single_aspect(Edje *ed,
|
||||||
/* adjust for min aspect (width / height) */
|
/* adjust for min aspect (width / height) */
|
||||||
if ((amin > ZERO) && (aspect < amin))
|
if ((amin > ZERO) && (aspect < amin))
|
||||||
{
|
{
|
||||||
new_h = DIV(FROM_INT(params->w), amin);
|
new_h = DIV(params->eval.w, amin);
|
||||||
new_w = SCALE(amin, params->h);
|
new_w = MUL(amin, params->eval.h);
|
||||||
}
|
}
|
||||||
/* adjust for max aspect (width / height) */
|
/* adjust for max aspect (width / height) */
|
||||||
if ((amax > ZERO) && (aspect > amax))
|
if ((amax > ZERO) && (aspect > amax))
|
||||||
{
|
{
|
||||||
new_h = DIV(FROM_INT(params->w), amax);
|
new_h = DIV(params->eval.w, amax);
|
||||||
new_w = SCALE(amax, params->h);
|
new_w = MUL(amax, params->eval.h);
|
||||||
}
|
}
|
||||||
if ((amax > ZERO) && (new_w < FROM_INT(params->w)))
|
if ((amax > ZERO) && (new_w < params->eval.w))
|
||||||
{
|
{
|
||||||
new_w = FROM_INT(params->w);
|
new_w = params->eval.w;
|
||||||
new_h = DIV(FROM_INT(params->w), amax);
|
new_h = DIV(params->eval.w, amax);
|
||||||
}
|
}
|
||||||
if ((amax > ZERO) && (new_h < FROM_INT(params->h)))
|
if ((amax > ZERO) && (new_h < params->eval.h))
|
||||||
{
|
{
|
||||||
new_w = SCALE(amax, params->h);
|
new_w = MUL(amax, params->eval.h);
|
||||||
new_h = FROM_INT(params->h);
|
new_h = params->eval.h;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
/* prefer vertical size as determiner */
|
/* prefer vertical size as determiner */
|
||||||
|
@ -1003,20 +1003,20 @@ _edje_part_recalc_single_aspect(Edje *ed,
|
||||||
/* keep both dimensions in check */
|
/* keep both dimensions in check */
|
||||||
/* adjust for max aspect (width / height) */
|
/* adjust for max aspect (width / height) */
|
||||||
if ((amax > ZERO) && (aspect > amax))
|
if ((amax > ZERO) && (aspect > amax))
|
||||||
new_w = SCALE(amax, params->h);
|
new_w = MUL(amax, params->eval.h);
|
||||||
/* adjust for min aspect (width / height) */
|
/* adjust for min aspect (width / height) */
|
||||||
if ((amin > ZERO) && (aspect < amin))
|
if ((amin > ZERO) && (aspect < amin))
|
||||||
new_w = SCALE(amin, params->h);
|
new_w = MUL(amin, params->eval.h);
|
||||||
break;
|
break;
|
||||||
/* prefer horizontal size as determiner */
|
/* prefer horizontal size as determiner */
|
||||||
case EDJE_ASPECT_PREFER_HORIZONTAL:
|
case EDJE_ASPECT_PREFER_HORIZONTAL:
|
||||||
/* keep both dimensions in check */
|
/* keep both dimensions in check */
|
||||||
/* adjust for max aspect (width / height) */
|
/* adjust for max aspect (width / height) */
|
||||||
if ((amax > ZERO) && (aspect > amax))
|
if ((amax > ZERO) && (aspect > amax))
|
||||||
new_h = DIV(FROM_INT(params->w), amax);
|
new_h = DIV(params->eval.w, amax);
|
||||||
/* adjust for min aspect (width / height) */
|
/* adjust for min aspect (width / height) */
|
||||||
if ((amin > ZERO) && (aspect < amin))
|
if ((amin > ZERO) && (aspect < amin))
|
||||||
new_h = DIV(FROM_INT(params->w), amin);
|
new_h = DIV(params->eval.w, amin);
|
||||||
break;
|
break;
|
||||||
case EDJE_ASPECT_PREFER_SOURCE:
|
case EDJE_ASPECT_PREFER_SOURCE:
|
||||||
case EDJE_ASPECT_PREFER_BOTH:
|
case EDJE_ASPECT_PREFER_BOTH:
|
||||||
|
@ -1024,14 +1024,14 @@ _edje_part_recalc_single_aspect(Edje *ed,
|
||||||
/* adjust for max aspect (width / height) */
|
/* adjust for max aspect (width / height) */
|
||||||
if ((amax > ZERO) && (aspect > amax))
|
if ((amax > ZERO) && (aspect > amax))
|
||||||
{
|
{
|
||||||
new_w = SCALE(amax, params->h);
|
new_w = MUL(amax, params->eval.h);
|
||||||
new_h = DIV(FROM_INT(params->w), amax);
|
new_h = DIV(params->eval.w, amax);
|
||||||
}
|
}
|
||||||
/* adjust for min aspect (width / height) */
|
/* adjust for min aspect (width / height) */
|
||||||
if ((amin > ZERO) && (aspect < amin))
|
if ((amin > ZERO) && (aspect < amin))
|
||||||
{
|
{
|
||||||
new_w = SCALE(amin, params->h);
|
new_w = MUL(amin, params->eval.h);
|
||||||
new_h = DIV(FROM_INT(params->w), amin);
|
new_h = DIV(params->eval.w, amin);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -1059,16 +1059,16 @@ _edje_part_recalc_single_aspect(Edje *ed,
|
||||||
if (amin != ZERO)
|
if (amin != ZERO)
|
||||||
{
|
{
|
||||||
/* fix h and vary w */
|
/* fix h and vary w */
|
||||||
if (new_w > FROM_INT(params->w))
|
if (new_w > params->eval.w)
|
||||||
{
|
{
|
||||||
// params->w = new_w;
|
// params->w = new_w;
|
||||||
// EXCEEDS BOUNDS in W
|
// EXCEEDS BOUNDS in W
|
||||||
new_h = DIV(FROM_INT(params->w), amin);
|
new_h = DIV(params->eval.w, amin);
|
||||||
new_w = FROM_INT(params->w);
|
new_w = params->eval.w;
|
||||||
if (new_h > FROM_INT(params->h))
|
if (new_h > params->eval.h)
|
||||||
{
|
{
|
||||||
new_h = FROM_INT(params->h);
|
new_h = params->eval.h;
|
||||||
new_w = SCALE(amin, params->h);
|
new_w = MUL(amin, params->eval.h);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* fix w and vary h */
|
/* fix w and vary h */
|
||||||
|
@ -1076,16 +1076,16 @@ _edje_part_recalc_single_aspect(Edje *ed,
|
||||||
{
|
{
|
||||||
// params->h = new_h;
|
// params->h = new_h;
|
||||||
// EXCEEDS BOUNDS in H
|
// EXCEEDS BOUNDS in H
|
||||||
new_h = FROM_INT(params->h);
|
new_h = params->eval.h;
|
||||||
new_w = SCALE(amin, params->h);
|
new_w = MUL(amin, params->eval.h);
|
||||||
if (new_w > FROM_INT(params->w))
|
if (new_w > params->eval.w)
|
||||||
{
|
{
|
||||||
new_h = DIV(FROM_INT(params->w), amin);
|
new_h = DIV(params->eval.w, amin);
|
||||||
new_w = FROM_INT(params->w);
|
new_w = params->eval.w;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
params->w = TO_INT(new_w);
|
params->eval.w = new_w;
|
||||||
params->h = TO_INT(new_h);
|
params->eval.h = new_h;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1093,34 +1093,34 @@ _edje_part_recalc_single_aspect(Edje *ed,
|
||||||
{
|
{
|
||||||
if ((amin > 0.0) && (amax > ZERO) && (apref == EDJE_ASPECT_PREFER_NONE))
|
if ((amin > 0.0) && (amax > ZERO) && (apref == EDJE_ASPECT_PREFER_NONE))
|
||||||
{
|
{
|
||||||
params->w = TO_INT(new_w);
|
params->eval.w = new_w;
|
||||||
params->h = TO_INT(new_h);
|
params->eval.h = new_h;
|
||||||
}
|
}
|
||||||
else if ((FROM_INT(params->h) - new_h) > (FROM_INT(params->w) - new_w))
|
else if (SUB(params->eval.h, new_h) > SUB(params->eval.w, new_w))
|
||||||
{
|
{
|
||||||
if (params->h < TO_INT(new_h))
|
if (params->eval.h < new_h)
|
||||||
params->h = TO_INT(new_h);
|
params->eval.h = new_h;
|
||||||
else if (params->h > TO_INT(new_h))
|
else if (params->eval.h > new_h)
|
||||||
params->h = TO_INT(new_h);
|
params->eval.h = new_h;
|
||||||
if (apref == EDJE_ASPECT_PREFER_VERTICAL)
|
if (apref == EDJE_ASPECT_PREFER_VERTICAL)
|
||||||
params->w = TO_INT(new_w);
|
params->eval.w = new_w;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (params->w < TO_INT(new_w))
|
if (params->eval.w < new_w)
|
||||||
params->w = TO_INT(new_w);
|
params->eval.w = new_w;
|
||||||
else if (params->w > TO_INT(new_w))
|
else if (params->eval.w > new_w)
|
||||||
params->w = TO_INT(new_w);
|
params->eval.w = new_w;
|
||||||
if (apref == EDJE_ASPECT_PREFER_HORIZONTAL)
|
if (apref == EDJE_ASPECT_PREFER_HORIZONTAL)
|
||||||
params->h = TO_INT(new_h);
|
params->eval.h = new_h;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
params->x = TO_INT(ADD(want_x,
|
params->eval.x = ADD(want_x,
|
||||||
MUL(SUB(want_w, FROM_INT(params->w)),
|
MUL(SUB(want_w, params->eval.w),
|
||||||
desc->align.x)));
|
desc->align.x));
|
||||||
params->y = TO_INT(ADD(want_y,
|
params->eval.y = ADD(want_y,
|
||||||
MUL(SUB(want_h, FROM_INT(params->h)),
|
MUL(SUB(want_h, params->eval.h),
|
||||||
desc->align.y)));
|
desc->align.y));
|
||||||
return apref;
|
return apref;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1133,12 +1133,12 @@ _edje_part_recalc_single_step(Edje_Part_Description_Common *desc,
|
||||||
int steps;
|
int steps;
|
||||||
int new_w;
|
int new_w;
|
||||||
|
|
||||||
steps = params->w / desc->step.x;
|
steps = TO_INT(params->eval.w) / desc->step.x;
|
||||||
new_w = desc->step.x * steps;
|
new_w = desc->step.x * steps;
|
||||||
if (params->w > new_w)
|
if (params->eval.w > FROM_INT(new_w))
|
||||||
{
|
{
|
||||||
params->x += TO_INT(SCALE(desc->align.x, (params->w - new_w)));
|
params->eval.x = ADD(params->eval.x, SCALE(desc->align.x, SUB(params->eval.w, FROM_INT(new_w))));
|
||||||
params->w = new_w;
|
params->eval.w = FROM_INT(new_w);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1147,12 +1147,12 @@ _edje_part_recalc_single_step(Edje_Part_Description_Common *desc,
|
||||||
int steps;
|
int steps;
|
||||||
int new_h;
|
int new_h;
|
||||||
|
|
||||||
steps = params->h / desc->step.y;
|
steps = TO_INT(params->eval.h) / desc->step.y;
|
||||||
new_h = desc->step.y * steps;
|
new_h = desc->step.y * steps;
|
||||||
if (params->h > new_h)
|
if (params->eval.h > FROM_INT(new_h))
|
||||||
{
|
{
|
||||||
params->y += TO_INT(SCALE(desc->align.y, (params->h - new_h)));
|
params->eval.y = ADD(params->eval.y, SCALE(desc->align.y, SUB(params->eval.h, FROM_INT(new_h))));
|
||||||
params->h = new_h;
|
params->eval.h = FROM_INT(new_h);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1251,7 +1251,8 @@ _edje_part_recalc_single_textblock(FLOAT_T sc,
|
||||||
/* Now make it bigger so calculations will be more accurate
|
/* Now make it bigger so calculations will be more accurate
|
||||||
* and less influenced by hinting... */
|
* and less influenced by hinting... */
|
||||||
{
|
{
|
||||||
orig_s = _edje_part_recalc_single_textblock_scale_range_adjust(chosen_desc, base_s, orig_s * params->w / (double) tw);
|
orig_s = _edje_part_recalc_single_textblock_scale_range_adjust(chosen_desc, base_s,
|
||||||
|
orig_s * TO_INT(params->eval.w) / tw);
|
||||||
eo_do(ep->object,
|
eo_do(ep->object,
|
||||||
evas_obj_scale_set(orig_s),
|
evas_obj_scale_set(orig_s),
|
||||||
evas_obj_textblock_size_native_get(&tw, &th));
|
evas_obj_textblock_size_native_get(&tw, &th));
|
||||||
|
@ -1260,7 +1261,8 @@ _edje_part_recalc_single_textblock(FLOAT_T sc,
|
||||||
{
|
{
|
||||||
if (tw > 0)
|
if (tw > 0)
|
||||||
{
|
{
|
||||||
s = _edje_part_recalc_single_textblock_scale_range_adjust(chosen_desc, base_s, orig_s * params->w / tw);
|
s = _edje_part_recalc_single_textblock_scale_range_adjust(chosen_desc, base_s,
|
||||||
|
orig_s * TO_INT(params->eval.w) / tw);
|
||||||
eo_do(ep->object,
|
eo_do(ep->object,
|
||||||
evas_obj_scale_set(s),
|
evas_obj_scale_set(s),
|
||||||
evas_obj_textblock_size_native_get(NULL, NULL));
|
evas_obj_textblock_size_native_get(NULL, NULL));
|
||||||
|
@ -1270,7 +1272,8 @@ _edje_part_recalc_single_textblock(FLOAT_T sc,
|
||||||
{
|
{
|
||||||
if (th > 0)
|
if (th > 0)
|
||||||
{
|
{
|
||||||
double tmp_s = _edje_part_recalc_single_textblock_scale_range_adjust(chosen_desc, base_s, orig_s * params->h / (double) th);
|
double tmp_s = _edje_part_recalc_single_textblock_scale_range_adjust(chosen_desc, base_s,
|
||||||
|
orig_s * TO_INT(params->eval.h) / th);
|
||||||
/* If we already have X fit, restrict Y to be no bigger
|
/* If we already have X fit, restrict Y to be no bigger
|
||||||
* than what we got with X. */
|
* than what we got with X. */
|
||||||
if (!((chosen_desc->text.fit_x) && (tmp_s > s)))
|
if (!((chosen_desc->text.fit_x) && (tmp_s > s)))
|
||||||
|
@ -1295,8 +1298,8 @@ _edje_part_recalc_single_textblock(FLOAT_T sc,
|
||||||
/* If we are still too big, try reducing the size to
|
/* If we are still too big, try reducing the size to
|
||||||
* 95% each try. */
|
* 95% each try. */
|
||||||
while ((i > 0) &&
|
while ((i > 0) &&
|
||||||
((chosen_desc->text.fit_x && (fw > params->w)) ||
|
((chosen_desc->text.fit_x && (fw > TO_INT(params->eval.w))) ||
|
||||||
(chosen_desc->text.fit_y && (fh > params->h))))
|
(chosen_desc->text.fit_y && (fh > TO_INT(params->eval.h)))))
|
||||||
{
|
{
|
||||||
double tmp_s = _edje_part_recalc_single_textblock_scale_range_adjust(chosen_desc, base_s, s * 0.95);
|
double tmp_s = _edje_part_recalc_single_textblock_scale_range_adjust(chosen_desc, base_s, s * 0.95);
|
||||||
|
|
||||||
|
@ -1340,9 +1343,9 @@ _edje_part_recalc_single_textblock(FLOAT_T sc,
|
||||||
tw = th = 0;
|
tw = th = 0;
|
||||||
if (!chosen_desc->text.min_x)
|
if (!chosen_desc->text.min_x)
|
||||||
{
|
{
|
||||||
eo_do(ep->object,
|
eo_do(ep->object,
|
||||||
evas_obj_size_set(params->w, params->h),
|
evas_obj_size_set(TO_INT(params->eval.w), TO_INT(params->eval.h)),
|
||||||
evas_obj_textblock_size_formatted_get(&tw, &th));
|
evas_obj_textblock_size_formatted_get(&tw, &th));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
evas_object_textblock_size_native_get(ep->object, &tw, &th);
|
evas_object_textblock_size_native_get(ep->object, &tw, &th);
|
||||||
|
@ -1369,7 +1372,7 @@ _edje_part_recalc_single_textblock(FLOAT_T sc,
|
||||||
if (!chosen_desc->text.max_x)
|
if (!chosen_desc->text.max_x)
|
||||||
{
|
{
|
||||||
eo_do(ep->object,
|
eo_do(ep->object,
|
||||||
evas_obj_size_set(params->w, params->h),
|
evas_obj_size_set(TO_INT(params->eval.w), TO_INT(params->eval.h)),
|
||||||
evas_obj_textblock_size_formatted_get(&tw, &th));
|
evas_obj_textblock_size_formatted_get(&tw, &th));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1662,14 +1665,14 @@ _edje_part_recalc_single_text(FLOAT_T sc EINA_UNUSED,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_edje_part_recalc_single_min_length(FLOAT_T align, int *start, int *length, int min)
|
_edje_part_recalc_single_min_length(FLOAT_T align, FLOAT_T *start, FLOAT_T *length, int min)
|
||||||
{
|
{
|
||||||
if (min >= 0)
|
if (min >= 0)
|
||||||
{
|
{
|
||||||
if (*length < min)
|
if (*length < FROM_INT(min))
|
||||||
{
|
{
|
||||||
*start += TO_INT(SCALE(align, (*length - min)));
|
*start = ADD(*start, (SCALE(align, (*length - min))));
|
||||||
*length = min;
|
*length = FROM_INT(min);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1680,62 +1683,62 @@ _edje_part_recalc_single_min(Edje_Part_Description_Common *desc,
|
||||||
int minw, int minh,
|
int minw, int minh,
|
||||||
Edje_Internal_Aspect aspect)
|
Edje_Internal_Aspect aspect)
|
||||||
{
|
{
|
||||||
int tmp;
|
FLOAT_T tmp;
|
||||||
int w;
|
FLOAT_T w;
|
||||||
int h;
|
FLOAT_T h;
|
||||||
|
|
||||||
w = params->w ? params->w : 99999;
|
w = params->eval.w ? params->eval.w : FROM_INT(99999);
|
||||||
h = params->h ? params->h : 99999;
|
h = params->eval.h ? params->eval.h : 99999;
|
||||||
|
|
||||||
switch (aspect)
|
switch (aspect)
|
||||||
{
|
{
|
||||||
case EDJE_ASPECT_PREFER_NONE:
|
case EDJE_ASPECT_PREFER_NONE:
|
||||||
break;
|
break;
|
||||||
case EDJE_ASPECT_PREFER_VERTICAL:
|
case EDJE_ASPECT_PREFER_VERTICAL:
|
||||||
tmp = minh * params->w / h;
|
tmp = DIV(SCALE(params->eval.w, minh), h);
|
||||||
if (tmp >= minw)
|
if (tmp >= FROM_INT(minw))
|
||||||
{
|
{
|
||||||
minw = tmp;
|
minw = TO_INT(tmp);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case EDJE_ASPECT_PREFER_HORIZONTAL:
|
case EDJE_ASPECT_PREFER_HORIZONTAL:
|
||||||
tmp = minw * params->h / w;
|
tmp = DIV(SCALE(params->eval.h, minw), w);
|
||||||
if (tmp >= minh)
|
if (tmp >= FROM_INT(minh))
|
||||||
{
|
{
|
||||||
minh = tmp;
|
minh = TO_INT(tmp);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case EDJE_ASPECT_PREFER_SOURCE:
|
case EDJE_ASPECT_PREFER_SOURCE:
|
||||||
case EDJE_ASPECT_PREFER_BOTH:
|
case EDJE_ASPECT_PREFER_BOTH:
|
||||||
tmp = minh * params->w / h;
|
tmp = DIV(SCALE(params->eval.h, minh), h);
|
||||||
if (tmp >= minw)
|
if (tmp >= FROM_INT(minw))
|
||||||
{
|
{
|
||||||
minw = tmp;
|
minw = TO_INT(tmp);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
tmp = minw * params->h / w;
|
tmp = DIV(SCALE(params->eval.h, minw), w);
|
||||||
if (tmp >= minh)
|
if (tmp >= FROM_INT(minh))
|
||||||
{
|
{
|
||||||
minh = tmp;
|
minh = TO_INT(tmp);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
_edje_part_recalc_single_min_length(desc->align.x, ¶ms->x, ¶ms->w, minw);
|
_edje_part_recalc_single_min_length(desc->align.x, ¶ms->eval.x, ¶ms->eval.w, minw);
|
||||||
_edje_part_recalc_single_min_length(desc->align.y, ¶ms->y, ¶ms->h, minh);
|
_edje_part_recalc_single_min_length(desc->align.y, ¶ms->eval.y, ¶ms->eval.h, minh);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_edje_part_recalc_single_max_length(FLOAT_T align, int *start, int *length, int max)
|
_edje_part_recalc_single_max_length(FLOAT_T align, FLOAT_T *start, FLOAT_T *length, int max)
|
||||||
{
|
{
|
||||||
if (max >= 0)
|
if (max >= 0)
|
||||||
{
|
{
|
||||||
if (*length > max)
|
if (*length > max)
|
||||||
{
|
{
|
||||||
*start += TO_INT(SCALE(align, (*length - max)));
|
*start = ADD(*start, SCALE(align, (*length - max)));
|
||||||
*length = max;
|
*length = max;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1747,52 +1750,52 @@ _edje_part_recalc_single_max(Edje_Part_Description_Common *desc,
|
||||||
int maxw, int maxh,
|
int maxw, int maxh,
|
||||||
Edje_Internal_Aspect aspect)
|
Edje_Internal_Aspect aspect)
|
||||||
{
|
{
|
||||||
int tmp;
|
FLOAT_T tmp;
|
||||||
int w;
|
FLOAT_T w;
|
||||||
int h;
|
FLOAT_T h;
|
||||||
|
|
||||||
w = params->w ? params->w : 99999;
|
w = params->eval.w ? params->eval.w : FROM_INT(99999);
|
||||||
h = params->h ? params->h : 99999;
|
h = params->eval.h ? params->eval.h : FROM_INT(99999);
|
||||||
|
|
||||||
switch (aspect)
|
switch (aspect)
|
||||||
{
|
{
|
||||||
case EDJE_ASPECT_PREFER_NONE:
|
case EDJE_ASPECT_PREFER_NONE:
|
||||||
break;
|
break;
|
||||||
case EDJE_ASPECT_PREFER_VERTICAL:
|
case EDJE_ASPECT_PREFER_VERTICAL:
|
||||||
tmp = maxh * params->w / h;
|
tmp = DIV(SCALE(params->eval.w, maxh), h);
|
||||||
if (tmp <= maxw)
|
if (tmp <= FROM_INT(maxw))
|
||||||
{
|
{
|
||||||
maxw = tmp;
|
maxw = TO_INT(tmp);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case EDJE_ASPECT_PREFER_HORIZONTAL:
|
case EDJE_ASPECT_PREFER_HORIZONTAL:
|
||||||
tmp = maxw * params->h / w;
|
tmp = DIV(SCALE(params->eval.h, maxw), w);
|
||||||
if (tmp <= maxh)
|
if (tmp <= FROM_INT(maxh))
|
||||||
{
|
{
|
||||||
maxh = tmp;
|
maxh = TO_INT(tmp);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case EDJE_ASPECT_PREFER_SOURCE:
|
case EDJE_ASPECT_PREFER_SOURCE:
|
||||||
case EDJE_ASPECT_PREFER_BOTH:
|
case EDJE_ASPECT_PREFER_BOTH:
|
||||||
tmp = maxh * params->w / h;
|
tmp = DIV(SCALE(params->eval.w, maxh), h);
|
||||||
if (tmp <= maxw)
|
if (tmp <= FROM_INT(maxw))
|
||||||
{
|
{
|
||||||
maxw = tmp;
|
maxw = TO_INT(tmp);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
tmp = maxw * params->h / w;
|
tmp = DIV(SCALE(params->eval.h, maxw), w);
|
||||||
if (tmp <= maxh)
|
if (tmp <= FROM_INT(maxh))
|
||||||
{
|
{
|
||||||
maxh = tmp;
|
maxh = TO_INT(tmp);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
_edje_part_recalc_single_max_length(desc->align.x, ¶ms->x, ¶ms->w, maxw);
|
_edje_part_recalc_single_max_length(desc->align.x, ¶ms->eval.x, ¶ms->eval.w, maxw);
|
||||||
_edje_part_recalc_single_max_length(desc->align.y, ¶ms->y, ¶ms->h, maxh);
|
_edje_part_recalc_single_max_length(desc->align.y, ¶ms->eval.y, ¶ms->eval.h, maxh);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1812,78 +1815,78 @@ _edje_part_recalc_single_drag(Edje_Real_Part *ep,
|
||||||
/* complex dragable params */
|
/* complex dragable params */
|
||||||
v = SCALE(ep->drag->size.x, confine_to->w);
|
v = SCALE(ep->drag->size.x, confine_to->w);
|
||||||
|
|
||||||
if ((minw > 0) && (TO_INT(v) < minw)) params->w = minw;
|
if ((minw > 0) && (TO_INT(v) < minw)) params->eval.w = FROM_INT(minw);
|
||||||
else if ((maxw >= 0) && (TO_INT(v) > maxw)) params->w = maxw;
|
else if ((maxw >= 0) && (TO_INT(v) > maxw)) params->eval.w = FROM_INT(maxw);
|
||||||
else params->w = TO_INT(v);
|
else params->eval.w = v;
|
||||||
|
|
||||||
offset = TO_INT(SCALE(ep->drag->x, (confine_to->w - params->w)))
|
offset = TO_INT(SCALE(ep->drag->x, (confine_to->w - TO_INT(params->eval.w))))
|
||||||
+ ep->drag->tmp.x;
|
+ ep->drag->tmp.x;
|
||||||
if (ep->part->dragable.step_x > 0)
|
if (ep->part->dragable.step_x > 0)
|
||||||
{
|
{
|
||||||
params->x = confine_to->x +
|
params->eval.x = FROM_INT(confine_to->x +
|
||||||
((offset / ep->part->dragable.step_x) * ep->part->dragable.step_x);
|
((offset / ep->part->dragable.step_x) * ep->part->dragable.step_x));
|
||||||
}
|
}
|
||||||
else if (ep->part->dragable.count_x > 0)
|
else if (ep->part->dragable.count_x > 0)
|
||||||
{
|
{
|
||||||
step = (confine_to->w - params->w) / ep->part->dragable.count_x;
|
step = (confine_to->w - TO_INT(params->eval.w)) / ep->part->dragable.count_x;
|
||||||
if (step < 1) step = 1;
|
if (step < 1) step = 1;
|
||||||
params->x = confine_to->x +
|
params->eval.x = FROM_INT(confine_to->x +
|
||||||
((offset / step) * step);
|
((offset / step) * step));
|
||||||
}
|
}
|
||||||
params->req_drag.x = params->x;
|
params->req_drag.x = TO_INT(params->eval.x);
|
||||||
params->req_drag.w = params->w;
|
params->req_drag.w = TO_INT(params->eval.w);
|
||||||
|
|
||||||
v = SCALE(ep->drag->size.y, confine_to->h);
|
v = SCALE(ep->drag->size.y, confine_to->h);
|
||||||
|
|
||||||
if ((minh > 0) && (TO_INT(v) < minh)) params->h = minh;
|
if ((minh > 0) && (TO_INT(v) < minh)) params->eval.h = FROM_INT(minh);
|
||||||
else if ((maxh >= 0) && (TO_INT(v) > maxh)) params->h = maxh;
|
else if ((maxh >= 0) && (TO_INT(v) > maxh)) params->eval.h = FROM_INT(maxh);
|
||||||
else params->h = TO_INT(v);
|
else params->eval.h = v;
|
||||||
|
|
||||||
offset = TO_INT(SCALE(ep->drag->y, (confine_to->h - params->h)))
|
offset = TO_INT(SCALE(ep->drag->y, (confine_to->h - TO_INT(params->eval.h))))
|
||||||
+ ep->drag->tmp.y;
|
+ ep->drag->tmp.y;
|
||||||
if (ep->part->dragable.step_y > 0)
|
if (ep->part->dragable.step_y > 0)
|
||||||
{
|
{
|
||||||
params->y = confine_to->y +
|
params->eval.y = FROM_INT(confine_to->y +
|
||||||
((offset / ep->part->dragable.step_y) * ep->part->dragable.step_y);
|
((offset / ep->part->dragable.step_y) * ep->part->dragable.step_y));
|
||||||
}
|
}
|
||||||
else if (ep->part->dragable.count_y > 0)
|
else if (ep->part->dragable.count_y > 0)
|
||||||
{
|
{
|
||||||
step = (confine_to->h - params->h) / ep->part->dragable.count_y;
|
step = (confine_to->h - TO_INT(params->eval.h)) / ep->part->dragable.count_y;
|
||||||
if (step < 1) step = 1;
|
if (step < 1) step = 1;
|
||||||
params->y = confine_to->y +
|
params->eval.y = FROM_INT(confine_to->y +
|
||||||
((offset / step) * step);
|
((offset / step) * step));
|
||||||
}
|
}
|
||||||
params->req_drag.y = params->y;
|
params->req_drag.y = TO_INT(params->eval.y);
|
||||||
params->req_drag.h = params->h;
|
params->req_drag.h = TO_INT(params->eval.h);
|
||||||
|
|
||||||
/* limit to confine */
|
/* limit to confine */
|
||||||
if (params->x < confine_to->x)
|
if (params->eval.x < FROM_INT(confine_to->x))
|
||||||
{
|
{
|
||||||
params->x = confine_to->x;
|
params->eval.x = FROM_INT(confine_to->x);
|
||||||
}
|
}
|
||||||
if ((params->x + params->w) > (confine_to->x + confine_to->w))
|
if ((ADD(params->eval.x, params->eval.w)) > FROM_INT(confine_to->x + confine_to->w))
|
||||||
{
|
{
|
||||||
params->x = confine_to->x + confine_to->w - params->w;
|
params->eval.x = SUB(FROM_INT(confine_to->x + confine_to->w), params->eval.w);
|
||||||
}
|
}
|
||||||
if (params->y < confine_to->y)
|
if (params->eval.y < FROM_INT(confine_to->y))
|
||||||
{
|
{
|
||||||
params->y = confine_to->y;
|
params->eval.y = FROM_INT(confine_to->y);
|
||||||
}
|
}
|
||||||
if ((params->y + params->h) > (confine_to->y + confine_to->h))
|
if ((ADD(params->eval.y, params->eval.h)) > FROM_INT(confine_to->y + confine_to->h))
|
||||||
{
|
{
|
||||||
params->y = confine_to->y + confine_to->h - params->h;
|
params->eval.y = SUB(FROM_INT(confine_to->y + confine_to->h), params->eval.h);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* simple dragable params */
|
/* simple dragable params */
|
||||||
params->x += TO_INT(ep->drag->x) + ep->drag->tmp.x;
|
params->eval.x = ADD(ADD(params->eval.x, ep->drag->x), FROM_INT(ep->drag->tmp.x));
|
||||||
params->req_drag.x = params->x;
|
params->req_drag.x = FROM_INT(params->eval.x);
|
||||||
params->req_drag.w = params->w;
|
params->req_drag.w = FROM_INT(params->eval.w);
|
||||||
|
|
||||||
params->y += TO_INT(ep->drag->y) + ep->drag->tmp.y;
|
params->eval.y = ADD(ADD(params->eval.y, ep->drag->y), FROM_INT(ep->drag->tmp.y));
|
||||||
params->req_drag.y = params->y;
|
params->req_drag.y = FROM_INT(params->eval.y);
|
||||||
params->req_drag.h = params->h;
|
params->req_drag.h = FROM_INT(params->eval.h);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1900,7 +1903,7 @@ _edje_part_recalc_single_fill(Edje_Real_Part *ep,
|
||||||
if (fill->type == EDJE_FILL_TYPE_TILE)
|
if (fill->type == EDJE_FILL_TYPE_TILE)
|
||||||
evas_object_image_size_get(ep->object, &fw, NULL);
|
evas_object_image_size_get(ep->object, &fw, NULL);
|
||||||
else
|
else
|
||||||
fw = params->w;
|
fw = TO_INT(params->eval.w);
|
||||||
|
|
||||||
params->type.common.fill.x = fill->pos_abs_x
|
params->type.common.fill.x = fill->pos_abs_x
|
||||||
+ TO_INT(SCALE(fill->pos_rel_x, fw));
|
+ TO_INT(SCALE(fill->pos_rel_x, fw));
|
||||||
|
@ -1910,7 +1913,7 @@ _edje_part_recalc_single_fill(Edje_Real_Part *ep,
|
||||||
if (fill->type == EDJE_FILL_TYPE_TILE)
|
if (fill->type == EDJE_FILL_TYPE_TILE)
|
||||||
evas_object_image_size_get(ep->object, NULL, &fh);
|
evas_object_image_size_get(ep->object, NULL, &fh);
|
||||||
else
|
else
|
||||||
fh = params->h;
|
fh = TO_INT(params->eval.h);
|
||||||
|
|
||||||
params->type.common.fill.y = fill->pos_abs_y
|
params->type.common.fill.y = fill->pos_abs_y
|
||||||
+ TO_INT(SCALE(fill->pos_rel_y, fh));
|
+ TO_INT(SCALE(fill->pos_rel_y, fh));
|
||||||
|
@ -2085,8 +2088,8 @@ _edje_part_recalc_single_map(Edje *ed,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
params_write->center.x = ed->x + params->x + (params->w / 2);
|
params_write->center.x = ed->x + TO_INT(ADD(params->eval.x, DIV2(params->eval.w)));
|
||||||
params_write->center.y = ed->y + params->y + (params->h / 2);
|
params_write->center.y = ed->y + TO_INT(ADD(params->eval.y, DIV2(params->eval.h)));
|
||||||
}
|
}
|
||||||
params_write->center.z = 0;
|
params_write->center.z = 0;
|
||||||
|
|
||||||
|
@ -2272,10 +2275,10 @@ _edje_part_recalc_single(Edje *ed,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* remember what our size is BEFORE we go limit it */
|
/* remember what our size is BEFORE we go limit it */
|
||||||
params->req.x = params->x;
|
params->req.x = TO_INT(params->eval.x);
|
||||||
params->req.y = params->y;
|
params->req.y = TO_INT(params->eval.y);
|
||||||
params->req.w = params->w;
|
params->req.w = TO_INT(params->eval.w);
|
||||||
params->req.h = params->h;
|
params->req.h = TO_INT(params->eval.h);
|
||||||
|
|
||||||
/* adjust for min size */
|
/* adjust for min size */
|
||||||
_edje_part_recalc_single_min(desc, params, minw, minh, apref);
|
_edje_part_recalc_single_min(desc, params, minw, minh, apref);
|
||||||
|
@ -2416,6 +2419,25 @@ _edje_part_recalc_single(Edje *ed,
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
_edje_part_recalc_single_map(ed, ep, center, light, persp, desc, chosen_desc, params);
|
_edje_part_recalc_single_map(ed, ep, center, light, persp, desc, chosen_desc, params);
|
||||||
|
|
||||||
|
params->final.x = TO_INT(params->eval.x);
|
||||||
|
params->final.y = TO_INT(params->eval.y);
|
||||||
|
params->final.w = TO_INT(params->eval.w);
|
||||||
|
params->final.h = TO_INT(params->eval.h);
|
||||||
|
|
||||||
|
// Adjust rounding to not loose one pixels compared to float information only when rendering to
|
||||||
|
// avoid infinite adjustement when doing min restricted calc
|
||||||
|
if (!ed->calc_only)
|
||||||
|
{
|
||||||
|
if (params->final.x + params->final.w < TO_INT(ADD(params->eval.x, params->eval.w)))
|
||||||
|
params->final.w += 1;
|
||||||
|
else if (params->final.x + params->final.w > TO_INT(ADD(params->eval.x, params->eval.w)))
|
||||||
|
params->final.w -= 1;
|
||||||
|
if (params->final.y + params->final.h < TO_INT(ADD(params->eval.y, params->eval.y)))
|
||||||
|
params->final.h += 1;
|
||||||
|
else if (params->final.y + params->final.h > TO_INT(ADD(params->eval.y, params->eval.h)))
|
||||||
|
params->final.h -= 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -2592,13 +2614,13 @@ _edje_physics_body_props_update(Edje *ed, Edje_Real_Part *ep, Edje_Calc_Params *
|
||||||
if (pos_update)
|
if (pos_update)
|
||||||
{
|
{
|
||||||
ephysics_body_move(ep->body,
|
ephysics_body_move(ep->body,
|
||||||
ed->x + pf->x,
|
ed->x + pf->final.x,
|
||||||
ed->y + pf->y,
|
ed->y + pf->final.y,
|
||||||
pf->physics->z);
|
pf->physics->z);
|
||||||
ep->x = pf->x;
|
ep->x = pf->final.x;
|
||||||
ep->y = pf->y;
|
ep->y = pf->final.y;
|
||||||
ep->w = pf->w;
|
ep->w = pf->final.w;
|
||||||
ep->h = pf->h;
|
ep->h = pf->final.h;
|
||||||
}
|
}
|
||||||
|
|
||||||
ephysics_body_geometry_get(ep->body, &x, &y, &z, &w, &h, &d);
|
ephysics_body_geometry_get(ep->body, &x, &y, &z, &w, &h, &d);
|
||||||
|
@ -3306,10 +3328,15 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta
|
||||||
|
|
||||||
/* FIXME: do x and y separately base on flag */
|
/* FIXME: do x and y separately base on flag */
|
||||||
|
|
||||||
p3->x = INTP(p1->x, p2->x, pos);
|
p3->final.x = INTP(p1->final.x, p2->final.x, pos);
|
||||||
p3->y = INTP(p1->y, p2->y, pos);
|
p3->final.y = INTP(p1->final.y, p2->final.y, pos);
|
||||||
p3->w = INTP(p1->w, p2->w, pos);
|
p3->final.w = INTP(p1->final.w, p2->final.w, pos);
|
||||||
p3->h = INTP(p1->h, p2->h, pos);
|
p3->final.h = INTP(p1->final.h, p2->final.h, pos);
|
||||||
|
|
||||||
|
p3->eval.x = FFP(p1->eval.x, p2->eval.x, pos);
|
||||||
|
p3->eval.y = FFP(p1->eval.y, p2->eval.y, pos);
|
||||||
|
p3->eval.w = FFP(p1->eval.w, p2->eval.w, pos);
|
||||||
|
p3->eval.h = FFP(p1->eval.h, p2->eval.h, pos);
|
||||||
|
|
||||||
p3->req.x = INTP(p1->req.x, p2->req.x, pos);
|
p3->req.x = INTP(p1->req.x, p2->req.x, pos);
|
||||||
p3->req.y = INTP(p1->req.y, p2->req.y, pos);
|
p3->req.y = INTP(p1->req.y, p2->req.y, pos);
|
||||||
|
@ -3637,7 +3664,7 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta
|
||||||
/* visibility and color have no meaning on SWALLOW and GROUP part. */
|
/* visibility and color have no meaning on SWALLOW and GROUP part. */
|
||||||
#ifdef HAVE_EPHYSICS
|
#ifdef HAVE_EPHYSICS
|
||||||
eo_do(ep->object,
|
eo_do(ep->object,
|
||||||
evas_obj_size_set(pf->w, pf->h));
|
evas_obj_size_set(pf->final.w, pf->final.h));
|
||||||
if ((ep->part->physics_body) && (!ep->body))
|
if ((ep->part->physics_body) && (!ep->body))
|
||||||
{
|
{
|
||||||
if (_edje_physics_world_geometry_check(ed->world))
|
if (_edje_physics_world_geometry_check(ed->world))
|
||||||
|
@ -3655,19 +3682,19 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
eo_do(ep->object,
|
eo_do(ep->object,
|
||||||
evas_obj_position_set(ed->x + pf->x, ed->y + pf->y));
|
evas_obj_position_set(ed->x + pf->final.x, ed->y + pf->final.y));
|
||||||
#else
|
#else
|
||||||
eo_do(ep->object,
|
eo_do(ep->object,
|
||||||
evas_obj_position_set(ed->x + pf->x, ed->y + pf->y),
|
evas_obj_position_set(ed->x + pf->final.x, ed->y + pf->final.y),
|
||||||
evas_obj_size_set(pf->w, pf->h));
|
evas_obj_size_set(pf->final.w, pf->final.h));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (ep->nested_smart)
|
if (ep->nested_smart)
|
||||||
{ /* Move, Resize all nested parts */
|
{ /* Move, Resize all nested parts */
|
||||||
/* Not really needed but will improve the bounding box evaluation done by Evas */
|
/* Not really needed but will improve the bounding box evaluation done by Evas */
|
||||||
eo_do(ep->nested_smart,
|
eo_do(ep->nested_smart,
|
||||||
evas_obj_position_set(ed->x + pf->x, ed->y + pf->y),
|
evas_obj_position_set(ed->x + pf->final.x, ed->y + pf->final.y),
|
||||||
evas_obj_size_set(pf->w, pf->h));
|
evas_obj_size_set(pf->final.w, pf->final.h));
|
||||||
}
|
}
|
||||||
if (ep->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
|
if (ep->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
|
||||||
_edje_entry_real_part_configure(ed, ep);
|
_edje_entry_real_part_configure(ed, ep);
|
||||||
|
@ -3727,8 +3754,8 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta
|
||||||
if (pf->visible)
|
if (pf->visible)
|
||||||
{
|
{
|
||||||
eo_do(ep->typedata.swallow->swallowed_object,
|
eo_do(ep->typedata.swallow->swallowed_object,
|
||||||
evas_obj_position_set(ed->x + pf->x, ed->y + pf->y),
|
evas_obj_position_set(ed->x + pf->final.x, ed->y + pf->final.y),
|
||||||
evas_obj_size_set(pf->w, pf->h),
|
evas_obj_size_set(pf->final.w, pf->final.h),
|
||||||
evas_obj_visibility_set(EINA_TRUE));
|
evas_obj_visibility_set(EINA_TRUE));
|
||||||
}
|
}
|
||||||
else evas_object_hide(ep->typedata.swallow->swallowed_object);
|
else evas_object_hide(ep->typedata.swallow->swallowed_object);
|
||||||
|
@ -3789,10 +3816,10 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta
|
||||||
if (!ep->body)
|
if (!ep->body)
|
||||||
{
|
{
|
||||||
#endif
|
#endif
|
||||||
ep->x = pf->x;
|
ep->x = pf->final.x;
|
||||||
ep->y = pf->y;
|
ep->y = pf->final.y;
|
||||||
ep->w = pf->w;
|
ep->w = pf->final.w;
|
||||||
ep->h = pf->h;
|
ep->h = pf->final.h;
|
||||||
#ifdef HAVE_EPHYSICS
|
#ifdef HAVE_EPHYSICS
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1412,7 +1412,11 @@ struct _Edje_Calc_Params_Physics
|
||||||
|
|
||||||
struct _Edje_Calc_Params
|
struct _Edje_Calc_Params
|
||||||
{
|
{
|
||||||
int x, y, w, h; // 16
|
// int x, y, w, h; // 16
|
||||||
|
struct {
|
||||||
|
FLOAT_T x, y, w, h; // 32
|
||||||
|
} eval;
|
||||||
|
Edje_Rectangle final; // 16
|
||||||
Edje_Rectangle req; // 16
|
Edje_Rectangle req; // 16
|
||||||
Edje_Rectangle req_drag; // 16
|
Edje_Rectangle req_drag; // 16
|
||||||
Edje_Color color; // 4
|
Edje_Color color; // 4
|
||||||
|
|
|
@ -232,8 +232,8 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
|
||||||
int l, r, t, b;
|
int l, r, t, b;
|
||||||
|
|
||||||
evas_object_text_style_pad_get(ep->object, &l, &r, &t, &b);
|
evas_object_text_style_pad_get(ep->object, &l, &r, &t, &b);
|
||||||
sw = params->w;
|
sw = params->final.w;
|
||||||
sh = params->h;
|
sh = params->final.h;
|
||||||
}
|
}
|
||||||
|
|
||||||
size = params->type.text.size;
|
size = params->type.text.size;
|
||||||
|
@ -443,8 +443,8 @@ arrange_text:
|
||||||
}
|
}
|
||||||
|
|
||||||
evas_object_move(ep->object,
|
evas_object_move(ep->object,
|
||||||
ed->x + params->x + ep->typedata.text->offset.x,
|
ed->x + params->final.x + ep->typedata.text->offset.x,
|
||||||
ed->y + params->y + ep->typedata.text->offset.y);
|
ed->y + params->final.y + ep->typedata.text->offset.y);
|
||||||
|
|
||||||
if (params->visible) evas_object_show(ep->object);
|
if (params->visible) evas_object_show(ep->object);
|
||||||
else evas_object_hide(ep->object);
|
else evas_object_hide(ep->object);
|
||||||
|
|
Loading…
Reference in New Issue