[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2009-07-07 Thread Pierre-Alain Joye
pajoye  Tue Jul  7 10:54:38 2009 UTC

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  - WS
  
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.127&r2=1.128&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.127 php-src/ext/gd/libgd/gd.c:1.128
--- php-src/ext/gd/libgd/gd.c:1.127 Tue Jul  7 10:50:06 2009
+++ php-src/ext/gd/libgd/gd.c   Tue Jul  7 10:54:36 2009
@@ -1195,7 +1195,7 @@
if (as != 0) {
wid = thick / as;
} else {
-   wid = 1;
+   wid = 1;
}
if (wid == 0) {
wid = 1;
@@ -1679,7 +1679,7 @@
 
 
 if ((s % 360)  == (e % 360)) {
-   s = 0; e = 360; 
+   s = 0; e = 360;
} else {
if (s > 360) {
s = s % 360;
@@ -1697,7 +1697,7 @@
e += 360;
}
if (s == e) {
-   s = 0; e = 360; 
+   s = 0; e = 360;
}
}
 
@@ -1896,7 +1896,7 @@
do {
c = gdImageGetPixel(im, ix, iy);
if (c != oc) {
-   goto done;  
+   goto done;
}
gdImageSetPixel(im, ix, iy, nc);
} while(ix++ < (im->sx -1));
@@ -1908,7 +1908,7 @@
}
gdImageSetPixel(im, ix, iy, nc);
} while(ix++ < (im->sx -1));
-   goto done;  
+   goto done;
}
 
