oops - widht & height 1 grad get div by 0 .. fix fix fix :)

SVN revision: 4635
This commit is contained in:
Carsten Haitzler 2001-04-16 19:10:58 +00:00
parent c2e1328e53
commit 895027d9fe
1 changed files with 9 additions and 5 deletions

View File

@ -148,7 +148,7 @@ __imlib_DrawGradient(ImlibImage *im, int x, int y, int w, int h,
{ {
DATA32 *map, *p, v; DATA32 *map, *p, v;
int *hlut, *vlut, len = 0, xx, yy, xoff = 0, yoff = 0, ww, hh, jump; int *hlut, *vlut, len = 0, xx, yy, xoff = 0, yoff = 0, ww, hh, jump;
int tmp, i; int tmp, i, divw, divh;
DATA8 rr, gg, bb, aa, r, g, b, a, nr, ng, nb, na; DATA8 rr, gg, bb, aa, r, g, b, a, nr, ng, nb, na;
ww = w; ww = w;
@ -201,25 +201,29 @@ __imlib_DrawGradient(ImlibImage *im, int x, int y, int w, int h,
xx = (int)(32 * sin(((angle + 180) * 2 * 3.141592654) / 360)); xx = (int)(32 * sin(((angle + 180) * 2 * 3.141592654) / 360));
yy = -(int)(32 * cos(((angle + 180) * 2 * 3.141592654) / 360)); yy = -(int)(32 * cos(((angle + 180) * 2 * 3.141592654) / 360));
divw = ((ww - 1) << 5);
divh = ((hh - 1) << 5);
if (divw < 1) divw = 1;
if (divh < 1) divh = 1;
if (xx < 0) if (xx < 0)
{ {
for (i = 0; i < ww; i++) for (i = 0; i < ww; i++)
hlut[i] = (-xx * (ww - 1 - i) * len) / ((ww - 1) << 5); hlut[i] = (-xx * (ww - 1 - i) * len) / divw;
} }
else else
{ {
for (i = 0; i < ww; i++) for (i = 0; i < ww; i++)
hlut[i] = (xx * i * len) / ((ww - 1) << 5); hlut[i] = (xx * i * len) / divw;
} }
if (yy < 0) if (yy < 0)
{ {
for (i = 0; i < hh; i++) for (i = 0; i < hh; i++)
vlut[i] = (-yy * (hh - 1 - i) * len) / ((hh - 1) << 5); vlut[i] = (-yy * (hh - 1 - i) * len) / divh;
} }
else else
{ {
for (i = 0; i < hh; i++) for (i = 0; i < hh; i++)
vlut[i] = (yy * i * len) / ((hh - 1) << 5); vlut[i] = (yy * i * len) / divh;
} }
jump = im->w - w; jump = im->w - w;