fix up aspect calcs for both axes controlling

SVN revision: 24149
This commit is contained in:
Carsten Haitzler 2006-07-23 21:18:28 +00:00
parent 3ea84d923f
commit ace27d530c
1 changed files with 40 additions and 13 deletions

View File

@ -309,7 +309,7 @@ _edje_part_recalc_single(Edje *ed,
{ {
int apref; int apref;
double aspect, amax, amin; double aspect, amax, amin;
double new_w, new_h, want_x, want_y, want_w, want_h; double new_w = 0, new_h = 0, want_x, want_y, want_w, want_h;
want_x = params->x; want_x = params->x;
want_w = new_w = params->w; want_w = new_w = params->w;
@ -317,12 +317,6 @@ _edje_part_recalc_single(Edje *ed,
want_y = params->y; want_y = params->y;
want_h = new_h = params->h; want_h = new_h = params->h;
if ((maxw >= 0) && (new_w > maxw)) new_w = maxw;
if (new_w < minw) new_w = minw;
if ((maxh >= 0) && (new_h > maxh)) new_h = maxh;
if (new_h < minh) new_h = minh;
aspect = (double)params->w / (double)params->h; aspect = (double)params->w / (double)params->h;
apref = desc->aspect.prefer; apref = desc->aspect.prefer;
amax = desc->aspect.max; amax = desc->aspect.max;
@ -400,15 +394,48 @@ _edje_part_recalc_single(Edje *ed,
new_h = (params->w / amin); new_h = (params->w / amin);
} }
} }
if ((maxw >= 0) && (new_w > maxw)) new_w = maxw;
if (new_w < minw) new_w = minw;
if ((maxh >= 0) && (new_h > maxh)) new_h = maxh;
if (new_h < minh) new_h = minh;
/* do real adjustment */ /* do real adjustment */
if (apref == EDJE_ASPECT_PREFER_BOTH) if (apref == EDJE_ASPECT_PREFER_BOTH)
{ {
/* fix h and vary w */ if (amin == 0.0) amin = amax;
if (new_w > params->w) if (amin != 0.0)
params->w = new_w; {
/* fix w and vary h */ /* fix h and vary w */
else if (new_w > params->w)
params->h = new_h; {
// params->w = new_w;
// EXCEEDS BOUNDS in W
new_h = (params->w / amin);
new_w = params->w;
if (new_h > params->h)
{
new_h = params->h;
new_w = (params->h * amin);
}
}
/* fix w and vary h */
else
{
// params->h = new_h;
// EXCEEDS BOUNDS in H
new_h = params->h;
new_w = (params->h * amin);
if (new_w > params->w)
{
new_h = (params->w / amin);
new_w = params->w;
}
}
params->w = new_w;
params->h = new_h;
}
} }
else else
{ {