stack = (struct seg *)safe_emalloc(sizeof(struct seg), 
((int)(im->sy*im->sx)/4), 1);
@@ -2308,6 +2308,7 @@
tox++;
continue;
}
+
/*
 * If it's the same image, mapping is NOT trivial since 
we
 * merge with greyscale target, but if pct is 100, the 
grey
@@ -2319,9 +2320,9 @@
dc = gdImageGetPixel(dst, tox, toy);
g = (0.29900f * gdImageRed(dst, dc)) + 
(0.58700f * gdImageGreen(dst, dc)) + (0.11400f * gdImageBlue(dst, dc));
 
-ncR = (int)(gdImageRed (src, c) * (pct / 
100.0f) + g * ((100 - pct) / 100.0));
-ncG = (int)(gdImageGreen (src, c) * (pct / 
100.0f) + g * ((100 - pct) / 100.0));
-ncB = (int)(gdImageBlue (src, c) * (pct / 
100.0f) + g * ((100 - pct) / 100.0));
+   ncR = (int)(gdImageRed (src, c) * (pct / 
100.0f) + g * ((100 - pct) / 100.0));
+   ncG = (int)(gdImageGreen (src, c) * (pct / 
100.0f) + g * ((100 - pct) / 100.0));
+   ncB = (int)(gdImageBlue (src, c) * (pct / 
100.0f) + g * ((100 - pct) / 100.0));
 
/* First look for an exact match */
nc = gdImageColorExact(dst, ncR, ncG, ncB);



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2009-07-07 Thread Pierre-Alain Joye
pajoye  Tue Jul  7 10:50:10 2009 UTC

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  - MF53: #45905, imagefilledrectangle() clipping error
  
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.126&r2=1.127&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.126 php-src/ext/gd/libgd/gd.c:1.127
--- php-src/ext/gd/libgd/gd.c:1.126 Wed May 27 07:16:55 2009
+++ php-src/ext/gd/libgd/gd.c   Tue Jul  7 10:50:06 2009
@@ -2111,21 +2111,10 @@
 {
int x, y;
 
-   /* Nick Atty: limit the points at the edge.  Note that this also
-* nicely kills any plotting for rectangles completely outside the
-* window as it makes the tests in the for loops fail
-*/
-   if (x1 < 0) {
-   x1 = 0;
-   }
-   if (x1 > gdImageSX(im)) {
-   x1 = gdImageSX(im);
-   }
-   if(y1 < 0) {
-   y1 = 0;
-   }
-   if (y1 > gdImageSY(im)) {
-   y1 = gdImageSY(im);
+
+   if (x1 == x2 && y1 == y2) {
+   gdImageSetPixel(im, x1, y1, color);
+   return;
}
if (x1 > x2) {
x = x1;
@@ -2138,6 +2127,22 @@
y2 = y;
}
 
+   if (x1 < 0) {
+   x1 = 0;
+   }
+
+   if (x2 >= gdImageSX(im)) {
+   x2 = gdImageSX(im) - 1;
+   }
+
+   if (y1 < 0) {
+   y1 = 0;
+   }
+
+   if (y2 >= gdImageSY(im)) {
+   y2 = gdImageSY(im) - 1;
+   }
+
for (y = y1; (y <= y2); y++) {
for (x = x1; (x <= x2); x++) {
gdImageSetPixel (im, x, y, color);



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2009-05-26 Thread Pierre-Alain Joye
pajoye  Tue May 26 19:56:17 2009 UTC

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
   - silent warnings
  
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.124&r2=1.125&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.124 php-src/ext/gd/libgd/gd.c:1.125
--- php-src/ext/gd/libgd/gd.c:1.124 Tue May 26 19:45:38 2009
+++ php-src/ext/gd/libgd/gd.c   Tue May 26 19:56:17 2009
@@ -26,11 +26,15 @@
 #endif
 #if HAVE_FABSF == 0
 /* float fabsf(float x); */
-# define fabsf(x) ((float)(fabs(x)))
+# ifndef fabsf
+#  define fabsf(x) ((float)(fabs(x)))
+# endif
 #endif
 #if HAVE_FLOORF == 0
+# ifndef floorf
 /* float floorf(float x);*/
-#define floorf(x) ((float)(floor(x)))
+#  define floorf(x) ((float)(floor(x)))
+# endif
 #endif
 
 #ifdef _OSD_POSIX  /* BS2000 uses the EBCDIC char set instead of 
ASCII */



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2009-05-26 Thread Pierre-Alain Joye
pajoye  Tue May 26 19:45:38 2009 UTC

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  - remove filters function in the main file (see gd_filter.c)
  http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.123&r2=1.124&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.123 php-src/ext/gd/libgd/gd.c:1.124
--- php-src/ext/gd/libgd/gd.c:1.123 Tue May 26 19:34:18 2009
+++ php-src/ext/gd/libgd/gd.c   Tue May 26 19:45:38 2009
@@ -3532,460 +3532,3 @@
*x2P = im->cx2;
*y2P = im->cy2;
 }
-
-
-/* Filters function added on 2003/12
- * by Pierre-Alain Joye (paj...@pearfr.org)
- **/
-/* Begin filters function */
-#ifndef HAVE_GET_TRUE_COLOR
-#define 
GET_PIXEL_FUNCTION(src)(src->trueColor?gdImageGetTrueColorPixel:gdImageGetPixel)
-#endif
-
-/* invert src image */
-int gdImageNegate(gdImagePtr src)
-{
-   int x, y;
-   int r,g,b,a;
-   int new_pxl, pxl;
-   typedef int (*FuncPtr)(gdImagePtr, int, int);
-   FuncPtr f;
-
-   if (src==NULL) {
-   return 0;
-   }
-
-   f = GET_PIXEL_FUNCTION(src);
-
-   for (y=0; ysy; ++y) {
-   for (x=0; xsx; ++x) {
-   pxl = f (src, x, y);
-   r = gdImageRed(src, pxl);
-   g = gdImageGreen(src, pxl);
-   b = gdImageBlue(src, pxl);
-   a = gdImageAlpha(src, pxl);
-
-   new_pxl = gdImageColorAllocateAlpha(src, 255-r, 255-g, 
255-b, a);
-   if (new_pxl == -1) {
-   new_pxl = gdImageColorClosestAlpha(src, 255-r, 
255-g, 255-b, a);
-   }
-   gdImageSetPixel (src, x, y, new_pxl);
-   }
-   }
-   return 1;
-}
-
-/* Convert the image src to a grayscale image */
-int gdImageGrayScale(gdImagePtr src)
-{
-   int x, y;
-   int r,g,b,a;
-   int new_pxl, pxl;
-   typedef int (*FuncPtr)(gdImagePtr, int, int);
-   FuncPtr f;
-   f = GET_PIXEL_FUNCTION(src);
-
-   if (src==NULL) {
-   return 0;
-   }
-
-   for (y=0; ysy; ++y) {
-   for (x=0; xsx; ++x) {
-   pxl = f (src, x, y);
-   r = gdImageRed(src, pxl);
-   g = gdImageGreen(src, pxl);
-   b = gdImageBlue(src, pxl);
-   a = gdImageAlpha(src, pxl);
-   r = g = b = (int) (.299 * r + .587 * g + .114 * b);
-
-   new_pxl = gdImageColorAllocateAlpha(src, r, g, b, a);
-   if (new_pxl == -1) {
-   new_pxl = gdImageColorClosestAlpha(src, r, g, 
b, a);
-   }
-   gdImageSetPixel (src, x, y, new_pxl);
-   }
-   }
-   return 1;
-}
-
-/* Set the brightness level  for the image src */
-int gdImageBrightness(gdImagePtr src, int brightness)
-{
-   int x, y;
-   int r,g,b,a;
-   int new_pxl, pxl;
-   typedef int (*FuncPtr)(gdImagePtr, int, int);
-   FuncPtr f;
-   f = GET_PIXEL_FUNCTION(src);
-
-   if (src==NULL || (brightness < -255 || brightness>255)) {
-   return 0;
-   }
-
-   if (brightness==0) {
-   return 1;
-   }
-
-   for (y=0; ysy; ++y) {
-   for (x=0; xsx; ++x) {
-   pxl = f (src, x, y);
-
-   r = gdImageRed(src, pxl);
-   g = gdImageGreen(src, pxl);
-   b = gdImageBlue(src, pxl);
-   a = gdImageAlpha(src, pxl);
-
-   r = r + brightness;
-   g = g + brightness;
-   b = b + brightness;
-
-   r = (r > 255)? 255 : ((r < 0)? 0:r);
-   g = (g > 255)? 255 : ((g < 0)? 0:g);
-   b = (b > 255)? 255 : ((b < 0)? 0:b);
-
-   new_pxl = gdImageColorAllocateAlpha(src, (int)r, 
(int)g, (int)b, a);
-   if (new_pxl == -1) {
-   new_pxl = gdImageColorClosestAlpha(src, (int)r, 
(int)g, (int)b, a);
-   }
-   gdImageSetPixel (src, x, y, new_pxl);
-   }
-   }
-   return 1;
-}
-
-
-int gdImageContrast(gdImagePtr src, double contrast)
-{
-   int x, y;
-   int r,g,b,a;
-   double rf,gf,bf;
-   int new_pxl, pxl;
-   typedef int (*FuncPtr)(gdImagePtr, int, int);
-
-   FuncPtr f;
-   f = GET_PIXEL_FUNCTION(src);
-
-   if (src==NULL) {
-   return 0;
-   }
-
-   contrast = (double)(100.0-contrast)/100.0;
-   contrast = contrast*contrast;
-
-   for (y=0; ysy; ++y) {
-   for (x=0; xsx; ++x) {
-   pxl = f(src, x, y);
-
-   r = gdImageRed(src, pxl);
-   g = gdImageGre

[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2009-04-24 Thread Kalle Sommer Nielsen
kalle   Sat Apr 25 06:20:26 2009 UTC

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  Use correct data types here, and gdImageSaveAlpha for the alpha flag
  
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.121&r2=1.122&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.121 php-src/ext/gd/libgd/gd.c:1.122
--- php-src/ext/gd/libgd/gd.c:1.121 Thu Apr 23 16:25:17 2009
+++ php-src/ext/gd/libgd/gd.c   Sat Apr 25 06:20:26 2009
@@ -3863,7 +3863,7 @@
int x, y, i, j, new_a;
float   new_r, new_g, new_b;
int new_pxl, pxl=0;
-   gdImagePtr  srcback, srctrans;
+   gdImagePtr  srcback;
typedef int (*FuncPtr)(gdImagePtr, int, int);
FuncPtr f;
 
@@ -3876,9 +3876,10 @@
if (srcback==NULL) {
return 0;
}
-   srcback->saveAlphaFlag = 1;
-   srctrans = gdImageColorAllocateAlpha(srcback, 0, 0, 0, 127);
-   gdImageFill(srcback, 0, 0, srctrans);
+
+   gdImageSaveAlpha(srcback, 1);
+   new_pxl = gdImageColorAllocateAlpha(srcback, 0, 0, 0, 127);
+   gdImageFill(srcback, 0, 0, new_pxl);
 
gdImageCopy(srcback, src,0,0,0,0,src->sx,src->sy);
 



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2009-04-23 Thread Takeshi Abe
tabeThu Apr 23 16:25:17 2009 UTC

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  check non-null before any use.
  
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.120&r2=1.121&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.120 php-src/ext/gd/libgd/gd.c:1.121
--- php-src/ext/gd/libgd/gd.c:1.120 Sun Apr 12 14:45:05 2009
+++ php-src/ext/gd/libgd/gd.c   Thu Apr 23 16:25:17 2009
@@ -3873,16 +3873,15 @@
 
/* We need the orinal image with each safe neoghb. pixel */
srcback = gdImageCreateTrueColor (src->sx, src->sy);
+   if (srcback==NULL) {
+   return 0;
+   }
srcback->saveAlphaFlag = 1;
srctrans = gdImageColorAllocateAlpha(srcback, 0, 0, 0, 127);
gdImageFill(srcback, 0, 0, srctrans);
 
gdImageCopy(srcback, src,0,0,0,0,src->sx,src->sy);
 
-   if (srcback==NULL) {
-   return 0;
-   }
-
f = GET_PIXEL_FUNCTION(src);
 
for ( y=0; ysy; y++) {
@@ -3939,11 +3938,10 @@
 
/* We need the orinal image with each safe neoghb. pixel */
srcback = gdImageCreateTrueColor (src->sx, src->sy);
-   gdImageCopy(srcback, src,0,0,0,0,src->sx,src->sy);
-
if (srcback==NULL) {
return 0;
}
+   gdImageCopy(srcback, src,0,0,0,0,src->sx,src->sy);
 
f = GET_PIXEL_FUNCTION(src);
 



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2009-04-12 Thread Ilia Alshanetsky
iliaa   Sun Apr 12 14:45:05 2009 UTC

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  
  MFB: Fixed bug #47946 (ImageConvolution overwrites background)
  
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.119&r2=1.120&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.119 php-src/ext/gd/libgd/gd.c:1.120
--- php-src/ext/gd/libgd/gd.c:1.119 Wed Mar 18 15:29:56 2009
+++ php-src/ext/gd/libgd/gd.c   Sun Apr 12 14:45:05 2009
@@ -3863,7 +3863,7 @@
int x, y, i, j, new_a;
float   new_r, new_g, new_b;
int new_pxl, pxl=0;
-   gdImagePtr  srcback;
+   gdImagePtr  srcback, srctrans;
typedef int (*FuncPtr)(gdImagePtr, int, int);
FuncPtr f;
 
@@ -3873,6 +3873,10 @@
 
/* We need the orinal image with each safe neoghb. pixel */
srcback = gdImageCreateTrueColor (src->sx, src->sy);
+   srcback->saveAlphaFlag = 1;
+   srctrans = gdImageColorAllocateAlpha(srcback, 0, 0, 0, 127);
+   gdImageFill(srcback, 0, 0, srctrans);
+
gdImageCopy(srcback, src,0,0,0,0,src->sx,src->sy);
 
if (srcback==NULL) {



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c /ext/gd/tests libgd00186.phpt

2009-03-18 Thread Takeshi Abe
tabeWed Mar 18 15:29:57 2009 UTC

  Added files: 
/php-src/ext/gd/tests   libgd00186.phpt 

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  Fixed libgd #186 (Tiling true colour with palette image does not work)
  
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.118&r2=1.119&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.118 php-src/ext/gd/libgd/gd.c:1.119
--- php-src/ext/gd/libgd/gd.c:1.118 Wed Feb 11 16:30:48 2009
+++ php-src/ext/gd/libgd/gd.c   Wed Mar 18 15:29:56 2009
@@ -860,23 +860,27 @@
 
 static void gdImageTileApply (gdImagePtr im, int x, int y)
 {
+   gdImagePtr tile = im->tile;
int srcx, srcy;
int p;
-   if (!im->tile) {
+   if (!tile) {
return;
}
-   srcx = x % gdImageSX(im->tile);
-   srcy = y % gdImageSY(im->tile);
+   srcx = x % gdImageSX(tile);
+   srcy = y % gdImageSY(tile);
if (im->trueColor) {
-   p = gdImageGetTrueColorPixel(im->tile, srcx, srcy);
-   if (p != gdImageGetTransparent (im->tile)) {
+   p = gdImageGetPixel(tile, srcx, srcy);
+   if (p != gdImageGetTransparent (tile)) {
+   if (!tile->trueColor) {
+   p = gdTrueColorAlpha(tile->red[p], 
tile->green[p], tile->blue[p], tile->alpha[p]);
+   }
gdImageSetPixel(im, x, y, p);
}
} else {
-   p = gdImageGetPixel(im->tile, srcx, srcy);
+   p = gdImageGetPixel(tile, srcx, srcy);
/* Allow for transparency */
-   if (p != gdImageGetTransparent(im->tile)) {
-   if (im->tile->trueColor) {
+   if (p != gdImageGetTransparent(tile)) {
+   if (tile->trueColor) {
/* Truecolor tile. Very slow on a palette 
destination. */
gdImageSetPixel(im, x, y, 
gdImageColorResolveAlpha(im,

gdTrueColorGetRed(p),

http://cvs.php.net/viewvc.cgi/php-src/ext/gd/tests/libgd00186.phpt?view=markup&rev=1.1
Index: php-src/ext/gd/tests/libgd00186.phpt
+++ php-src/ext/gd/tests/libgd00186.phpt
--TEST--
libgd #186 (Tiling true colour with palette image does not work)
--SKIPIF--

--FILE--

--EXPECT--
Ok



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2009-02-11 Thread Takeshi Abe
tabeWed Feb 11 16:30:48 2009 UTC

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  optimization via the row-major order.
  
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.117&r2=1.118&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.117 php-src/ext/gd/libgd/gd.c:1.118
--- php-src/ext/gd/libgd/gd.c:1.117 Mon Jan 19 15:41:15 2009
+++ php-src/ext/gd/libgd/gd.c   Wed Feb 11 16:30:48 2009
@@ -613,8 +613,8 @@
xlate[i] = -1;
}
 
-   for (x = 0; x < to->sx; x++) {
-   for (y = 0; y < to->sy; y++) {
+   for (y = 0; y < to->sy; y++) {
+   for (x = 0; x < to->sx; x++) {
p = gdImageGetPixel(to, x, y);
if (xlate[p] == -1) {
/* This ought to use HWB, but we don't have an 
alpha-aware version of that yet. */



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c /ext/gd/tests libgd00191.phpt

2009-01-19 Thread Takeshi Abe
tabeMon Jan 19 15:41:16 2009 UTC

  Added files: 
/php-src/ext/gd/tests   libgd00191.phpt 

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  fixed the bug of libgd #191 (A circle becomes square)
  
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.116&r2=1.117&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.116 php-src/ext/gd/libgd/gd.c:1.117
--- php-src/ext/gd/libgd/gd.c:1.116 Wed Dec 10 13:30:11 2008
+++ php-src/ext/gd/libgd/gd.c   Mon Jan 19 15:41:15 2009
@@ -1802,7 +1802,9 @@
a=w>>1;
b=h>>1;
 
-   gdImageLine(im, mx-a, my, mx+a, my, c);
+   for (x = mx-a; x <= mx+a; x++) {
+   gdImageSetPixel(im, x, my, c);
+   }
 
mx1 = mx-a;my1 = my;
mx2 = mx+a;my2 = my;

http://cvs.php.net/viewvc.cgi/php-src/ext/gd/tests/libgd00191.phpt?view=markup&rev=1.1
Index: php-src/ext/gd/tests/libgd00191.phpt
+++ php-src/ext/gd/tests/libgd00191.phpt
--TEST--
libgd FS#191 (A circle becomes square)
--SKIPIF--

--FILE--

--EXPECT--
Ok



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c /ext/gd/tests imagerotate_overflow.phpt

2008-12-10 Thread Scott MacVicar
scottmacWed Dec 10 13:30:12 2008 UTC

  Added files: 
/php-src/ext/gd/tests   imagerotate_overflow.phpt 

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  Fix segfault and potential security issue in imagerotate().
  
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.115&r2=1.116&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.115 php-src/ext/gd/libgd/gd.c:1.116
--- php-src/ext/gd/libgd/gd.c:1.115 Thu Jul 31 09:23:59 2008
+++ php-src/ext/gd/libgd/gd.c   Wed Dec 10 13:30:11 2008
@@ -3129,7 +3129,7 @@
return NULL;
}
 
-   if (!gdImageTrueColor(src) && clrBack>=gdImageColorsTotal(src)) {
+   if (!gdImageTrueColor(src) && (clrBack < 0 || 
clrBack>=gdImageColorsTotal(src))) {
return NULL;
}
 

http://cvs.php.net/viewvc.cgi/php-src/ext/gd/tests/imagerotate_overflow.phpt?view=markup&rev=1.1
Index: php-src/ext/gd/tests/imagerotate_overflow.phpt
+++ php-src/ext/gd/tests/imagerotate_overflow.phpt
--TEST--
imagerotate() overflow with negative numbers
--SKIPIF--

--FILE--

--EXPECT--
bool(false)



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c gd_png.c

2008-07-31 Thread Rasmus Lerdorf
rasmus  Thu Jul 31 09:23:59 2008 UTC

  Modified files:  
/php-src/ext/gd/libgd   gd.c gd_png.c 
  Log:
  Fix for bug #45030
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.114&r2=1.115&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.114 php-src/ext/gd/libgd/gd.c:1.115
--- php-src/ext/gd/libgd/gd.c:1.114 Sun Nov  4 23:57:07 2007
+++ php-src/ext/gd/libgd/gd.c   Thu Jul 31 09:23:59 2008
@@ -2613,6 +2613,7 @@
green /= spixels;
blue /= spixels;
alpha /= spixels;
+   alpha += 0.5;
}
if ( alpha_sum != 0.0f) {
if( contrib_sum != 0.0f) {
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd_png.c?r1=1.24&r2=1.25&diff_format=u
Index: php-src/ext/gd/libgd/gd_png.c
diff -u php-src/ext/gd/libgd/gd_png.c:1.24 php-src/ext/gd/libgd/gd_png.c:1.25
--- php-src/ext/gd/libgd/gd_png.c:1.24  Wed May 16 22:16:21 2007
+++ php-src/ext/gd/libgd/gd_png.c   Thu Jul 31 09:23:59 2008
@@ -689,7 +689,12 @@
 */
a = gdTrueColorGetAlpha(thisPixel);
/* Andrew Hull: >> 6, not >> 7! (gd 
2.0.5) */
-   *pOutputRow++ = 255 - ((a << 1) + (a >> 
6));
+   if (a == 127) {
+   *pOutputRow++ = 0;
+   } else {
+   *pOutputRow++ = 255 - ((a << 1) 
+ (a >> 6));
+   }
+
}
}
}



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c /ext/gd/tests bug43121.gif bug43121.phpt

2007-11-04 Thread Mattias Bengtsson
mattias Sun Nov  4 23:57:07 2007 UTC

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
/php-src/ext/gd/tests   bug43121.gif bug43121.phpt 
  Log:
  -MFB, Fixed Bug #43121 (gdImageFill with IMG_COLOR_TILED crashes httpd)
  
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.113&r2=1.114&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.113 php-src/ext/gd/libgd/gd.c:1.114
--- php-src/ext/gd/libgd/gd.c:1.113 Tue Sep 11 21:07:04 2007
+++ php-src/ext/gd/libgd/gd.c   Sun Nov  4 23:57:07 2007
@@ -2047,14 +2047,14 @@
 
 static void _gdImageFillTiled(gdImagePtr im, int x, int y, int nc)
 {
-   int l, x1, x2, dy;
+   int i, l, x1, x2, dy;
int oc;   /* old pixel value */
int tiled;
int wx2,wy2;
/* stack of filled segments */
struct seg *stack;
struct seg *sp;
-   char *pts;
+   char **pts;
 
if (!im->tile) {
return;
@@ -2064,7 +2064,11 @@
tiled = nc==gdTiled;
 
nc =  gdImageTileGet(im,x,y);
-   pts = (char *) ecalloc(im->sy * im->sx, sizeof(char));
+
+   pts = (char **) ecalloc(im->sy + 1, sizeof(char *));
+   for (i = 0; i < im->sy + 1; i++) {
+   pts[i] = (char *) ecalloc(im->sx + 1, sizeof(char));
+   }
 
stack = (struct seg *)safe_emalloc(sizeof(struct seg), 
((int)(im->sy*im->sx)/4), 1);
sp = stack;
@@ -2077,9 +2081,9 @@
FILL_PUSH(y+1, x, x, -1);
while (sp>stack) {
FILL_POP(y, x1, x2, dy);
-   for (x=x1; x>=0 && (!pts[y + x*wx2] && 
gdImageGetPixel(im,x,y)==oc); x--) {
+   for (x=x1; x>=0 && (!pts[y][x] && gdImageGetPixel(im,x,y)==oc); 
x--) {
nc = gdImageTileGet(im,x,y);
-   pts[y + x*wx2]=1;
+   pts[y][x] = 1;
gdImageSetPixel(im,x, y, nc);
}
if (x>=x1) {
@@ -2093,9 +2097,9 @@
}
x = x1+1;
do {
-   for (; xx2+1) {
FILL_PUSH(y, x2+1, x-1, -dy);
}
-skip:  for (x++; x<=x2 && (pts[y + x*wx2] || 
gdImageGetPixel(im,x, y)!=oc); x++);
+skip:  for(x++; x<=x2 && (pts[y][x] || gdImageGetPixel(im,x, y)!=oc); 
x++);
l = x;
} while (x<=x2);
}
 
+   for(i = 0; i < im->sy + 1; i++) {
+   efree(pts[i]);
+   }
+
efree(pts);
efree(stack);
 }
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/tests/bug43121.gif?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/gd/tests/bug43121.gif
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/tests/bug43121.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/gd/tests/bug43121.phpt
diff -u /dev/null php-src/ext/gd/tests/bug43121.phpt:1.2
--- /dev/null   Sun Nov  4 23:57:07 2007
+++ php-src/ext/gd/tests/bug43121.phpt  Sun Nov  4 23:57:07 2007
@@ -0,0 +1,21 @@
+--TEST--
+Bug #43121 (gdImageFill with IMG_COLOR_TILED crashes httpd)
+--SKIPIF--
+
+--FILE--
+
+--EXPECTF--
+OK

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2007-09-11 Thread Pierre-Alain Joye
pajoye  Tue Sep 11 21:07:04 2007 UTC

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  - MFB: 
   - gdImageTileApply does not respect transparent color
   - gdImageArc regression
   - Alpha channel support for gdImageColor (IMG_FILTER_COLORIZE)
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.112&r2=1.113&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.112 php-src/ext/gd/libgd/gd.c:1.113
--- php-src/ext/gd/libgd/gd.c:1.112 Mon Sep  3 14:34:42 2007
+++ php-src/ext/gd/libgd/gd.c   Tue Sep 11 21:07:04 2007
@@ -869,7 +869,9 @@
srcy = y % gdImageSY(im->tile);
if (im->trueColor) {
p = gdImageGetTrueColorPixel(im->tile, srcx, srcy);
-   gdImageSetPixel(im, x, y, p);
+   if (p != gdImageGetTransparent (im->tile)) {
+   gdImageSetPixel(im, x, y, p);
+   }
} else {
p = gdImageGetPixel(im->tile, srcx, srcy);
/* Allow for transparency */
@@ -1668,10 +1670,9 @@
int fx = 0, fy = 0;
 
 
-   if (s == e) {
+if ((s % 360)  == (e % 360)) {
s = 0; e = 360; 
} else {
-
if (s > 360) {
s = s % 360;
}
@@ -1848,14 +1849,14 @@
int lastBorder;
/* Seek left */
int leftLimit = -1, rightLimit;
-   int i, restoreAlphaBleding=0;
+   int i, restoreAlphaBlending = 0;
 
if (border < 0) {
/* Refuse to fill to a non-solid border */
return;
}
 
-   restoreAlphaBleding = im->alphaBlendingFlag;
+   restoreAlphaBlending = im->alphaBlendingFlag;
im->alphaBlendingFlag = 0;
 
if (x >= im->sx) {
@@ -1873,7 +1874,7 @@
leftLimit = i;
}
if (leftLimit == -1) {
-   im->alphaBlendingFlag = restoreAlphaBleding;
+   im->alphaBlendingFlag = restoreAlphaBlending;
return;
}
/* Seek right */
@@ -1918,7 +1919,7 @@
}
}
}
-   im->alphaBlendingFlag = restoreAlphaBleding;
+   im->alphaBlendingFlag = restoreAlphaBlending;
 }
 
 /*
@@ -1955,7 +1956,7 @@
 
/* stack of filled segments */
/* struct seg stack[FILL_MAX],*sp = stack;; */
-   struct seg *stack;
+   struct seg *stack = NULL;
struct seg *sp;
 
if (!im->trueColor && nc > (im->colorsTotal -1)) {
@@ -3461,7 +3462,7 @@
 }
 
 int
-gdAlphaBlend (int dst, int src)
+gdAlphaBlendOld (int dst, int src)
 {
/* 2.0.12: TBB: alpha in the destination should be a
 * component of the result. Thanks to Frank Warmerdam for
@@ -3483,6 +3484,51 @@
gdTrueColorGetBlue (dst)) / gdAlphaMax));
 }
 
+int gdAlphaBlend (int dst, int src) {
+int src_alpha = gdTrueColorGetAlpha(src);
+int dst_alpha, alpha, red, green, blue;
+int src_weight, dst_weight, tot_weight;
+
+/*  */
+/*  Simple cases we want to handle fast.*/
+/*  */
+if( src_alpha == gdAlphaOpaque )
+return src;
+
+dst_alpha = gdTrueColorGetAlpha(dst);
+if( src_alpha == gdAlphaTransparent )
+return dst;
+if( dst_alpha == gdAlphaTransparent )
+return src;
+
+/*  */
+/*  What will the source and destination alphas be?  Note that  */
+/*  the destination weighting is substantially reduced as the   */
+/*  overlay becomes quite opaque.   */
+/*  */
+src_weight = gdAlphaTransparent - src_alpha;
+dst_weight = (gdAlphaTransparent - dst_alpha) * src_alpha / gdAlphaMax;
+tot_weight = src_weight + dst_weight;
+
+/*  */
+/*  What red, green and blue result values will we use? */
+/*  */
+alpha = src_alpha * dst_alpha / gdAlphaMax;
+
+red = (gdTrueColorGetRed(src) * src_weight
+   + gdTrueColorGetRed(dst) * dst_weight) / tot_weight;
+green = (gdTrueColorGetGreen(src) * src_weight
+   + gdTrueColorGetGreen(dst) * dst_weight) / tot_weight;
+blue = (gdTrueColorGetBlue(src) * src_weight
+   + gdTrueColorGetBlue(dst) * dst_weight) / tot_weight;
+
+/*  */
+/*  Return merged result.   */
+/*  */
+return ((alpha << 24) + (red << 16) + (green << 8) + blue);
+
+}
+
 void gdImageAlphaBlending (gdIm

[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2007-09-03 Thread Nuno Lopes
nlopess Mon Sep  3 14:34:42 2007 UTC

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  MFB: malloc+memset == calloc
  # this was sitting here for quite a looong time..
  
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.111&r2=1.112&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.111 php-src/ext/gd/libgd/gd.c:1.112
--- php-src/ext/gd/libgd/gd.c:1.111 Sun Aug 26 20:33:21 2007
+++ php-src/ext/gd/libgd/gd.c   Mon Sep  3 14:34:42 2007
@@ -129,8 +129,8 @@
return NULL;
}
 
-   im = (gdImage *) gdMalloc(sizeof(gdImage));
-   memset(im, 0, sizeof(gdImage));
+   im = (gdImage *) gdCalloc(1, sizeof(gdImage));
+
/* Row-major ever since gd 1.3 */
im->pixels = (unsigned char **) gdMalloc(sizeof(unsigned char *) * sy);
im->AA_opacity = (unsigned char **) gdMalloc(sizeof(unsigned char *) * 
sy);

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c /ext/gd/tests libgd00106.phpt

2007-08-26 Thread Pierre-Alain Joye
pajoye  Sun Aug 26 20:33:22 2007 UTC

  Added files: 
/php-src/ext/gd/tests   libgd00106.phpt 

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  - gd #106, imagerectangle draws 1x1 rectangles as 1x3 rectangles
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.110&r2=1.111&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.110 php-src/ext/gd/libgd/gd.c:1.111
--- php-src/ext/gd/libgd/gd.c:1.110 Sun Jun 17 17:14:02 2007
+++ php-src/ext/gd/libgd/gd.c   Sun Aug 26 20:33:21 2007
@@ -2120,6 +2120,11 @@
int half1 = 1;
int t;
 
+   if (x1 == x2 && y1 == y2 && thick == 1) {
+   gdImageSetPixel(im, x1, y1, color);
+   return;
+   }
+
if (y2 < y1) {
t=y1;
y1 = y2;

http://cvs.php.net/viewvc.cgi/php-src/ext/gd/tests/libgd00106.phpt?view=markup&rev=1.1
Index: php-src/ext/gd/tests/libgd00106.phpt
+++ php-src/ext/gd/tests/libgd00106.phpt
--TEST--
libgd #106 (imagerectangle 1x1 draws 1x3)
--SKIPIF--

--FILE--

--EXPECT--
Ok

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2007-06-17 Thread Pierre-Alain Joye
pajoye  Sun Jun 17 17:14:02 2007 UTC

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  - Re commit "sync with libgd: improve _gdImageFillTiled()", I reverted 
it in my previous commit
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.109&r2=1.110&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.109 php-src/ext/gd/libgd/gd.c:1.110
--- php-src/ext/gd/libgd/gd.c:1.109 Sun Jun 17 17:12:46 2007
+++ php-src/ext/gd/libgd/gd.c   Sun Jun 17 17:14:02 2007
@@ -1943,7 +1943,7 @@
 #define FILL_POP(Y, XL, XR, DY) \
 {sp--; Y = sp->y+(DY = sp->dy); XL = sp->xl; XR = sp->xr;}
 
-void _gdImageFillTiled(gdImagePtr im, int x, int y, int nc);
+static void _gdImageFillTiled(gdImagePtr im, int x, int y, int nc);
 
 void gdImageFill(gdImagePtr im, int x, int y, int nc)
 {
@@ -2044,16 +2044,16 @@
im->alphaBlendingFlag = alphablending_bak;  
 }
 
-void _gdImageFillTiled(gdImagePtr im, int x, int y, int nc)
+static void _gdImageFillTiled(gdImagePtr im, int x, int y, int nc)
 {
-   int i,l, x1, x2, dy;
+   int l, x1, x2, dy;
int oc;   /* old pixel value */
int tiled;
int wx2,wy2;
/* stack of filled segments */
struct seg *stack;
struct seg *sp;
-   char **pts;
+   char *pts;
 
if (!im->tile) {
return;
@@ -2063,11 +2063,7 @@
tiled = nc==gdTiled;
 
nc =  gdImageTileGet(im,x,y);
-   pts = (char **) ecalloc(im->sy, sizeof(char*));
-
-   for (i=0; isy;i++) {
-   pts[i] = (char *) ecalloc(im->sx, sizeof(char));
-   }
+   pts = (char *) ecalloc(im->sy * im->sx, sizeof(char));
 
stack = (struct seg *)safe_emalloc(sizeof(struct seg), 
((int)(im->sy*im->sx)/4), 1);
sp = stack;
@@ -2080,9 +2076,9 @@
FILL_PUSH(y+1, x, x, -1);
while (sp>stack) {
FILL_POP(y, x1, x2, dy);
-   for (x=x1; x>=0 && (!pts[y][x] && gdImageGetPixel(im,x,y)==oc); 
x--) {
+   for (x=x1; x>=0 && (!pts[y + x*wx2] && 
gdImageGetPixel(im,x,y)==oc); x--) {
nc = gdImageTileGet(im,x,y);
-   pts[y][x]=1;
+   pts[y + x*wx2]=1;
gdImageSetPixel(im,x, y, nc);
}
if (x>=x1) {
@@ -2096,9 +2092,9 @@
}
x = x1+1;
do {
-   for (; xx2+1) {
FILL_PUSH(y, x2+1, x-1, -dy);
}
-skip:  for (x++; x<=x2 && (pts[y][x] || gdImageGetPixel(im,x, 
y)!=oc); x++);
+skip:  for (x++; x<=x2 && (pts[y + x*wx2] || 
gdImageGetPixel(im,x, y)!=oc); x++);
l = x;
} while (x<=x2);
}
-   for (i=0; isy;i++) {
-   efree(pts[i]);
-   }
+
efree(pts);
efree(stack);
 }

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2007-06-17 Thread Pierre-Alain Joye
pajoye  Sun Jun 17 17:12:46 2007 UTC

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  - MFB: Drop useless tests (Daniel Diaz)
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.108&r2=1.109&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.108 php-src/ext/gd/libgd/gd.c:1.109
--- php-src/ext/gd/libgd/gd.c:1.108 Sun Jun 17 10:53:33 2007
+++ php-src/ext/gd/libgd/gd.c   Sun Jun 17 17:12:46 2007
@@ -3610,9 +3610,7 @@
if (new_pxl == -1) {
new_pxl = gdImageColorClosestAlpha(src, 255-r, 
255-g, 255-b, a);
}
-   if ((y >= 0) && (y < src->sy)) {
-   gdImageSetPixel (src, x, y, new_pxl);
-   }
+   gdImageSetPixel (src, x, y, new_pxl);
}
}
return 1;
@@ -3645,9 +3643,7 @@
if (new_pxl == -1) {
new_pxl = gdImageColorClosestAlpha(src, r, g, 
b, a);
}
-   if ((y >= 0) && (y < src->sy)) {
-   gdImageSetPixel (src, x, y, new_pxl);
-   }
+   gdImageSetPixel (src, x, y, new_pxl);
}
}
return 1;
@@ -3692,9 +3688,7 @@
if (new_pxl == -1) {
new_pxl = gdImageColorClosestAlpha(src, (int)r, 
(int)g, (int)b, a);
}
-   if ((y >= 0) && (y < src->sy)) {
-   gdImageSetPixel (src, x, y, new_pxl);
-   }
+   gdImageSetPixel (src, x, y, new_pxl);
}
}
return 1;
@@ -3754,9 +3748,7 @@
if (new_pxl == -1) {
new_pxl = gdImageColorClosestAlpha(src, 
(int)rf, (int)gf, (int)bf, a);
}
-   if ((y >= 0) && (y < src->sy)) {
-   gdImageSetPixel (src, x, y, new_pxl);
-   }
+   gdImageSetPixel (src, x, y, new_pxl);
}
}
return 1;
@@ -3797,9 +3789,7 @@
if (new_pxl == -1) {
new_pxl = gdImageColorClosestAlpha(src, (int)r, 
(int)g, (int)b, a);
}
-   if ((y >= 0) && (y < src->sy)) {
-   gdImageSetPixel (src, x, y, new_pxl);
-   }
+   gdImageSetPixel (src, x, y, new_pxl);
}
}
return 1;
@@ -3855,9 +3845,7 @@
if (new_pxl == -1) {
new_pxl = gdImageColorClosestAlpha(src, 
(int)new_r, (int)new_g, (int)new_b, new_a);
}
-   if ((y >= 0) && (y < src->sy)) {
-   gdImageSetPixel (src, x, y, new_pxl);
-   }
+   gdImageSetPixel (src, x, y, new_pxl);
}
}
gdImageDestroy(srcback);
@@ -3977,9 +3965,7 @@
if (new_pxl == -1) {
new_pxl = gdImageColorClosestAlpha(src, 
(int)new_r, (int)new_g, (int)new_b, new_a);
}
-   if ((y >= 0) && (y < src->sy)) {
-   gdImageSetPixel (src, x, y, new_pxl);
-   }
+   gdImageSetPixel (src, x, y, new_pxl);
}
}
gdImageDestroy(srcback);

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2007-06-17 Thread Pierre-Alain Joye
pajoye  Sun Jun 17 10:53:33 2007 UTC

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  - #41717, imagepolygon does not respect thickness
(sync with libgd)
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.107&r2=1.108&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.107 php-src/ext/gd/libgd/gd.c:1.108
--- php-src/ext/gd/libgd/gd.c:1.107 Fri Jun 15 19:50:05 2007
+++ php-src/ext/gd/libgd/gd.c   Sun Jun 17 10:53:33 2007
@@ -1037,86 +1037,92 @@
}
 }
 
+static void gdImageHLine(gdImagePtr im, int y, int x1, int x2, int col)
+{
+   if (im->thick > 1) {
+   int thickhalf = im->thick >> 1;
+   gdImageFilledRectangle(im, x1, y - thickhalf, x2, y + im->thick 
- thickhalf - 1, col);
+   } else {
+   if (x2 < x1) {
+   int t = x2;
+   x2 = x1;
+   x1 = t;
+   }
+
+   for (;x1 <= x2; x1++) {
+   gdImageSetPixel(im, x1, y, col);
+   }
+   }
+   return;
+}
+
+static void gdImageVLine(gdImagePtr im, int x, int y1, int y2, int col)
+{
+   if (im->thick > 1) {
+   int thickhalf = im->thick >> 1;
+   gdImageFilledRectangle(im, x - thickhalf, y1, x + im->thick - 
thickhalf - 1, y2, col);
+   } else {
+   if (y2 < y1) {
+   int t = y1;
+   y1 = y2;
+   y2 = t;
+   }
+
+   for (;y1 <= y2; y1++) {
+   gdImageSetPixel(im, x, y1, col);
+   }
+   }
+   return;
+}
 
 /* Bresenham as presented in Foley & Van Dam */
 void gdImageLine (gdImagePtr im, int x1, int y1, int x2, int y2, int color)
 {
-   int t;
int dx, dy, incr1, incr2, d, x, y, xend, yend, xdirflag, ydirflag;
int wid;
int w, wstart;
int thick = im->thick;
 
+   if (color == gdAntiAliased) {
+   /* 
+  gdAntiAliased passed as color: use the much faster, much 
cheaper
+  and equally attractive gdImageAALine implementation. That
+  clips too, so don't clip twice.
+  */
+   gdImageAALine(im, x1, y1, x2, y2, im->AA_color); 
+   return;
+   }
+
/* 2.0.10: Nick Atty: clip to edges of drawing rectangle, return if no 
points need to be drawn */
if (!clip_1d(&x1,&y1,&x2,&y2,gdImageSX(im)) || 
!clip_1d(&y1,&x1,&y2,&x2,gdImageSY(im))) {
return;
}
 
-   /* Vertical */
-   if (x1==x2) {
-   if (thick > 1) {
-   int thickhalf = thick >> 1;
-   thickhalf = thick >> 1;
-   gdImageFilledRectangle(im, x1 - thickhalf, y1, x1 + 
thick - thickhalf - 1, y2, color);
-   } else {
-   if (y2 < y1) {
-   t = y2;
-   y2 = y1;
-   y1 = t;
-   }
+   dx = abs (x2 - x1);
+   dy = abs (y2 - y1);
 
-   for (;y1 <= y2; y1++) {
-   gdImageSetPixel(im, x1,y1, color);
-   }
-   }
+   if (dx == 0) {
+   gdImageVLine(im, x1, y1, y2, color);
return;
-   } else if (y1==y2) {/* Horizontal */
-   if (thick > 1) {
-   int thickhalf = thick >> 1;
-   thickhalf = thick >> 1;
-   gdImageFilledRectangle(im, x1, y1 - thickhalf, x2, y2 + 
thick - thickhalf - 1, color);
-   } else {
-   if (x2 < x1) {
-   t = x2;
-   x2 = x1;
-   x1 = t;
-   }
-
-   for (;x1 <= x2; x1++) {
-   gdImageSetPixel(im, x1,y1, color);
-   }
-   }
+   } else if (dy == 0) {
+   gdImageHLine(im, y1, x1, x2, color);
return;
}
 
-   /* gdAntiAliased passed as color: set anti-aliased line (AAL) global 
vars. */
-   if (color == gdAntiAliased) {
-   im->AAL_x1 = x1;
-   im->AAL_y1 = y1;
-   im->AAL_x2 = x2;
-   im->AAL_y2 = y2;
-
-   /* Compute what we can for point-to-line distance calculation 
later. */
-   im->AAL_Bx_Ax = x2 - x1;
-   im->AAL_By_Ay = y2 - y1;
-   im->AAL_LAB_2 = (im->AAL_Bx_Ax * im->AAL_Bx_Ax) + 
(im->AAL_By_Ay * im->AAL_By_Ay);
-   im->AAL_LAB = sqrt (im->AAL_LAB_2);
-
-   /* For AA, we must draw pixels outside the width of the line.  
Keep in
-* mind that this will be curtailed by cos/sin of theta later.
-  

[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2007-06-15 Thread Nuno Lopes
nlopess Fri Jun 15 19:50:05 2007 UTC

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  MFB: sync with libgd: improve _gdImageFillTiled()
  
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.106&r2=1.107&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.106 php-src/ext/gd/libgd/gd.c:1.107
--- php-src/ext/gd/libgd/gd.c:1.106 Thu Jun 14 19:18:00 2007
+++ php-src/ext/gd/libgd/gd.c   Fri Jun 15 19:50:05 2007
@@ -1941,7 +1941,7 @@
 #define FILL_POP(Y, XL, XR, DY) \
 {sp--; Y = sp->y+(DY = sp->dy); XL = sp->xl; XR = sp->xr;}
 
-void _gdImageFillTiled(gdImagePtr im, int x, int y, int nc);
+static void _gdImageFillTiled(gdImagePtr im, int x, int y, int nc);
 
 void gdImageFill(gdImagePtr im, int x, int y, int nc)
 {
@@ -2042,16 +2042,16 @@
im->alphaBlendingFlag = alphablending_bak;  
 }
 
-void _gdImageFillTiled(gdImagePtr im, int x, int y, int nc)
+static void _gdImageFillTiled(gdImagePtr im, int x, int y, int nc)
 {
-   int i,l, x1, x2, dy;
+   int l, x1, x2, dy;
int oc;   /* old pixel value */
int tiled;
int wx2,wy2;
/* stack of filled segments */
struct seg *stack;
struct seg *sp;
-   char **pts;
+   char *pts;
 
if (!im->tile) {
return;
@@ -2061,11 +2061,7 @@
tiled = nc==gdTiled;
 
nc =  gdImageTileGet(im,x,y);
-   pts = (char **) ecalloc(im->sy, sizeof(char*));
-
-   for (i=0; isy;i++) {
-   pts[i] = (char *) ecalloc(im->sx, sizeof(char));
-   }
+   pts = (char *) ecalloc(im->sy * im->sx, sizeof(char));
 
stack = (struct seg *)safe_emalloc(sizeof(struct seg), 
((int)(im->sy*im->sx)/4), 1);
sp = stack;
@@ -2078,9 +2074,9 @@
FILL_PUSH(y+1, x, x, -1);
while (sp>stack) {
FILL_POP(y, x1, x2, dy);
-   for (x=x1; x>=0 && (!pts[y][x] && gdImageGetPixel(im,x,y)==oc); 
x--) {
+   for (x=x1; x>=0 && (!pts[y + x*wx2] && 
gdImageGetPixel(im,x,y)==oc); x--) {
nc = gdImageTileGet(im,x,y);
-   pts[y][x]=1;
+   pts[y + x*wx2]=1;
gdImageSetPixel(im,x, y, nc);
}
if (x>=x1) {
@@ -2094,9 +2090,9 @@
}
x = x1+1;
do {
-   for (; xx2+1) {
FILL_PUSH(y, x2+1, x-1, -dy);
}
-skip:  for (x++; x<=x2 && (pts[y][x] || gdImageGetPixel(im,x, 
y)!=oc); x++);
+skip:  for (x++; x<=x2 && (pts[y + x*wx2] || 
gdImageGetPixel(im,x, y)!=oc); x++);
l = x;
} while (x<=x2);
}
-   for (i=0; isy;i++) {
-   efree(pts[i]);
-   }
+
efree(pts);
efree(stack);
 }

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2007-06-14 Thread Pierre-Alain Joye
pajoye  Thu Jun 14 19:18:00 2007 UTC

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  - MFB: Fixed regression introduced by the fix for the libgd bug #74 
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.105&r2=1.106&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.105 php-src/ext/gd/libgd/gd.c:1.106
--- php-src/ext/gd/libgd/gd.c:1.105 Wed Jun  6 09:43:38 2007
+++ php-src/ext/gd/libgd/gd.c   Thu Jun 14 19:18:00 2007
@@ -1665,20 +1665,29 @@
int lx = 0, ly = 0;
int fx = 0, fy = 0;
 
-   if (s > 360) {
-   s = s % 360;
-   }
 
-   if (e > 360) {
-   e = e % 360;
-   }
+   if (s == e) {
+   s = 0; e = 360; 
+   } else {
 
-   while (s<0) {
-   s += 360;
-   }
+   if (s > 360) {
+   s = s % 360;
+   }
 
-   while (e < s) {
-   e += 360;
+   if (e > 360) {
+   e = e % 360;
+   }
+
+   while (s < 0) {
+   s += 360;
+   }
+
+   while (e < s) {
+   e += 360;
+   }
+   if (s == e) {
+   s = 0; e = 360; 
+   }
}
 
for (i = s; i <= e; i++) {

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2007-04-14 Thread Pierre-Alain Joye
pajoye  Sat Apr 14 17:30:51 2007 UTC

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  -  libgd #74, gdImageFilledArc, huge CPU usage with large angles
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.103&r2=1.104&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.103 php-src/ext/gd/libgd/gd.c:1.104
--- php-src/ext/gd/libgd/gd.c:1.103 Sat Mar 10 01:23:42 2007
+++ php-src/ext/gd/libgd/gd.c   Sat Apr 14 17:30:51 2007
@@ -1643,6 +1643,14 @@
int lx = 0, ly = 0;
int fx = 0, fy = 0;
 
+   if (s > 360) {
+   s = s % 360;
+   }
+
+   if (e > 360) {
+   e = e % 360;
+   }
+
while (s<0) {
s += 360;
}

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c /ext/gd/tests bug40764.phpt

2007-03-09 Thread Pierre-Alain Joye
pajoye  Sat Mar 10 01:23:42 2007 UTC

  Modified files:  
/php-src/ext/gd/tests   bug40764.phpt 
/php-src/ext/gd/libgd   gd.c 
  Log:
  - MFB: #40764, line thickness not respected for horizontal and vertical 
lines
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/tests/bug40764.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/gd/tests/bug40764.phpt
diff -u /dev/null php-src/ext/gd/tests/bug40764.phpt:1.2
--- /dev/null   Sat Mar 10 01:23:42 2007
+++ php-src/ext/gd/tests/bug40764.phpt  Sat Mar 10 01:23:42 2007
@@ -0,0 +1,31 @@
+--TEST--
+Bug #40764 (line thickness not respected for horizontal and vertical lines)
+--SKIPIF--
+
+--FILE--
+
+--EXPECT--
+00
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.102&r2=1.103&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.102 php-src/ext/gd/libgd/gd.c:1.103
--- php-src/ext/gd/libgd/gd.c:1.102 Fri Jan 19 15:16:46 2007
+++ php-src/ext/gd/libgd/gd.c   Sat Mar 10 01:23:42 2007
@@ -1032,25 +1032,37 @@
 
/* Vertical */
if (x1==x2) {
-   if (y2 < y1) {
-   t = y2;
-   y2 = y1;
-   y1 = t;
-   }
+   if (thick > 1) {
+   int thickhalf = thick >> 1;
+   thickhalf = thick >> 1;
+   gdImageFilledRectangle(im, x1 - thickhalf, y1, x1 + 
thick - thickhalf - 1, y2, color);
+   } else {
+   if (y2 < y1) {
+   t = y2;
+   y2 = y1;
+   y1 = t;
+   }
 
-   for (;y1 <= y2; y1++) {
-   gdImageSetPixel(im, x1,y1, color);
+   for (;y1 <= y2; y1++) {
+   gdImageSetPixel(im, x1,y1, color);
+   }
}
return;
-   } else if (y1==y2) { /* Horizontal */
-   if (x2 < x1) {
-   t = x2;
-   x2 = x1;
-   x1 = t;
-   }
+   } else if (y1==y2) {/* Horizontal */
+   if (thick > 1) {
+   int thickhalf = thick >> 1;
+   thickhalf = thick >> 1;
+   gdImageFilledRectangle(im, x1, y1 - thickhalf, x2, y2 + 
thick - thickhalf - 1, color);
+   } else {
+   if (x2 < x1) {
+   t = x2;
+   x2 = x1;
+   x1 = t;
+   }
 
-   for (;x1 <= x2; x1++) {
-   gdImageSetPixel(im, x1,y1, color);
+   for (;x1 <= x2; x1++) {
+   gdImageSetPixel(im, x1,y1, color);
+   }
}
return;
}

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2007-01-19 Thread Pierre-Alain Joye
pajoye  Fri Jan 19 15:16:46 2007 UTC

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  - MFB: save/restore the alpha blending mode correctly in imagefill and
  imagefilltoborder
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.101&r2=1.102&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.101 php-src/ext/gd/libgd/gd.c:1.102
--- php-src/ext/gd/libgd/gd.c:1.101 Sat Jan 13 11:22:44 2007
+++ php-src/ext/gd/libgd/gd.c   Fri Jan 19 15:16:46 2007
@@ -1802,10 +1802,8 @@
return;
}
 
-   if (im->alphaBlendingFlag) {
-   restoreAlphaBleding = 1;
-   im->alphaBlendingFlag = 0;
-   }
+   restoreAlphaBleding = im->alphaBlendingFlag;
+   im->alphaBlendingFlag = 0;
 
if (x >= im->sx) {
x = im->sx - 1;
@@ -1822,9 +1820,7 @@
leftLimit = i;
}
if (leftLimit == -1) {
-   if (restoreAlphaBleding) {
-   im->alphaBlendingFlag = 1;
-   }
+   im->alphaBlendingFlag = restoreAlphaBleding;
return;
}
/* Seek right */
@@ -1869,9 +1865,7 @@
}
}
}
-   if (restoreAlphaBleding) {
-   im->alphaBlendingFlag = 1;
-   }
+   im->alphaBlendingFlag = restoreAlphaBleding;
 }
 
 /*
@@ -1939,7 +1933,7 @@
do {
c = gdImageGetPixel(im, ix, iy);
if (c != oc) {
-   return;
+   goto done;  
}
gdImageSetPixel(im, ix, iy, nc);
} while(ix++ < (im->sx -1));
@@ -1947,11 +1941,11 @@
do {
c = gdImageGetPixel(im, ix, iy);
if (c != oc) {
-   return;
+   goto done;
}
gdImageSetPixel(im, ix, iy, nc);
} while(ix++ < (im->sx -1));
-   return;
+   goto done;  
}
 
stack = (struct seg *)safe_emalloc(sizeof(struct seg), 
((int)(im->sy*im->sx)/4), 1);
@@ -1992,6 +1986,8 @@
} while (x<=x2);
}
efree(stack);
+
+done:
im->alphaBlendingFlag = alphablending_bak;  
 }
 

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2007-01-13 Thread Nuno Lopes
nlopess Sat Jan 13 11:22:44 2007 UTC

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  MFB
  
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.100&r2=1.101&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.100 php-src/ext/gd/libgd/gd.c:1.101
--- php-src/ext/gd/libgd/gd.c:1.100 Sat Jan 13 11:16:53 2007
+++ php-src/ext/gd/libgd/gd.c   Sat Jan 13 11:22:44 2007
@@ -2014,7 +2014,7 @@
tiled = nc==gdTiled;
 
nc =  gdImageTileGet(im,x,y);
-   pts = (char **) ecalloc(sizeof(char *) * im->sy, sizeof(char));
+   pts = (char **) ecalloc(im->sy, sizeof(char*));
 
for (i=0; isy;i++) {
pts[i] = (char *) ecalloc(im->sx, sizeof(char));

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2007-01-13 Thread Nuno Lopes
nlopess Sat Jan 13 11:16:54 2007 UTC

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  MFB
  
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.99&r2=1.100&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.99 php-src/ext/gd/libgd/gd.c:1.100
--- php-src/ext/gd/libgd/gd.c:1.99  Sun Dec 10 02:08:07 2006
+++ php-src/ext/gd/libgd/gd.c   Sat Jan 13 11:16:53 2007
@@ -2004,9 +2004,9 @@
/* stack of filled segments */
struct seg *stack;
struct seg *sp;
+   char **pts;
 
-   int **pts;
-   if(!im->tile){
+   if (!im->tile) {
return;
}
 
@@ -2014,10 +2014,10 @@
tiled = nc==gdTiled;
 
nc =  gdImageTileGet(im,x,y);
-   pts = (int **) ecalloc(sizeof(int *) * im->sy, sizeof(int));
+   pts = (char **) ecalloc(sizeof(char *) * im->sy, sizeof(char));
 
for (i=0; isy;i++) {
-   pts[i] = (int *) ecalloc(im->sx, sizeof(int));
+   pts[i] = (char *) ecalloc(im->sx, sizeof(char));
}
 
stack = (struct seg *)safe_emalloc(sizeof(struct seg), 
((int)(im->sy*im->sx)/4), 1);
@@ -2032,10 +2032,6 @@
while (sp>stack) {
FILL_POP(y, x1, x2, dy);
for (x=x1; x>=0 && (!pts[y][x] && gdImageGetPixel(im,x,y)==oc); 
x--) {
-   if (pts[y][x]){
-   /* we should never be here */
-   break;
-   }
nc = gdImageTileGet(im,x,y);
pts[y][x]=1;
gdImageSetPixel(im,x, y, nc);
@@ -2051,11 +2047,7 @@
}
x = x1+1;
do {
-   for (; x<=wx2 && (!pts[y][x] && gdImageGetPixel(im,x, 
y)==oc) ; x++) {
-   if (pts[y][x]){
-   /* we should never be here */
-   break;
-   }
+   for (; xhttp://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c /ext/gd/tests bug39508.phpt

2006-12-09 Thread Pierre-Alain Joye
pajoye  Sun Dec 10 02:08:07 2006 UTC

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
/php-src/ext/gd/tests   bug39508.phpt 
  Log:
  - MFB: #39508, imagefill crashes with small image
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.98&r2=1.99&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.98 php-src/ext/gd/libgd/gd.c:1.99
--- php-src/ext/gd/libgd/gd.c:1.98  Sat Nov  4 14:22:23 2006
+++ php-src/ext/gd/libgd/gd.c   Sun Dec 10 02:08:07 2006
@@ -1931,6 +1931,29 @@
return;
}
 
+   /* Do not use the 4 neighbors implementation with
+   * small images
+   */
+   if (im->sx < 4) {
+   int ix = x, iy = y, c;
+   do {
+   c = gdImageGetPixel(im, ix, iy);
+   if (c != oc) {
+   return;
+   }
+   gdImageSetPixel(im, ix, iy, nc);
+   } while(ix++ < (im->sx -1));
+   ix = x; iy = y + 1;
+   do {
+   c = gdImageGetPixel(im, ix, iy);
+   if (c != oc) {
+   return;
+   }
+   gdImageSetPixel(im, ix, iy, nc);
+   } while(ix++ < (im->sx -1));
+   return;
+   }
+
stack = (struct seg *)safe_emalloc(sizeof(struct seg), 
((int)(im->sy*im->sx)/4), 1);
sp = stack;
 
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/tests/bug39508.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/gd/tests/bug39508.phpt
diff -u /dev/null php-src/ext/gd/tests/bug39508.phpt:1.2
--- /dev/null   Sun Dec 10 02:08:07 2006
+++ php-src/ext/gd/tests/bug39508.phpt  Sun Dec 10 02:08:07 2006
@@ -0,0 +1,16 @@
+--TEST--
+Bug #39508 (imagefill crashes with small images 3 pixels or less)
+--SKIPIF--
+
+--FILE--
+
+--EXPECTF--
+16776960

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2006-11-04 Thread Pierre-Alain Joye
pajoye  Sat Nov  4 14:22:24 2006 UTC

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  - ws
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.97&r2=1.98&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.97 php-src/ext/gd/libgd/gd.c:1.98
--- php-src/ext/gd/libgd/gd.c:1.97  Sat Nov  4 03:12:36 2006
+++ php-src/ext/gd/libgd/gd.c   Sat Nov  4 14:22:23 2006
@@ -1042,10 +1042,7 @@
gdImageSetPixel(im, x1,y1, color);
}
return;
-   }
-
-   /* Horizontal */
-   if (y1==y2) {
+   } else if (y1==y2) { /* Horizontal */
if (x2 < x1) {
t = x2;
x2 = x1;

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c /ext/gd/tests bug39366.phpt

2006-11-03 Thread Pierre-Alain Joye
pajoye  Sat Nov  4 03:12:36 2006 UTC

  Added files: 
/php-src/ext/gd/tests   bug39366.phpt 

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  - #39366, imagerotate does not use alpha with angles>45
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.96&r2=1.97&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.96 php-src/ext/gd/libgd/gd.c:1.97
--- php-src/ext/gd/libgd/gd.c:1.96  Sat Nov  4 02:23:45 2006
+++ php-src/ext/gd/libgd/gd.c   Sat Nov  4 03:12:36 2006
@@ -2776,6 +2776,9 @@
dst->transparent = src->transparent;
 
if (dst != NULL) {
+   int old_blendmode = dst->alphaBlendingFlag;
+   dst->alphaBlendingFlag = 0;
+
gdImagePaletteCopy (dst, src);
 
for (uY = 0; uYsy; uY++) {
@@ -2795,6 +2798,7 @@
}
}
}
+   dst->alphaBlendingFlag = old_blendmode;
}
 
return dst;
@@ -2818,6 +2822,9 @@
dst->transparent = src->transparent;
 
if (dst != NULL) {
+   int old_blendmode = dst->alphaBlendingFlag;
+   dst->alphaBlendingFlag = 0;
+
gdImagePaletteCopy (dst, src);
 
for (uY = 0; uYsy; uY++) {
@@ -2838,6 +2845,7 @@
}
}
}
+   dst->alphaBlendingFlag = old_blendmode;
}
 
return dst;
@@ -2861,6 +2869,9 @@
dst->transparent = src->transparent;
 
if (dst != NULL) {
+   int old_blendmode = dst->alphaBlendingFlag;
+   dst->alphaBlendingFlag = 0;
+
gdImagePaletteCopy (dst, src);
 
for (uY = 0; uYsy; uY++) {
@@ -2881,6 +2892,7 @@
}
}
}
+   dst->alphaBlendingFlag = old_blendmode;
}
 
return dst;

http://cvs.php.net/viewvc.cgi/php-src/ext/gd/tests/bug39366.phpt?view=markup&rev=1.1
Index: php-src/ext/gd/tests/bug39366.phpt
+++ php-src/ext/gd/tests/bug39366.phpt
--TEST--
Bug #39366 (imagerotate does not respect alpha with angles>45)
--SKIPIF--

--FILE--

--EXPECTF--
32FF

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c /ext/gd/tests bug39273.phpt

2006-11-03 Thread Pierre-Alain Joye
pajoye  Sat Nov  4 02:23:45 2006 UTC

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
/php-src/ext/gd/tests   bug39273.phpt 
  Log:
  - MFB: #39273, imagecopyresized and alpha channel
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.95&r2=1.96&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.95 php-src/ext/gd/libgd/gd.c:1.96
--- php-src/ext/gd/libgd/gd.c:1.95  Thu Sep 28 08:52:23 2006
+++ php-src/ext/gd/libgd/gd.c   Sat Nov  4 02:23:45 2006
@@ -754,7 +754,7 @@
int p = gdImageGetPixel(im, x, y);
 
if (!im->trueColor)  {
-   return gdTrueColorAlpha(im->red[p], im->green[p], im->blue[p], 
(im->transparent == p) ? gdAlphaTransparent : gdAlphaOpaque);
+   return gdTrueColorAlpha(im->red[p], im->green[p], im->blue[p], 
(im->transparent == p) ? gdAlphaTransparent : im->alpha[p]);
} else {
return p;
}
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/tests/bug39273.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/gd/tests/bug39273.phpt
diff -u /dev/null php-src/ext/gd/tests/bug39273.phpt:1.2
--- /dev/null   Sat Nov  4 02:23:45 2006
+++ php-src/ext/gd/tests/bug39273.phpt  Sat Nov  4 02:23:45 2006
@@ -0,0 +1,32 @@
+--TEST--
+Bug #37360 (gdimagecreatefromgif, bad image sizes)
+--SKIPIF--
+
+--FILE--
+
+--EXPECTF--
+32FF

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c /ext/gd/tests imagefill_1.phpt

2006-09-28 Thread Pierre-Alain Joye
pajoye  Thu Sep 28 08:52:24 2006 UTC

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
/php-src/ext/gd/tests   imagefill_1.phpt 
  Log:
  - MFB: imagefill(), infinite loop with wrong color index
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.94&r2=1.95&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.94 php-src/ext/gd/libgd/gd.c:1.95
--- php-src/ext/gd/libgd/gd.c:1.94  Sun Jul 23 21:48:18 2006
+++ php-src/ext/gd/libgd/gd.c   Thu Sep 28 08:52:23 2006
@@ -1914,6 +1914,10 @@
struct seg *stack;
struct seg *sp;
 
+   if (!im->trueColor && nc > (im->colorsTotal -1)) {
+   return;
+   }
+
alphablending_bak = im->alphaBlendingFlag;  
im->alphaBlendingFlag = 0;
 
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/tests/imagefill_1.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/gd/tests/imagefill_1.phpt
diff -u /dev/null php-src/ext/gd/tests/imagefill_1.phpt:1.2
--- /dev/null   Thu Sep 28 08:52:24 2006
+++ php-src/ext/gd/tests/imagefill_1.phpt   Thu Sep 28 08:52:23 2006
@@ -0,0 +1,25 @@
+--TEST--
+imagefill() infinite loop with wrong color index
+--SKIPIF--
+
+--FILE--
+
+--EXPECT--
+00

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c /ext/gd/tests 38179.phpt

2006-07-23 Thread Pierre-Alain Joye
pajoye  Sun Jul 23 21:48:18 2006 UTC

  Modified files:  
/php-src/ext/gd/tests   38179.phpt 
/php-src/ext/gd/libgd   gd.c 
  Log:
  - MFB: #38179, imagecopy, palette to truecolor must use alpha channel too
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/tests/38179.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/gd/tests/38179.phpt
diff -u /dev/null php-src/ext/gd/tests/38179.phpt:1.2
--- /dev/null   Sun Jul 23 21:48:18 2006
+++ php-src/ext/gd/tests/38179.phpt Sun Jul 23 21:48:18 2006
@@ -0,0 +1,28 @@
+--TEST--
+imagecopy doen't copy alpha, palette to truecolor
+--SKIPIF--
+
+--FILE--
+
+--EXPECTF--
+46FF
+
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.93&r2=1.94&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.93 php-src/ext/gd/libgd/gd.c:1.94
--- php-src/ext/gd/libgd/gd.c:1.93  Fri Dec 30 09:53:05 2005
+++ php-src/ext/gd/libgd/gd.c   Sun Jul 23 21:48:18 2006
@@ -2190,7 +2190,7 @@
for (x = 0; (x < w); x++) {
int c = gdImageGetPixel (src, srcX + x, 
srcY + y);
if (c != src->transparent) {
-   gdImageSetPixel (dst, dstX + x, 
dstY + y, gdTrueColor(src->red[c], src->green[c], src->blue[c]));
+   gdImageSetPixel(dst, dstX + x, 
dstY + y, gdTrueColorAlpha(src->red[c], src->green[c], src->blue[c], 
src->alpha[c]));
}
}
}

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2005-12-30 Thread Pierre-Alain Joye
pajoye  Fri Dec 30 09:53:05 2005 EDT

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  - ensure that x1http://cvs.php.net/viewcvs.cgi/php-src/ext/gd/libgd/gd.c?r1=1.92&r2=1.93&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.92 php-src/ext/gd/libgd/gd.c:1.93
--- php-src/ext/gd/libgd/gd.c:1.92  Fri Dec 30 01:19:32 2005
+++ php-src/ext/gd/libgd/gd.c   Fri Dec 30 09:53:05 2005
@@ -1019,6 +1019,7 @@
 /* Bresenham as presented in Foley & Van Dam */
 void gdImageLine (gdImagePtr im, int x1, int y1, int x2, int y2, int color)
 {
+   int t;
int dx, dy, incr1, incr2, d, x, y, xend, yend, xdirflag, ydirflag;
int wid;
int w, wstart;
@@ -1031,6 +1032,12 @@
 
/* Vertical */
if (x1==x2) {
+   if (y2 < y1) {
+   t = y2;
+   y2 = y1;
+   y1 = t;
+   }
+
for (;y1 <= y2; y1++) {
gdImageSetPixel(im, x1,y1, color);
}
@@ -1039,6 +1046,12 @@
 
/* Horizontal */
if (y1==y2) {
+   if (x2 < x1) {
+   t = x2;
+   x2 = x1;
+   x1 = t;
+   }
+
for (;x1 <= x2; x1++) {
gdImageSetPixel(im, x1,y1, color);
}

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2005-12-29 Thread Pierre-Alain Joye
pajoye  Fri Dec 30 01:19:33 2005 EDT

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  - add some basic optimisations, usefull when you draw many horizontal or 
vertical lines like in charts
  
  
http://cvs.php.net/viewcvs.cgi/php-src/ext/gd/libgd/gd.c?r1=1.91&r2=1.92&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.91 php-src/ext/gd/libgd/gd.c:1.92
--- php-src/ext/gd/libgd/gd.c:1.91  Fri Sep 30 20:58:41 2005
+++ php-src/ext/gd/libgd/gd.c   Fri Dec 30 01:19:32 2005
@@ -1029,6 +1029,22 @@
return;
}
 
+   /* Vertical */
+   if (x1==x2) {
+   for (;y1 <= y2; y1++) {
+   gdImageSetPixel(im, x1,y1, color);
+   }
+   return;
+   }
+
+   /* Horizontal */
+   if (y1==y2) {
+   for (;x1 <= x2; x1++) {
+   gdImageSetPixel(im, x1,y1, color);
+   }
+   return;
+   }
+
/* gdAntiAliased passed as color: set anti-aliased line (AAL) global 
vars. */
if (color == gdAntiAliased) {
im->AAL_x1 = x1;

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2005-09-30 Thread Pierre-Alain Joye
pajoye  Fri Sep 30 16:58:42 2005 EDT

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  - MFB: #33125, alpha emulation broken 
  
  
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gd.c?r1=1.90&r2=1.91&ty=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.90 php-src/ext/gd/libgd/gd.c:1.91
--- php-src/ext/gd/libgd/gd.c:1.90  Sat Jul 23 12:41:38 2005
+++ php-src/ext/gd/libgd/gd.c   Fri Sep 30 16:58:41 2005
@@ -2303,9 +2303,9 @@
dc = gdImageGetPixel(dst, tox, toy);
g = (0.29900f * gdImageRed(dst, dc)) + 
(0.58700f * gdImageGreen(dst, dc)) + (0.11400f * gdImageBlue(dst, dc));
 
-   ncR = (int)(gdImageRed (src, c) * (pct / 
100.0f) + gdImageRed(dst, dc) * g * ((100 - pct) / 100.0f));
-   ncG = (int)(gdImageGreen (src, c) * (pct / 
100.0f) + gdImageGreen(dst, dc) * g * ((100 - pct) / 100.0f));
-   ncB = (int)(gdImageBlue (src, c) * (pct / 
100.0f) + gdImageBlue(dst, dc) * g * ((100 - pct) / 100.0f));
+ncR = (int)(gdImageRed (src, c) * (pct / 
100.0f) + g * ((100 - pct) / 100.0));
+ncG = (int)(gdImageGreen (src, c) * (pct / 
100.0f) + g * ((100 - pct) / 100.0));
+ncB = (int)(gdImageBlue (src, c) * (pct / 
100.0f) + g * ((100 - pct) / 100.0));
 
/* First look for an exact match */
nc = gdImageColorExact(dst, ncR, ncG, ncB);

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2005-07-24 Thread Ilia Alshanetsky

MFH?

Ilia

--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2005-07-23 Thread Jani Taskinen


Don't forget a test for this bug..

--Jani


On Sat, 23 Jul 2005, Pierre-Alain Joye wrote:


pajoye  Sat Jul 23 12:41:42 2005 EDT

 Modified files:
   /php-src/ext/gd/libgdgd.c
 Log:
 - fix #33794 imagerotate rotates only CCW
   introduced by transparent color patch


http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gd.c?r1=1.89&r2=1.90&ty=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.89 php-src/ext/gd/libgd/gd.c:1.90
--- php-src/ext/gd/libgd/gd.c:1.89  Sun May  1 02:01:56 2005
+++ php-src/ext/gd/libgd/gd.c   Sat Jul 23 12:41:38 2005
@@ -2797,10 +2797,11 @@
a = gdImageAlpha(src,c);
c = gdTrueColorAlpha(r, g, b, a);
}
+
if (ignoretransparent && c == dst->transparent) 
{
-   gdImageSetPixel(dst, uY, (dst->sy - uX - 
1), dst->transparent);
+   gdImageSetPixel(dst, (dst->sx - uX - 1), 
(dst->sy - uY - 1), dst->transparent);
} else {
-   gdImageSetPixel(dst, uY, (dst->sy - uX 
- 1), c);
+   gdImageSetPixel(dst, (dst->sx - uX - 1), 
(dst->sy - uY - 1), c);
}
}
}
@@ -2839,10 +2840,11 @@
a = gdImageAlpha(src,c);
c = gdTrueColorAlpha(r, g, b, a);
}
+
if (ignoretransparent && c == dst->transparent) 
{
-   gdImageSetPixel(dst, uY, (dst->sy - uX - 
1), dst->transparent);
+   gdImageSetPixel(dst, (dst->sx - uY - 1), 
uX, dst->transparent);
} else {
-   gdImageSetPixel(dst, uY, (dst->sy - uX 
- 1), c);
+   gdImageSetPixel(dst, (dst->sx - uY - 
1), uX, c);
}
}
}




--
Donate @ http://pecl.php.net/wishlist.php/sniper

--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2005-07-23 Thread Pierre-Alain Joye
pajoye  Sat Jul 23 12:41:42 2005 EDT

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  - fix #33794 imagerotate rotates only CCW
introduced by transparent color patch
  
  
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gd.c?r1=1.89&r2=1.90&ty=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.89 php-src/ext/gd/libgd/gd.c:1.90
--- php-src/ext/gd/libgd/gd.c:1.89  Sun May  1 02:01:56 2005
+++ php-src/ext/gd/libgd/gd.c   Sat Jul 23 12:41:38 2005
@@ -2797,10 +2797,11 @@
a = gdImageAlpha(src,c);
c = gdTrueColorAlpha(r, g, b, a);
}
+
if (ignoretransparent && c == dst->transparent) 
{
-   gdImageSetPixel(dst, uY, (dst->sy - uX 
- 1), dst->transparent);
+   gdImageSetPixel(dst, (dst->sx - uX - 
1), (dst->sy - uY - 1), dst->transparent);
} else {
-   gdImageSetPixel(dst, uY, (dst->sy - uX 
- 1), c);
+   gdImageSetPixel(dst, (dst->sx - uX - 
1), (dst->sy - uY - 1), c);
}
}
}
@@ -2839,10 +2840,11 @@
a = gdImageAlpha(src,c);
c = gdTrueColorAlpha(r, g, b, a);
}
+
if (ignoretransparent && c == dst->transparent) 
{
-   gdImageSetPixel(dst, uY, (dst->sy - uX 
- 1), dst->transparent);
+   gdImageSetPixel(dst, (dst->sx - uY - 
1), uX, dst->transparent);
} else {
-   gdImageSetPixel(dst, uY, (dst->sy - uX 
- 1), c);
+   gdImageSetPixel(dst, (dst->sx - uY - 
1), uX, c);
}
}
}

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2005-04-30 Thread Pierre-Alain Joye
pajoye  Sun May  1 02:01:56 2005 EDT

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  - MFB: #32891, init old y positions to non possible values. -1 being used
if the center start a (x,0)
  
  
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gd.c?r1=1.88&r2=1.89&ty=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.88 php-src/ext/gd/libgd/gd.c:1.89
--- php-src/ext/gd/libgd/gd.c:1.88  Sat Apr 16 05:20:59 2005
+++ php-src/ext/gd/libgd/gd.c   Sun May  1 02:01:56 2005
@@ -1735,8 +1735,8 @@
rx = r << 1;
ry = 0;
x = a;
-   old_y2=-1;
-   old_y1=-1;
+   old_y2=-2;
+   old_y1=-2;
while (x > 0){
if (r > 0) {
my1++;my2--;


-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2005-04-16 Thread Rasmus Lerdorf
rasmus  Sat Apr 16 05:21:06 2005 EDT

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  I think this is a cleaner emboss filter.  Less fringing.
  
  
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gd.c?r1=1.87&r2=1.88&ty=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.87 php-src/ext/gd/libgd/gd.c:1.88
--- php-src/ext/gd/libgd/gd.c:1.87  Fri Apr 15 20:04:52 2005
+++ php-src/ext/gd/libgd/gd.c   Sat Apr 16 05:20:59 2005
@@ -3883,9 +3883,14 @@
 
 int gdImageEmboss(gdImagePtr im)
 {
+/*
float filter[3][3] ={{1.0,1.0,1.0},
{0.0,0.0,0.0},
{-1.0,-1.0,-1.0}};
+*/
+   float filter[3][3] ={{ 1.5, 0.0, 0.0},
+{ 0.0, 0.0, 0.0},
+{ 0.0, 0.0,-1.5}};
 
return gdImageConvolution(im, filter, 1, 127);
 }

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2005-04-15 Thread Rasmus Lerdorf
rasmus  Fri Apr 15 20:04:53 2005 EDT

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  The emboss and edge detection matrices are swapped
  
  
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gd.c?r1=1.86&r2=1.87&ty=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.86 php-src/ext/gd/libgd/gd.c:1.87
--- php-src/ext/gd/libgd/gd.c:1.86  Mon Mar 28 03:17:17 2005
+++ php-src/ext/gd/libgd/gd.c   Fri Apr 15 20:04:52 2005
@@ -3865,9 +3865,9 @@
 
 int gdImageEdgeDetectQuick(gdImagePtr src)
 {
-   float filter[3][3] ={{1.0,1.0,1.0},
-   {0.0,0.0,0.0},
-   {-1.0,-1.0,-1.0}};
+   float filter[3][3] ={{-1.0,0.0,-1.0},
+   {0.0,4.0,0.0},
+   {-1.0,0.0,-1.0}};
 
return gdImageConvolution(src, filter, 1, 127);
 }
@@ -3883,9 +3883,9 @@
 
 int gdImageEmboss(gdImagePtr im)
 {
-   float filter[3][3] ={{-1.0,0.0,-1.0},
-   {0.0,4.0,0.0},
-   {-1.0,0.0,-1.0}};
+   float filter[3][3] ={{1.0,1.0,1.0},
+   {0.0,0.0,0.0},
+   {-1.0,-1.0,-1.0}};
 
return gdImageConvolution(im, filter, 1, 127);
 }

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2005-03-28 Thread Pierre-Alain Joye
pajoye  Mon Mar 28 03:17:17 2005 EDT

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  - remove "debug" code
  
  
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gd.c?r1=1.85&r2=1.86&ty=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.85 php-src/ext/gd/libgd/gd.c:1.86
--- php-src/ext/gd/libgd/gd.c:1.85  Mon Mar 28 03:14:30 2005
+++ php-src/ext/gd/libgd/gd.c   Mon Mar 28 03:17:17 2005
@@ -2240,7 +2240,7 @@
int tox, toy;
int ncR, ncG, ncB;
toy = dstY;
-printf("srccpopy:%X", src->transparent);
+   
for (y = srcY; y < (srcY + h); y++) {
tox = dstX;
for (x = srcX; x < (srcX + w); x++) {

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2005-03-28 Thread Pierre-Alain Joye
pajoye  Mon Mar 28 03:14:31 2005 EDT

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  - MFB, imagerectangle draws 2x each corners (alpha channel uglyness)
  
  
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gd.c?r1=1.84&r2=1.85&ty=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.84 php-src/ext/gd/libgd/gd.c:1.85
--- php-src/ext/gd/libgd/gd.c:1.84  Sun Mar 27 18:43:52 2005
+++ php-src/ext/gd/libgd/gd.c   Mon Mar 28 03:14:30 2005
@@ -2029,24 +2029,71 @@
 {
int x1h = x1, x1v = x1, y1h = y1, y1v = y1, x2h = x2, x2v = x2, y2h = 
y2, y2v = y2;
int thick = im->thick;
+   int half1 = 1;
+   int t;
 
+   if (y2 < y1) {
+   t=y1;
+   y1 = y2;
+   y2 = t;
+
+   t = x1;
+   x1 = x2;
+   x2 = t;
+   }
+
+   x1h = x1; x1v = x1; y1h = y1; y1v = y1; x2h = x2; x2v = x2; y2h = y2; 
y2v = y2;
if (thick > 1) {
-   int half = thick / 2;
-   int half1 = thick - half;
+   int cx, cy, x1ul, y1ul, x2lr, y2lr;
+   int half = thick >> 1;
+   half1 = thick - half;
+   x1ul = x1 - half;
+   y1ul = y1 - half;
+   
+   x2lr = x2 + half;
+   y2lr = y2 + half;
 
-   if (y1 < y2) {
-   y1v = y1h - half;
-   y2v = y2h + half1 - 1;
-   } else {
-   y1v = y1h + half1 - 1;
-   y2v = y2h - half;
+   cy = y1ul + thick;
+   while (cy-- > y1ul) {
+   cx = x1ul - 1;
+   while (cx++ < x2lr) {
+   gdImageSetPixel(im, cx, cy, color);
+   }
+   }
+
+   cy = y2lr - thick;
+   while (cy++ < y2lr) {
+   cx = x1ul - 1;
+   while (cx++ < x2lr) {
+   gdImageSetPixel(im, cx, cy, color);
+   }
+   }
+
+   cy = y1ul + thick - 1;
+   while (cy++ < y2lr -thick) {
+   cx = x1ul - 1;
+   while (cx++ < x1ul + thick) {
+   gdImageSetPixel(im, cx, cy, color);
+   }
+   }
+
+   cy = y1ul + thick - 1;
+   while (cy++ < y2lr -thick) {
+   cx = x2lr - thick - 1;
+   while (cx++ < x2lr) {
+   gdImageSetPixel(im, cx, cy, color);
+   }
}
-   }
 
-   gdImageLine(im, x1h, y1h, x2h, y1h, color);
-   gdImageLine(im, x1h, y2h, x2h, y2h, color);
-   gdImageLine(im, x1v, y1v, x1v, y2v, color);
-   gdImageLine(im, x2v, y1v, x2v, y2v, color);
+   return;
+   } else {
+   y1v = y1h + 1;
+   y2v = y2h - 1;
+   gdImageLine(im, x1h, y1h, x2h, y1h, color);
+   gdImageLine(im, x1h, y2h, x2h, y2h, color);
+   gdImageLine(im, x1v, y1v, x1v, y2v, color);
+   gdImageLine(im, x2v, y1v, x2v, y2v, color);
+   }
 }
 
 void gdImageFilledRectangle (gdImagePtr im, int x1, int y1, int x2, int y2, 
int color)

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2004-11-17 Thread Pierre-Alain Joye
pajoye  Wed Nov 17 15:19:35 2004 EDT

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  - Really fix imagefill, part of my previous (old) fix was not applied
(blame me), bak the alphablending and restore it on exit
  
  
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gd.c?r1=1.82&r2=1.83&ty=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.82 php-src/ext/gd/libgd/gd.c:1.83
--- php-src/ext/gd/libgd/gd.c:1.82  Wed Nov 17 12:21:22 2004
+++ php-src/ext/gd/libgd/gd.c   Wed Nov 17 15:19:35 2004
@@ -1877,11 +1877,17 @@
int l, x1, x2, dy;
int oc;   /* old pixel value */
int wx2,wy2;
+
+   int alphablending_bak;
+
/* stack of filled segments */
/* struct seg stack[FILL_MAX],*sp = stack;; */
struct seg *stack;
struct seg *sp;
 
+   alphablending_bak = im->alphaBlendingFlag;  
+   im->alphaBlendingFlag = 0;
+
if (nc==gdTiled){
_gdImageFillTiled(im,x,y,nc);
return;
@@ -1932,6 +1938,7 @@
} while (x<=x2);
}
efree(stack);
+   im->alphaBlendingFlag = alphablending_bak;  
 }
 
 void _gdImageFillTiled(gdImagePtr im, int x, int y, int nc)

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2004-11-17 Thread Pierre-Alain Joye
pajoye  Wed Nov 17 12:21:23 2004 EDT

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  - MFB: fix #30739, imagefill did not set back alphablending mode
  
  
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gd.c?r1=1.81&r2=1.82&ty=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.81 php-src/ext/gd/libgd/gd.c:1.82
--- php-src/ext/gd/libgd/gd.c:1.81  Mon May 24 15:52:28 2004
+++ php-src/ext/gd/libgd/gd.c   Wed Nov 17 12:21:22 2004
@@ -1889,7 +1889,10 @@
 
wx2=im->sx;wy2=im->sy;
oc = gdImageGetPixel(im, x, y);
-   if (oc==nc || x<0 || x>wx2 || y<0 || y>wy2) return;
+   if (oc==nc || x<0 || x>wx2 || y<0 || y>wy2) {
+   im->alphaBlendingFlag = alphablending_bak;  
+   return;
+   }
 
stack = (struct seg *)safe_emalloc(sizeof(struct seg), 
((int)(im->sy*im->sx)/4), 1);
sp = stack;

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2004-05-24 Thread Pierre-Alain Joye
pajoye  Mon May 24 15:52:28 2004 EDT

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  - Fix #28506, negative angle returns "random arcs"
while (angle < 0) angle += 2*M_PI is used now
  
  
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gd.c?r1=1.80&r2=1.81&ty=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.80 php-src/ext/gd/libgd/gd.c:1.81
--- php-src/ext/gd/libgd/gd.c:1.80  Sun May  9 14:25:33 2004
+++ php-src/ext/gd/libgd/gd.c   Mon May 24 15:52:28 2004
@@ -1605,9 +1605,14 @@
int lx = 0, ly = 0;
int fx = 0, fy = 0;
 
+   while (s<0) {
+   s += 360;
+   }
+
while (e < s) {
e += 360;
}
+
for (i = s; i <= e; i++) {
int x, y;
x = ((long) gdCosT[i % 360] * (long) w / (2 * 1024)) + cx;

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2004-05-09 Thread Ilia Alshanetsky
iliaa   Sun May  9 14:25:33 2004 EDT

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  Fixed bug #28304 (Missing bounds check inside imagefilter()).
  
  
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gd.c?r1=1.79&r2=1.80&ty=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.79 php-src/ext/gd/libgd/gd.c:1.80
--- php-src/ext/gd/libgd/gd.c:1.79  Tue Apr 27 10:59:07 2004
+++ php-src/ext/gd/libgd/gd.c   Sun May  9 14:25:33 2004
@@ -3607,8 +3607,9 @@
new_a = gdImageAlpha(srcback, pxl);
 
for (j=0; j<3; j++) {
+   int yv = MIN(MAX(y - 1 + j, 0), src->sy - 1);
for (i=0; i<3; i++) {
-   pxl = f(srcback, x-(3>>1)+i, y-(3>>1)+j);
+   pxl = f(srcback, MIN(MAX(x - 1 + i, 0), 
src->sx - 1), yv);
new_r += (float)gdImageRed(srcback, pxl) * 
filter[j][i];
new_g += (float)gdImageGreen(srcback, pxl) * 
filter[j][i];
new_b += (float)gdImageBlue(srcback, pxl) * 
filter[j][i];

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2004-04-27 Thread Ilia Alshanetsky
iliaa   Tue Apr 27 10:59:09 2004 EDT

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  Fixed bug #28184 (C++ comments in GD library sources).
  
  
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gd.c?r1=1.78&r2=1.79&ty=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.78 php-src/ext/gd/libgd/gd.c:1.79
--- php-src/ext/gd/libgd/gd.c:1.78  Sun Apr 25 15:45:02 2004
+++ php-src/ext/gd/libgd/gd.c   Tue Apr 27 10:59:07 2004
@@ -1873,7 +1873,7 @@
int oc;   /* old pixel value */
int wx2,wy2;
/* stack of filled segments */
-   //struct seg stack[FILL_MAX],*sp = stack;;
+   /* struct seg stack[FILL_MAX],*sp = stack;; */
struct seg *stack;
struct seg *sp;
 

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c /ext/gd/tests bug28147.phpt

2004-04-25 Thread Derick Rethans
derick  Sun Apr 25 15:45:04 2004 EDT

  Modified files:  
/php-src/ext/gd/tests   bug28147.phpt 
/php-src/ext/gd/libgd   gd.c 
  Log:
  - MFB: Fixed bug #28147 (Crash with drawing anti-alised lines)
  
  
http://cvs.php.net/diff.php/php-src/ext/gd/tests/bug28147.phpt?r1=1.1&r2=1.2&ty=u
Index: php-src/ext/gd/tests/bug28147.phpt
diff -u /dev/null php-src/ext/gd/tests/bug28147.phpt:1.2
--- /dev/null   Sun Apr 25 15:45:02 2004
+++ php-src/ext/gd/tests/bug28147.phpt  Sun Apr 25 15:45:02 2004
@@ -0,0 +1,27 @@
+--TEST--
+Bug #28147 (Crash with anti-aliased line)
+--SKIPIF--
+
+--FILE--
+
+--EXPECT--
+Alive
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gd.c?r1=1.77&r2=1.78&ty=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.77 php-src/ext/gd/libgd/gd.c:1.78
--- php-src/ext/gd/libgd/gd.c:1.77  Mon Mar 29 13:20:33 2004
+++ php-src/ext/gd/libgd/gd.c   Sun Apr 25 15:45:02 2004
@@ -1288,7 +1288,9 @@
inc = (dy * 65536) / dx;
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);
+   if ((y >> 16) + 1 < im->sy) {
+   gdImageSetAAPixelColor(im, x >> 16, (y >> 16) + 1,col, 
(~y >> 8) & 0xFF);
+   }
x += (1 << 16);
y += inc;
}
@@ -1308,7 +1310,9 @@
inc = (dx * 65536) / dy;
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);
+   if ((x >> 16) + 1 < im->sx) {
+   gdImageSetAAPixelColor(im, (x >> 16) + 1, (y >> 
16),col, (~x >> 8) & 0xFF);
+   }
x += inc;
y += (1<<16);
}

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2004-03-22 Thread Ilia Alshanetsky
iliaa   Mon Mar 22 12:27:19 2004 EDT

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  Revert patch to imagefillborder.
  
  
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gd.c?r1=1.75&r2=1.76&ty=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.75 php-src/ext/gd/libgd/gd.c:1.76
--- php-src/ext/gd/libgd/gd.c:1.75  Sun Mar 21 13:02:19 2004
+++ php-src/ext/gd/libgd/gd.c   Mon Mar 22 12:26:03 2004
@@ -1757,7 +1757,10 @@
 
 void gdImageFillToBorder (gdImagePtr im, int x, int y, int border, int color)
 {
-   int i, j, restoreAlphaBleding = 0;
+   int lastBorder;
+   /* Seek left */
+   int leftLimit = -1, rightLimit;
+   int i, restoreAlphaBleding=0;
 
if (border < 0) {
/* Refuse to fill to a non-solid border */
@@ -1776,16 +1779,61 @@
y = im->sy - 1;
}
 
-   for (i = x; i < im->sx; i++) {
-   for (j = y; j < im->sy; j++) {
-   int c = gdImageGetPixel(im, i, j);
-   if (c == border || c == color) {
-   continue;
+   for (i = x; i >= 0; i--) {
+   if (gdImageGetPixel(im, i, y) == border) {
+   break;
+   }
+   gdImageSetPixel(im, i, y, color);
+   leftLimit = i;
+   }
+   if (leftLimit == -1) {
+   if (restoreAlphaBleding) {
+   im->alphaBlendingFlag = 1;
+   }
+   return;
+   }
+   /* Seek right */
+   rightLimit = x;
+   for (i = (x + 1); i < im->sx; i++) {
+   if (gdImageGetPixel(im, i, y) == border) {
+   break;
+   }
+   gdImageSetPixel(im, i, y, color);
+   rightLimit = i;
+   }
+   /* Look at lines above and below and start paints */
+   /* Above */
+   if (y > 0) {
+   lastBorder = 1;
+   for (i = leftLimit; i <= rightLimit; i++) {
+   int c = gdImageGetPixel(im, i, y - 1);
+   if (lastBorder) {
+   if ((c != border) && (c != color)) {
+   gdImageFillToBorder(im, i, y - 1, border, 
color);
+   lastBorder = 0;
+   }
+   } else if ((c == border) || (c == color)) {
+   lastBorder = 1;
}
-   gdImageSetPixel(im, i, j, color);
}
}
 
+   /* Below */
+   if (y < ((im->sy) - 1)) {
+   lastBorder = 1;
+   for (i = leftLimit; i <= rightLimit; i++) {
+   int c = gdImageGetPixel(im, i, y + 1);
+
+   if (lastBorder) {
+   if ((c != border) && (c != color)) {
+   gdImageFillToBorder(im, i, y + 1, border, 
color);
+   lastBorder = 0;
+   }
+   } else if ((c == border) || (c == color)) {
+   lastBorder = 1;
+   }
+   }
+   }
if (restoreAlphaBleding) {
im->alphaBlendingFlag = 1;
}

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2004-03-21 Thread Ilia Alshanetsky
iliaa   Sun Mar 21 13:03:35 2004 EDT

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  Fixed a possible crash inside libgd's gdImageFillToBorder() due to a stack
  overflow.
  
  
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gd.c?r1=1.74&r2=1.75&ty=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.74 php-src/ext/gd/libgd/gd.c:1.75
--- php-src/ext/gd/libgd/gd.c:1.74  Wed Mar 17 12:07:31 2004
+++ php-src/ext/gd/libgd/gd.c   Sun Mar 21 13:02:19 2004
@@ -1757,10 +1757,7 @@
 
 void gdImageFillToBorder (gdImagePtr im, int x, int y, int border, int color)
 {
-   int lastBorder;
-   /* Seek left */
-   int leftLimit = -1, rightLimit;
-   int i, restoreAlphaBleding=0;
+   int i, j, restoreAlphaBleding = 0;
 
if (border < 0) {
/* Refuse to fill to a non-solid border */
@@ -1779,61 +1776,16 @@
y = im->sy - 1;
}
 
-   for (i = x; i >= 0; i--) {
-   if (gdImageGetPixel(im, i, y) == border) {
-   break;
-   }
-   gdImageSetPixel(im, i, y, color);
-   leftLimit = i;
-   }
-   if (leftLimit == -1) {
-   if (restoreAlphaBleding) {
-   im->alphaBlendingFlag = 1;
-   }
-   return;
-   }
-   /* Seek right */
-   rightLimit = x;
-   for (i = (x + 1); i < im->sx; i++) {
-   if (gdImageGetPixel(im, i, y) == border) {
-   break;
-   }
-   gdImageSetPixel(im, i, y, color);
-   rightLimit = i;
-   }
-   /* Look at lines above and below and start paints */
-   /* Above */
-   if (y > 0) {
-   lastBorder = 1;
-   for (i = leftLimit; i <= rightLimit; i++) {
-   int c = gdImageGetPixel(im, i, y - 1);
-   if (lastBorder) {
-   if ((c != border) && (c != color)) {
-   gdImageFillToBorder(im, i, y - 1, border, 
color);
-   lastBorder = 0;
-   }
-   } else if ((c == border) || (c == color)) {
-   lastBorder = 1;
+   for (i = x; i < im->sx; i++) {
+   for (j = y; j < im->sy; j++) {
+   int c = gdImageGetPixel(im, i, j);
+   if (c == border || c == color) {
+   continue;
}
+   gdImageSetPixel(im, i, j, color);
}
}
 
-   /* Below */
-   if (y < ((im->sy) - 1)) {
-   lastBorder = 1;
-   for (i = leftLimit; i <= rightLimit; i++) {
-   int c = gdImageGetPixel(im, i, y + 1);
-
-   if (lastBorder) {
-   if ((c != border) && (c != color)) {
-   gdImageFillToBorder(im, i, y + 1, border, 
color);
-   lastBorder = 0;
-   }
-   } else if ((c == border) || (c == color)) {
-   lastBorder = 1;
-   }
-   }
-   }
if (restoreAlphaBleding) {
im->alphaBlendingFlag = 1;
}

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2004-03-17 Thread Pierre-Alain Joye
pajoye  Wed Mar 17 12:07:32 2004 EDT

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  - Fix crash when an invalid color index is used with imagecolortransparent
  
  
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gd.c?r1=1.73&r2=1.74&ty=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.73 php-src/ext/gd/libgd/gd.c:1.74
--- php-src/ext/gd/libgd/gd.c:1.73  Sat Mar 13 18:21:25 2004
+++ php-src/ext/gd/libgd/gd.c   Wed Mar 17 12:07:31 2004
@@ -569,7 +569,7 @@
if (im->transparent != -1) {
im->alpha[im->transparent] = gdAlphaOpaque;
}
-   if (color > -1 && color<=gdMaxColors) {
+   if (color > -1 && colorcolorsTotal && color<=gdMaxColors) {
im->alpha[color] = gdAlphaTransparent;
} else {
return;

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2004-03-13 Thread Pierre-Alain Joye
pajoye  Sat Mar 13 18:21:27 2004 EDT

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  - restore too the alphablending if we do not reach the end of the function
Notice: This function still crashes (stack overflow), to reproduce it 
see bug27582_2.phpt
  
  
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gd.c?r1=1.72&r2=1.73&ty=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.72 php-src/ext/gd/libgd/gd.c:1.73
--- php-src/ext/gd/libgd/gd.c:1.72  Sat Mar 13 13:28:19 2004
+++ php-src/ext/gd/libgd/gd.c   Sat Mar 13 18:21:25 2004
@@ -1787,6 +1787,9 @@
leftLimit = i;
}
if (leftLimit == -1) {
+   if (restoreAlphaBleding) {
+   im->alphaBlendingFlag = 1;
+   }
return;
}
/* Seek right */
@@ -1834,7 +1837,6 @@
if (restoreAlphaBleding) {
im->alphaBlendingFlag = 1;
}
-
 }
 
 /*

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2004-03-13 Thread Pierre-Alain Joye
pajoye  Sat Mar 13 13:28:20 2004 EDT

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  - fix #27582 (http://bugs.php.net/bug.php?id=27582)
The problem was that the colors were changed endlessly, blending over
and over. An endless loop and recursive calls filled the stack=>segfault
  
  
http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gd.c?r1=1.71&r2=1.72&ty=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.71 php-src/ext/gd/libgd/gd.c:1.72
--- php-src/ext/gd/libgd/gd.c:1.71  Tue Mar  2 16:56:30 2004
+++ php-src/ext/gd/libgd/gd.c   Sat Mar 13 13:28:19 2004
@@ -1760,13 +1760,18 @@
int lastBorder;
/* Seek left */
int leftLimit = -1, rightLimit;
-   int i;
+   int i, restoreAlphaBleding=0;
 
if (border < 0) {
/* Refuse to fill to a non-solid border */
return;
}
 
+   if (im->alphaBlendingFlag) {
+   restoreAlphaBleding = 1;
+   im->alphaBlendingFlag = 0;
+   }
+
if (x >= im->sx) {
x = im->sx - 1;
}
@@ -1809,6 +1814,7 @@
}
}
}
+
/* Below */
if (y < ((im->sy) - 1)) {
lastBorder = 1;
@@ -1825,8 +1831,11 @@
}
}
}
-}
+   if (restoreAlphaBleding) {
+   im->alphaBlendingFlag = 1;
+   }
 
+}
 
 /*
  * set the pixel at (x,y) and its 4-connected neighbors

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2004-01-17 Thread Tim Toohey
ttoohey Sat Jan 17 04:19:16 2004 EDT

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  (gdImageSetPixel) Tidied 'normal' blending effect
  # libgd-2.0.12 fixed the problem with alpha-blending on semi-transparent backgrounds 
so
  # gdFullAlphaBlend() and friends are no longer needed
  
  
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.69 php-src/ext/gd/libgd/gd.c:1.70
--- php-src/ext/gd/libgd/gd.c:1.69  Sun Dec 28 15:11:08 2003
+++ php-src/ext/gd/libgd/gd.c   Sat Jan 17 04:19:14 2004
@@ -90,9 +90,7 @@
 static void gdImageBrushApply(gdImagePtr im, int x, int y);
 static void gdImageTileApply(gdImagePtr im, int x, int y);
 static void gdImageAntiAliasedApply(gdImagePtr im, int x, int y);
-static int gdFullAlphaBlend(int dst, int src);
 static int gdLayerOverlay(int dst, int src);
-static int gdAlphaBlendColor(int b1, int b2, int a1, int a2);
 static int gdAlphaOverlayColor(int src, int dst, int max);
 int gdImageGetTrueColorPixel(gdImagePtr im, int x, int y);
 
@@ -737,7 +735,7 @@
im->tpixels[y][x] = 
gdAlphaBlend(im->tpixels[y][x], color);
break;
case gdEffectNormal:
-   im->tpixels[y][x] = 
gdFullAlphaBlend(im->tpixels[y][x], color);
+   im->tpixels[y][x] = 
gdAlphaBlend(im->tpixels[y][x], color);
break;
case gdEffectOverlay :
im->tpixels[y][x] = 
gdLayerOverlay(im->tpixels[y][x], color);
@@ -3249,44 +3247,6 @@
im->saveAlphaFlag = saveAlphaArg;
 }
 
-static int gdFullAlphaBlend (int dst, int src)
-{
-   int a1, a2;
-   a1 = gdAlphaTransparent - gdTrueColorGetAlpha(src);
-   a2 = gdAlphaTransparent - gdTrueColorGetAlpha(dst);
-
-   return ( ((gdAlphaTransparent - ((a1+a2)-(a1*a2/gdAlphaMax))) << 24) +
-   (gdAlphaBlendColor( gdTrueColorGetRed(src), gdTrueColorGetRed(dst), 
a1, a2 ) << 16) +
-   (gdAlphaBlendColor( gdTrueColorGetGreen(src), 
gdTrueColorGetGreen(dst), a1, a2 ) << 8) +
-   (gdAlphaBlendColor( gdTrueColorGetBlue(src), gdTrueColorGetBlue(dst), 
a1, a2 ))
-   );
-}
-
-static int gdAlphaBlendColor( int b1, int b2, int a1, int a2 )
-{
-   int c;
-   int w;
-
-   /* deal with special cases */
-
-   if( (gdAlphaMax == a1) || (0 == a2) ) {
-   /* the back pixel can't be seen */
-   return b1;
-   } else if(0 == a1) {
-   /* the front pixel can't be seen */
-   return b2;
-   } else if(gdAlphaMax == a2) {
-   /* the back pixel is opaque */
-   return ( a1 * b1 + ( gdAlphaMax - a1 ) * b2 ) / gdAlphaMax;
-   }
-
-   /* the general case */
-   w = ( a1 * ( gdAlphaMax - a2 ) / ( gdAlphaMax - a1 * a2 / gdAlphaMax ) * b1 + \
- a2 * ( gdAlphaMax - a1 ) / ( gdAlphaMax - a1 * a2 / gdAlphaMax ) * 
b2 ) / gdAlphaMax;
-   c = (a2 * b2  +  ( gdAlphaMax - a2 ) * w ) / gdAlphaMax;
-   return ( a1 * b1 + ( gdAlphaMax - a1 ) * c ) / gdAlphaMax;
-}
-
 static int gdLayerOverlay (int dst, int src)
 {
int a1, a2;

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2003-11-03 Thread Ilia Alshanetsky
iliaa   Mon Nov  3 20:55:51 2003 EDT

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  Fixed bug #26097 (gdImageColorClosestAlpha() returns incorrect results).
  
  
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.66 php-src/ext/gd/libgd/gd.c:1.67
--- php-src/ext/gd/libgd/gd.c:1.66  Mon Sep  8 16:59:36 2003
+++ php-src/ext/gd/libgd/gd.c   Mon Nov  3 20:55:50 2003
@@ -255,7 +255,7 @@
gd = im->green[i] - g;
bd = im->blue[i] - b;
/* gd 2.02: whoops, was - b (thanks to David Marwood) */
-   ad = im->blue[i] - a;
+   ad = im->alpha[i] - a;
dist = rd * rd + gd * gd + bd * bd + ad * ad;
if (first || (dist < mindist)) {
mindist = dist;

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2003-09-08 Thread Moriyoshi Koizumi
[EMAIL PROTECTED] (Marcus Börger) wrote:

> Hello Moriyoshi,
> 
> Monday, September 8, 2003, 10:59:36 PM, you wrote:
> 
> > moriyoshi   Mon Sep  8 16:59:36 2003 EDT
> 
> >   Modified files:  
> > /php-src/ext/gd/libgd   gd.c 
> >   Log:
> >   Fix build in VC++7.
> >   # The line didn't reflect the above comment, helly :)
>   
> 
> What have i got to do with that? I was not able to build PHP with
> MSVC.NET so farand i never changed anything regarding it?

Hmm, the annotation says you are the most likely culprit :)

$ cvs annotate -r 1.9 ext/gd/libgd/gd.c | grep "helly"

Anyway, I'm not trying to blame anyone.

Moriyoshi

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2003-09-08 Thread Marcus Börger
Hello Moriyoshi,

Monday, September 8, 2003, 10:59:36 PM, you wrote:

> moriyoshi Mon Sep  8 16:59:36 2003 EDT

>   Modified files:  
> /php-src/ext/gd/libgd gd.c 
>   Log:
>   Fix build in VC++7.
>   # The line didn't reflect the above comment, helly :)
  

What have i got to do with that? I was not able to build PHP with
MSVC.NET so farand i never changed anything regarding it?

-- 
Best regards,
 Marcusmailto:[EMAIL PROTECTED]

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2003-09-08 Thread Moriyoshi Koizumi
moriyoshi   Mon Sep  8 16:59:36 2003 EDT

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  Fix build in VC++7.
  # The line didn't reflect the above comment, helly :)
  
  
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.65 php-src/ext/gd/libgd/gd.c:1.66
--- php-src/ext/gd/libgd/gd.c:1.65  Mon Aug 11 20:55:57 2003
+++ php-src/ext/gd/libgd/gd.c   Mon Sep  8 16:59:36 2003
@@ -9,8 +9,8 @@
 
 #ifdef _MSC_VER
 # if _MSC_VER >= 1300
-/* in MSVC.NET the these are available but only for __cplusplus and not 
_MSC_EXTENSIONS */
-#  ifdef _MSC_EXTENSIONS
+/* in MSVC.NET these are available but only for __cplusplus and not _MSC_EXTENSIONS */
+#  if !defined(_MSC_EXTENSIONS) && defined(__cplusplus)
 #   define HAVE_FABSF 1
 extern float fabsf(float x);
 #   define HAVE_FLOORF 1

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2003-08-11 Thread Marcus Boerger
helly   Sun Aug 10 16:13:38 2003 EDT

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  Nuke unused vars
  
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.63 php-src/ext/gd/libgd/gd.c:1.64
--- php-src/ext/gd/libgd/gd.c:1.63  Wed Jul 30 13:34:11 2003
+++ php-src/ext/gd/libgd/gd.c   Sun Aug 10 16:13:38 2003
@@ -2878,7 +2878,7 @@
 {
gdImagePtr pMidImg;
gdImagePtr rotatedImg;
-   int r,g,b,a;
+
if (src == NULL) {
return NULL;
}



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2003-07-30 Thread Ilia Alshanetsky
iliaa   Wed Jul 30 13:34:11 2003 EDT

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  Fixed bug #23792 (8 bit graphics don't rotate properly) 
  Patch by: [EMAIL PROTECTED]
  
  
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.62 php-src/ext/gd/libgd/gd.c:1.63
--- php-src/ext/gd/libgd/gd.c:1.62  Tue Jul 22 20:23:21 2003
+++ php-src/ext/gd/libgd/gd.c   Wed Jul 30 13:34:11 2003
@@ -2475,7 +2475,7 @@
f = gdImageGetTrueColorPixel;
} else {
pxlOldLeft = clrBack;
-   clrBackR = gdImageRed(src, clrBack); 
+   clrBackR = gdImageRed(src, clrBack);
clrBackG = gdImageGreen(src, clrBack);
clrBackB = gdImageBlue(src, clrBack);
clrBackA = gdImageAlpha(src, clrBack);
@@ -2500,30 +2500,30 @@
a = (int)(gdImageAlpha(src,pxlSrc) * dWeight);
 
pxlLeft = gdImageColorAllocateAlpha(src, r, g, b, a);
-   
+
if (pxlLeft == -1) {
pxlLeft = gdImageColorClosestAlpha(src, r, g, b, a);
}
-   
+
r = gdImageRed(src,pxlSrc) - (gdImageRed(src,pxlLeft) - 
gdImageRed(src,pxlOldLeft));
g = gdImageGreen(src,pxlSrc) - (gdImageGreen(src,pxlLeft) - 
gdImageGreen(src,pxlOldLeft));
b = gdImageBlue(src,pxlSrc) - (gdImageBlue(src,pxlLeft) - 
gdImageBlue(src,pxlOldLeft));
a = gdImageAlpha(src,pxlSrc) - (gdImageAlpha(src,pxlLeft) - 
gdImageAlpha(src,pxlOldLeft));
 
-   if (r>255) {
-   r = 255;
-   }
-   
+if (r>255) {
+   r = 255;
+}
+
if (g>255) {
g = 255;
-   }   
-   
-   if(b>255) {
-   b = 255;
-   }
-   
+   }
+
+   if (b>255) {
+   b = 255;
+   }
+
if (a>127) {
-   b = 127;
+   a = 127;
}
 
pxlSrc = gdImageColorAllocateAlpha(dst, r, g, b, a);
@@ -2540,7 +2540,7 @@
}
 
i += iOffset;
-   
+
if (i < dst->sx) {
gdImageSetPixel (dst, i, uRow, pxlLeft);
}
@@ -2567,46 +2567,50 @@
f = gdImageGetPixel;
}
 
-   for (i = 0; isy; i++) {
pxlSrc = f (src, uCol, i);
iYPos = i + iOffset;
 
-   r = (int)(gdImageRed(src,pxlSrc) * dWeight);
-   g = (int)(gdImageGreen(src,pxlSrc) * dWeight);
-   b = (int)(gdImageBlue(src,pxlSrc) * dWeight);
-   a = (int)(gdImageAlpha(src,pxlSrc) * dWeight);
-   
+   r = (int)((double)gdImageRed(src,pxlSrc) * dWeight);
+   g = (int)((double)gdImageGreen(src,pxlSrc) * dWeight);
+   b = (int)((double)gdImageBlue(src,pxlSrc) * dWeight);
+   a = (int)((double)gdImageAlpha(src,pxlSrc) * dWeight);
+
pxlLeft = gdImageColorAllocateAlpha(src, r, g, b, a);
-   
+
if (pxlLeft == -1) {
pxlLeft = gdImageColorClosestAlpha(src, r, g, b, a);
}
 
-   r = gdImageRed(src,pxlSrc) - (gdImageRed(src,pxlLeft) - 
gdImageRed(src,pxlOldLeft));
+   r = gdImageRed(src,pxlSrc) - (gdImageRed(src,pxlLeft) - 
gdImageRed(src,pxlOldLeft));
g = gdImageGreen(src,pxlSrc) - (gdImageGreen(src,pxlLeft) - 
gdImageGreen(src,pxlOldLeft));
b = gdImageBlue(src,pxlSrc) - (gdImageBlue(src,pxlLeft) - 
gdImageBlue(src,pxlOldLeft));
a = gdImageAlpha(src,pxlSrc) - (gdImageAlpha(src,pxlLeft) - 
gdImageAlpha(src,pxlOldLeft));
-   
+
if (r>255) {
r = 255;
-   }
-   
+   }
+
if (g>255) {
g = 255;
-   }   
-   
-   if(b>255) {
-   b = 255;
-   }
-   
+   }
+
+   if (b>255) {
+   b = 255;
+   }
+
if (a>127) {
-   b = 127;
+   a = 127;
}
 
