66 lines
2.0 KiB
Diff
66 lines
2.0 KiB
Diff
|
--- gd-2.0.35/gd.c.pom 2007-06-19 22:25:51.000000000 +0200
|
||
|
+++ gd-2.0.35/gd.c 2007-09-05 11:25:16.000000000 +0200
|
||
|
@@ -3474,6 +3474,8 @@ static void gdImageAALine (gdImagePtr im
|
||
|
/* keep them as 32bits */
|
||
|
long x, y, inc;
|
||
|
long dx, dy,tmp;
|
||
|
+ int w, wid, wstart;
|
||
|
+ int thick = im->thick;
|
||
|
|
||
|
if (!im->trueColor) {
|
||
|
/* TBB: don't crash when the image is of the wrong type */
|
||
|
@@ -3502,6 +3504,25 @@ static void gdImageAALine (gdImagePtr im
|
||
|
gdImageSetAAPixelColor(im, x1, y1, col, 0xFF);
|
||
|
return;
|
||
|
}
|
||
|
+ else {
|
||
|
+ double ag;
|
||
|
+ if (dy < dx)
|
||
|
+ ag = cos (atan2 (dy, dx));
|
||
|
+ else
|
||
|
+ ag = sin (atan2 (dy, dx));
|
||
|
+ if (ag != 0)
|
||
|
+ {
|
||
|
+ wid = thick / ag;
|
||
|
+ }
|
||
|
+ else
|
||
|
+ {
|
||
|
+ wid = 1;
|
||
|
+ }
|
||
|
+ if (wid == 0)
|
||
|
+ {
|
||
|
+ wid = 1;
|
||
|
+ }
|
||
|
+ }
|
||
|
if (abs(dx) > abs(dy)) {
|
||
|
if (dx < 0) {
|
||
|
tmp = x1;
|
||
|
@@ -3518,8 +3539,11 @@ static void gdImageAALine (gdImagePtr im
|
||
|
inc = (dy * 65536) / dx;
|
||
|
/* TBB: set the last pixel for consistency (<=) */
|
||
|
while ((x >> 16) <= x2) {
|
||
|
- gdImageSetAAPixelColor(im, x >> 16, y >> 16, col, (y >> 8) & 0xFF);
|
||
|
- gdImageSetAAPixelColor(im, x >> 16, (y >> 16) + 1,col, (~y >> 8) & 0xFF);
|
||
|
+ wstart = (y >> 16) - wid / 2;
|
||
|
+ for (w = wstart; w < wstart + wid; w++) {
|
||
|
+ gdImageSetAAPixelColor(im, (x >> 16) , w , col , (y >> 8) & 0xFF);
|
||
|
+ gdImageSetAAPixelColor(im, (x >> 16) , w + 1 , col, (~y >> 8) & 0xFF);
|
||
|
+ }
|
||
|
x += (1 << 16);
|
||
|
y += inc;
|
||
|
}
|
||
|
@@ -3539,8 +3563,11 @@ static void gdImageAALine (gdImagePtr im
|
||
|
inc = (dx * 65536) / dy;
|
||
|
/* TBB: set the last pixel for consistency (<=) */
|
||
|
while ((y>>16) <= y2) {
|
||
|
- gdImageSetAAPixelColor(im, x >> 16, y >> 16, col, (x >> 8) & 0xFF);
|
||
|
- gdImageSetAAPixelColor(im, (x >> 16) + 1, (y >> 16),col, (~x >> 8) & 0xFF);
|
||
|
+ wstart = (x >> 16) - wid / 2;
|
||
|
+ for (w = wstart; w < wstart + wid; w++) {
|
||
|
+ gdImageSetAAPixelColor(im, w , y >> 16 , col, (x >> 8) & 0xFF);
|
||
|
+ gdImageSetAAPixelColor(im, w + 1, y >> 16, col, (~x >> 8) & 0xFF);
|
||
|
+ }
|
||
|
x += inc;
|
||
|
y += (1<<16);
|
||
|
}
|