pxlSrc = gdImageColorAllocateAlpha(dst, r, g, b, a);
@@ -2618,7 +2622,7 @@
if ((iYPos >= 0) && (iYPos < dst->sy)) {
gdImageSetPixel (dst, uCol, iYPos, pxlSrc);
}
-   
+
pxlOldLeft = pxlLeft;
}
 
@@ -2651,7 +2655,7 @@
 
if (dst != NULL) {
gdImagePaletteCopy (dst, src);
-   
+
for (uY = 0; uYsy; uY++) {
for (uX = 0; uXsx; uX++) {
c = f (src, uX, uY);
@@ -2666,7 +2670

[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2003-07-22 Thread Pierre-Alain Joye
pajoye  Tue Jul 22 20:08:57 2003 EDT

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  - Fix #bug24594
Rewrite the imagefill function (non recursive, uses of connected points
algorithm)
  
  
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.60 php-src/ext/gd/libgd/gd.c:1.61
--- php-src/ext/gd/libgd/gd.c:1.60  Wed Jul  9 20:09:23 2003
+++ php-src/ext/gd/libgd/gd.c   Tue Jul 22 20:08:57 2003
@@ -868,6 +868,36 @@
}
 }
 
+
+static int gdImageTileGet (gdImagePtr im, int x, int y)
+{
+   int srcx, srcy;
+   int tileColor,p;
+   if (!im->tile) {
+   return -1;
+   }
+   srcx = x % gdImageSX(im->tile);
+   srcy = y % gdImageSY(im->tile);
+   p = gdImageGetPixel(im->tile, srcx, srcy);
+
+   if (im->trueColor) {
+   if (im->tile->trueColor) {
+   tileColor = p;
+   } else {
+   tileColor = gdTrueColorAlpha( gdImageRed(im->tile,p), 
gdImageGreen(im->tile,p), gdImageBlue (im->tile,p), gdImageAlpha (im->tile,p));
+   }
+   } else {
+   if (im->tile->trueColor) {
+   tileColor = gdImageColorResolveAlpha(im, gdTrueColorGetRed 
(p), gdTrueColorGetGreen (p), gdTrueColorGetBlue (p), gdTrueColorGetAlpha (p));
+   } else {
+   tileColor = p;
+   tileColor = gdImageColorResolveAlpha(im, gdImageRed 
(im->tile,p), gdImageGreen (im->tile,p), gdImageBlue (im->tile,p), gdImageAlpha 
(im->tile,p));
+   }
+   }
+   return tileColor;
+}
+
+
 static void gdImageAntiAliasedApply (gdImagePtr im, int px, int py)
 {
float p_dist, p_alpha;
@@ -1799,106 +1829,171 @@
}
 }
 
-void gdImageFill (gdImagePtr im, int x, int y, int color)
-{
-   int lastBorder;
-   int old;
-   int leftLimit, rightLimit;
-   int i;
-  
-   if (x >= im->sx) {
-   x = im->sx - 1;
-   }
-  
-   if (y >= im->sy) {
-   y = im->sy - 1;
+
+/*
+ * set the pixel at (x,y) and its 4-connected neighbors
+ * with the same pixel value to the new pixel value nc (new color).
+ * A 4-connected neighbor:  pixel above, below, left, or right of a pixel.
+ * ideas from comp.graphics discussions.
+ * For tiled fill, the use of a flag buffer is mandatory. As the tile image can
+ * contain the same color as the color to fill. To do not bloat normal filling
+ * code I added a 2nd private function.
+ */
+
+/* horizontal segment of scan line y */
+struct seg {int y, xl, xr, dy;};
+
+/* max depth of stack */
+#define FILL_MAX 120
+#define FILL_PUSH(Y, XL, XR, DY) \
+if (sp=0 && Y+(DY)y = Y; sp->xl = XL; sp->xr = XR; sp->dy = DY; sp++;}
+
+#define FILL_POP(Y, XL, XR, DY) \
+{sp--; Y = sp->y+(DY = sp->dy); XL = sp->xl; XR = sp->xr;}
+
+void _gdImageFillTiled(gdImagePtr im, int x, int y, int nc);
+
+void gdImageFill(gdImagePtr im, int x, int y, int nc)
+{
+   int l, x1, x2, dy;
+   int oc;   /* old pixel value */
+   int wx2,wy2;
+   /* stack of filled segments */
+   //struct seg stack[FILL_MAX],*sp = stack;;
+   struct seg *stack;
+   struct seg *sp;
+
+   if (nc==gdTiled){
+   _gdImageFillTiled(im,x,y,nc);
+   return;
}
-  
-   old = gdImageGetPixel(im, x, y);
-   if (color == gdTiled) {
-   /* Tile fill -- got to watch out! */
-   int p, tileColor;
-   int srcx, srcy;
-   if (!im->tile) {
-   return;
-   }
-   /* Refuse to flood-fill with a transparent pattern I can't do it 
without allocating another image */
-   if (gdImageGetTransparent(im->tile) != (-1)) {
-   return;
-   }
-   srcx = x % gdImageSX(im->tile);
-   srcy = y % gdImageSY(im->tile);
-   p = gdImageGetPixel(im->tile, srcx, srcy);
-   if (im->trueColor) {
-   tileColor = p;
-   } else {
-   if (im->tile->trueColor) {
-   tileColor = gdImageColorResolveAlpha(im, 
gdTrueColorGetRed (p), gdTrueColorGetGreen (p), gdTrueColorGetBlue (p), 
gdTrueColorGetAlpha (p));
-   } else {
-   tileColor = im->tileColorMap[p];
-   }
-   }
-   if (old == tileColor) {
-   /* Nothing to be done */
-   return;
+
+   stack = (struct seg *)emalloc(sizeof(struct seg) * ((int)(im->sy*im->sx)/4)+1);
+   sp = stack;
+
+   wx2=im->sx;wy2=im->sy;
+   oc = gdImageGetPixel(im, x, y);
+   if (oc==nc || x<0 || x>wx2 || y<0 || y>wy2) return;
+   /* required! */
+   FILL_PUSH(y,x,x,1);
+   /* seed segment (popped 1st) */
+   FILL_PUSH(y+1, x, x, -1);
+   while (sp>stack) {
+  

[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2003-07-22 Thread Pierre-Alain Joye
pajoye  Tue Jul 22 20:23:21 2003 EDT

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  - Fix leak when no fill is done (ilia)
  
  
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.61 php-src/ext/gd/libgd/gd.c:1.62
--- php-src/ext/gd/libgd/gd.c:1.61  Tue Jul 22 20:08:57 2003
+++ php-src/ext/gd/libgd/gd.c   Tue Jul 22 20:23:21 2003
@@ -1869,12 +1869,13 @@
return;
}
 
-   stack = (struct seg *)emalloc(sizeof(struct seg) * ((int)(im->sy*im->sx)/4)+1);
-   sp = stack;
-
wx2=im->sx;wy2=im->sy;
oc = gdImageGetPixel(im, x, y);
if (oc==nc || x<0 || x>wx2 || y<0 || y>wy2) return;
+
+   stack = (struct seg *)emalloc(sizeof(struct seg) * ((int)(im->sy*im->sx)/4)+1);
+   sp = stack;
+
/* required! */
FILL_PUSH(y,x,x,1);
/* seed segment (popped 1st) */



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2003-07-09 Thread Pierre-Alain Joye
pajoye  Wed Jul  9 20:09:24 2003 EDT

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  - wrong patch applied for #23792, fixed
  
  
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.59 php-src/ext/gd/libgd/gd.c:1.60
--- php-src/ext/gd/libgd/gd.c:1.59  Wed Jul  9 06:36:07 2003
+++ php-src/ext/gd/libgd/gd.c   Wed Jul  9 20:09:23 2003
@@ -2541,7 +2541,7 @@
 gdImagePtr gdImageRotate90 (gdImagePtr src)
 {
int uY, uX;
-   int c;
+   int c,r,g,b,a;
gdImagePtr dst;
typedef int (*FuncPtr)(gdImagePtr, int, int);
FuncPtr f;
@@ -2551,6 +2551,7 @@
} else {
f = gdImageGetPixel;
}
+   dst = gdImageCreateTrueColor(src->sy, src->sx);
 
if (dst != NULL) {
gdImagePaletteCopy (dst, src);
@@ -2558,6 +2559,13 @@
for (uY = 0; uYsy; uY++) {
for (uX = 0; uXsx; uX++) {
c = f (src, uX, uY);
+   if (!src->trueColor) {
+   r = gdImageRed(src,c);
+   g = gdImageGreen(src,c);
+   b = gdImageBlue(src,c);
+   a = gdImageAlpha(src,c);
+   c = gdTrueColorAlpha(r, g, b, a);
+   }
gdImageSetPixel(dst, uY, (dst->sy - uX - 1), c);
}
}
@@ -2570,18 +2578,17 @@
 gdImagePtr gdImageRotate180 (gdImagePtr src)
 {
int uY, uX;
-   int c;
+   int c,r,g,b,a;
gdImagePtr dst;
typedef int (*FuncPtr)(gdImagePtr, int, int);
FuncPtr f;
 
if (src->trueColor) {
-   dst = gdImageCreateTrueColor ( src->sx,src->sy);
f = gdImageGetTrueColorPixel;
} else {
-   dst = gdImageCreate (src->sx, src->sy);
f = gdImageGetPixel;
}
+   dst = gdImageCreateTrueColor(src->sx, src->sy);
 
if (dst != NULL) {
gdImagePaletteCopy (dst, src);
@@ -2589,6 +2596,13 @@
for (uY = 0; uYsy; uY++) {
for (uX = 0; uXsx; uX++) {
c = f (src, uX, uY);
+   if (!src->trueColor) {
+   r = gdImageRed(src,c);
+   g = gdImageGreen(src,c);
+   b = gdImageBlue(src,c);
+   a = gdImageAlpha(src,c);
+   c = gdTrueColorAlpha(r, g, b, a);
+   }
gdImageSetPixel(dst, (dst->sx - uX - 1), (dst->sy - uY 
- 1), c);
}
}
@@ -2601,18 +2615,17 @@
 gdImagePtr gdImageRotate270 ( gdImagePtr src )
 {
int uY, uX;
-   int c;
+   int c,r,g,b,a;
gdImagePtr dst;
typedef int (*FuncPtr)(gdImagePtr, int, int);
FuncPtr f;
 
if (src->trueColor) {
-   dst = gdImageCreateTrueColor (src->sy, src->sx);
f = gdImageGetTrueColorPixel;
} else {
-   dst = gdImageCreate (src->sy, src->sx);
f = gdImageGetPixel;
}
+   dst = gdImageCreateTrueColor (src->sy, src->sx);
 
if (dst != NULL) {
gdImagePaletteCopy (dst, src);
@@ -2620,6 +2633,13 @@
for (uY = 0; uYsy; uY++) {
for (uX = 0; uXsx; uX++) {
c = f (src, uX, uY);
+   if (!src->trueColor) {
+   r = gdImageRed(src,c);
+   g = gdImageGreen(src,c);
+   b = gdImageBlue(src,c);
+   a = gdImageAlpha(src,c);
+   c = gdTrueColorAlpha(r, g, b, a);
+   }
gdImageSetPixel(dst, (dst->sx - uY - 1), uX, c);
}
}
@@ -2648,13 +2668,12 @@
 
/* 1st shear */
if (src->trueColor) {
-   dst1 = gdImageCreateTrueColor (newx, newy);
f = gdImageGetTrueColorPixel;
} else {
-   dst1 = gdImageCreate (newx, newy);
f = gdImageGetPixel;
}
 
+   dst1 = gdImageCreateTrueColor(newx, newy);
/*** Perform 1st shear (horizontal) **/
if (dst1 == NULL) {
return NULL;
@@ -2761,15 +2780,9 @@
return NULL;
}
 
-if (!gdImageTrueColor(src) && clrBack>=gdImageColorsTotal(src)) {
-return NULL;
-}
-
-   clrBackR = gdImageRed(src, clrBack);
-   clrBackG = gdImageGreen(src, clrBack);
-   

[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2003-07-09 Thread Pierre-Alain Joye
pajoye  Wed Jul  9 06:36:07 2003 EDT

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  - Fix a possible crash when invalid color index are given as background 
in imagerotate, only when palette based image is used as src
  
  
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.58 php-src/ext/gd/libgd/gd.c:1.59
--- php-src/ext/gd/libgd/gd.c:1.58  Wed Jul  9 06:15:13 2003
+++ php-src/ext/gd/libgd/gd.c   Wed Jul  9 06:36:07 2003
@@ -2761,6 +2761,10 @@
return NULL;
}
 
+if (!gdImageTrueColor(src) && clrBack>=gdImageColorsTotal(src)) {
+return NULL;
+}
+
clrBackR = gdImageRed(src, clrBack);
clrBackG = gdImageGreen(src, clrBack);
clrBackB = gdImageBlue(src, clrBack);



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2003-07-09 Thread Pierre-Alain Joye
pajoye  Wed Jul  9 06:15:13 2003 EDT

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  - "Fix" #23792, imagerotate returns always truecolor images now 
(the destination image is a truecolor, no more limited palette problems)
  - Clean the cast in gdImageCopyMerge
  
  
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.57 php-src/ext/gd/libgd/gd.c:1.58
--- php-src/ext/gd/libgd/gd.c:1.57  Wed Jul  2 07:36:17 2003
+++ php-src/ext/gd/libgd/gd.c   Wed Jul  9 06:15:13 2003
@@ -2075,9 +2075,9 @@
} else {
dc = gdImageGetPixel(dst, tox, toy);
 
-   ncR = (int)gdImageRed (src, c) * (pct / 100.0) + 
gdImageRed (dst, dc) * ((100 - pct) / 100.0);
-   ncG = (int)gdImageGreen (src, c) * (pct / 100.0) + 
(int)gdImageGreen (dst, dc) * ((100 - pct) / 100.0);
-   ncB = (int)gdImageBlue (src, c) * (pct / 100.0) + 
gdImageBlue (dst, dc) * ((100 - pct) / 100.0);
+   ncR = (int)(gdImageRed (src, c) * (pct / 100.0) + 
gdImageRed (dst, dc) * ((100 - pct) / 100.0));
+   ncG = (int)(gdImageGreen (src, c) * (pct / 100.0) + 
gdImageGreen (dst, dc) * ((100 - pct) / 100.0));
+   ncB = (int)(gdImageBlue (src, c) * (pct / 100.0) + 
gdImageBlue (dst, dc) * ((100 - pct) / 100.0));
 
/* Find a reasonable color */
nc = gdImageColorResolve (dst, ncR, ncG, ncB);
@@ -2368,14 +2368,22 @@
 void gdImageSkewX (gdImagePtr dst, gdImagePtr src, int uRow, int iOffset, double 
dWeight, int clrBack)
 {
typedef int (*FuncPtr)(gdImagePtr, int, int);
-   int i, r, g, b, a;
+   int i, r, g, b, a, clrBackR, clrBackG, clrBackB, clrBackA;
FuncPtr f;
 
int pxlOldLeft, pxlLeft=0, pxlSrc;
 
+   /* Keep clrBack as color index if required */
if (src->trueColor) {
+   pxlOldLeft = clrBack;
f = gdImageGetTrueColorPixel;
} else {
+   pxlOldLeft = clrBack;
+   clrBackR = gdImageRed(src, clrBack); 
+   clrBackG = gdImageGreen(src, clrBack);
+   clrBackB = gdImageBlue(src, clrBack);
+   clrBackA = gdImageAlpha(src, clrBack);
+   clrBack =  gdTrueColorAlpha(clrBackR, clrBackG, clrBackB, clrBackA);
f = gdImageGetPixel;
}
 
@@ -2387,8 +2395,6 @@
gdImageSetPixel (dst, i, uRow, clrBack);
}
 
-   pxlOldLeft  = clrBack;
-
for (i = 0; i < src->sx; i++) {
pxlSrc = f (src,i,uRow);
 
@@ -2541,10 +2547,8 @@
FuncPtr f;
 
if (src->trueColor) {
-   dst = gdImageCreateTrueColor(src->sy, src->sx);
f = gdImageGetTrueColorPixel;
} else {
-   dst = gdImageCreate (src->sy, src->sx);
f = gdImageGetPixel;
}
 
@@ -2632,6 +2636,7 @@
double dRadAngle, dSinE, dTan, dShear;
double dOffset; /* Variable skew offset */
int u, iShear, newx, newy;
+   int clrBackR, clrBackG, clrBackB, clrBackA;
 
/* See GEMS I for the algorithm details */
dRadAngle = dAngle * ROTATE_DEG2RAD; /* Angle in radians */
@@ -2662,6 +2667,7 @@
}

gdImagePaletteCopy (dst1, src);
+
dRadAngle = dAngle * ROTATE_DEG2RAD; /* Angle in radians */
dSinE = sin (dRadAngle);
dTan = tan (dRadAngle / 2.0);
@@ -2678,6 +2684,15 @@
gdImageSkewX(dst1, src, u, iShear, (dShear - iShear), clrBack);
}
 
+   /*
+   The 1st shear may use the original clrBack as color index
+   Convert it once here
+   */
+   clrBackR = gdImageRed(src, clrBack); 
+   clrBackG = gdImageGreen(src, clrBack);
+   clrBackB = gdImageBlue(src, clrBack);
+   clrBackA = gdImageAlpha(src, clrBack);
+   clrBack =  gdTrueColorAlpha(clrBackR, clrBackG, clrBackB, clrBackA);
/* 2nd shear */
newx = dst1->sx;

@@ -2690,13 +2705,11 @@
newy = (int) ((double) src->sx * fabs( dSinE ) + (double) src->sy * cos 
(dRadAngle));
 
if (src->trueColor) {
-   dst2 = gdImageCreateTrueColor (newx, newy);
f = gdImageGetTrueColorPixel;
} else {
-   dst2 = gdImageCreate (newx, newy);
f = gdImageGetPixel;
}
-
+   dst2 = gdImageCreateTrueColor(newx, newy);
if (dst2 == NULL) {
gdImageDestroy(dst1);
return NULL;
@@ -2714,13 +2727,11 @@
newy = dst2->sy;
 
if (src->trueColor) {
-   dst3 = gdImageCreateTrueColor (newx, newy);
f = gdImageGetTrueColorPixel;
} else {
-   dst3 = gdImageCreate (newx, newy);
f = gdImageGetPixel;
}
-   
+   dst3 = gdImageCrea

Re: [PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2003-07-02 Thread Jani Taskinen

Please add the NEWS entry for the bugfix in PHP_4_3 NEWS file.

--Jani

On Wed, 2 Jul 2003, Pierre-Alain Joye wrote:

>pajoye Wed Jul  2 07:23:56 2003 EDT
>
>  Modified files:  
>/php-src/ext/gd/libgd  gd.c 
>  Log:
>  - Fix #23808
>  
>  
>Index: php-src/ext/gd/libgd/gd.c
>diff -u php-src/ext/gd/libgd/gd.c:1.55 php-src/ext/gd/libgd/gd.c:1.56
>--- php-src/ext/gd/libgd/gd.c:1.55 Thu Jun 12 15:31:44 2003
>+++ php-src/ext/gd/libgd/gd.c  Wed Jul  2 07:23:56 2003
>@@ -2075,9 +2075,12 @@
>   } else {
>   dc = gdImageGetPixel(dst, tox, toy);
> 
>-  ncR = (int)(gdImageRed (src, c) * (pct / 100.0f) + 
>((100 - pct) / 100.0f));
>-  ncG = (int)(gdImageGreen (src, c) * (pct / 100.0f) + 
>((100 - pct) / 100.0f));
>-  ncB = (int)(gdImageBlue (src, c) * (pct / 100.0f) + 
>((100 - pct) / 100.0f));
>+ncR = (int)gdImageRed (src, c) * (pct / 100.0) 
>++ gdImageRed (dst, dc) * ((100 - pct) / 
>100.0);
>+ncG = (int)gdImageGreen (src, c) * (pct / 100.0) 
>++ (int)gdImageGreen (dst, dc) * ((100 - pct) 
>/ 100.0);
>+ncB = (int)gdImageBlue (src, c) * (pct / 100.0) 
>++ gdImageBlue (dst, dc) * ((100 - pct) / 
>100.0);
> 
>   /* Find a reasonable color */
>   nc = gdImageColorResolve (dst, ncR, ncG, ncB);
>
>
>
>


-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2003-07-02 Thread Pierre-Alain Joye
pajoye  Wed Jul  2 07:36:17 2003 EDT

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  - tabs
  
  
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.56 php-src/ext/gd/libgd/gd.c:1.57
--- php-src/ext/gd/libgd/gd.c:1.56  Wed Jul  2 07:23:56 2003
+++ php-src/ext/gd/libgd/gd.c   Wed Jul  2 07:36:17 2003
@@ -2075,12 +2075,9 @@
} else {
dc = gdImageGetPixel(dst, tox, toy);
 
-ncR = (int)gdImageRed (src, c) * (pct / 100.0) 
-+ gdImageRed (dst, dc) * ((100 - pct) / 
100.0);
-ncG = (int)gdImageGreen (src, c) * (pct / 100.0) 
-+ (int)gdImageGreen (dst, dc) * ((100 - pct) 
/ 100.0);
-ncB = (int)gdImageBlue (src, c) * (pct / 100.0) 
-+ gdImageBlue (dst, dc) * ((100 - pct) / 
100.0);
+   ncR = (int)gdImageRed (src, c) * (pct / 100.0) + 
gdImageRed (dst, dc) * ((100 - pct) / 100.0);
+   ncG = (int)gdImageGreen (src, c) * (pct / 100.0) + 
(int)gdImageGreen (dst, dc) * ((100 - pct) / 100.0);
+   ncB = (int)gdImageBlue (src, c) * (pct / 100.0) + 
gdImageBlue (dst, dc) * ((100 - pct) / 100.0);
 
/* Find a reasonable color */
nc = gdImageColorResolve (dst, ncR, ncG, ncB);



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-CVS] cvs: php-src /ext/gd/libgd gd.c

2003-07-02 Thread Pierre-Alain Joye
pajoye  Wed Jul  2 07:23:56 2003 EDT

  Modified files:  
/php-src/ext/gd/libgd   gd.c 
  Log:
  - Fix #23808
  
  
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.55 php-src/ext/gd/libgd/gd.c:1.56
--- php-src/ext/gd/libgd/gd.c:1.55  Thu Jun 12 15:31:44 2003
+++ php-src/ext/gd/libgd/gd.c   Wed Jul  2 07:23:56 2003
@@ -2075,9 +2075,12 @@
} else {
dc = gdImageGetPixel(dst, tox, toy);
 
-   ncR = (int)(gdImageRed (src, c) * (pct / 100.0f) + 
((100 - pct) / 100.0f));
-   ncG = (int)(gdImageGreen (src, c) * (pct / 100.0f) + 
((100 - pct) / 100.0f));
-   ncB = (int)(gdImageBlue (src, c) * (pct / 100.0f) + 
((100 - pct) / 100.0f));
+ncR = (int)gdImageRed (src, c) * (pct / 100.0) 
++ gdImageRed (dst, dc) * ((100 - pct) / 
100.0);
+ncG = (int)gdImageGreen (src, c) * (pct / 100.0) 
++ (int)gdImageGreen (dst, dc) * ((100 - pct) 
/ 100.0);
+ncB = (int)gdImageBlue (src, c) * (pct / 100.0) 
++ gdImageBlue (dst, dc) * ((100 - pct) / 
100.0);
 
/* Find a reasonable color */
nc = gdImageColorResolve (dst, ncR, ncG, ncB);



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php