pajoye Tue Sep 11 21:03:48 2007 UTC
Modified files: (Branch: PHP_5_2)
/php-srcNEWS
/php-src/ext/gd gd.c
/php-src/ext/gd/libgd gd.c
Log:
- [DOC] add alpha support for imagefilter's IMG_FILTER_COLORIZE
http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.940&r2=1.2027.2.547.2.941&diff_format=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.2027.2.547.2.940 php-src/NEWS:1.2027.2.547.2.941
--- php-src/NEWS:1.2027.2.547.2.940 Mon Sep 10 23:42:54 2007
+++ php-src/NEWSTue Sep 11 21:03:47 2007
@@ -11,6 +11,7 @@
- Upgraded PCRE to version 7.3 (Nuno)
- Added optional parameter $provide_object to debug_backtrace(). (Sebastian)
+- Added alpha support for imagefilter's IMG_FILTER_COLORIZE
- Fixed Bug #42596 (session.save_path MODE option does not work). (Ilia)
- Fixed bug #42590 (Make the engine recornize \v and \f escape sequences).
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/gd.c?r1=1.312.2.20.2.31&r2=1.312.2.20.2.32&diff_format=u
Index: php-src/ext/gd/gd.c
diff -u php-src/ext/gd/gd.c:1.312.2.20.2.31 php-src/ext/gd/gd.c:1.312.2.20.2.32
--- php-src/ext/gd/gd.c:1.312.2.20.2.31 Wed Aug 29 06:26:30 2007
+++ php-src/ext/gd/gd.c Tue Sep 11 21:03:48 2007
@@ -18,7 +18,7 @@
+--+
*/
-/* $Id: gd.c,v 1.312.2.20.2.31 2007/08/29 06:26:30 pajoye Exp $ */
+/* $Id: gd.c,v 1.312.2.20.2.32 2007/09/11 21:03:48 pajoye Exp $ */
/* gd 1.2 is copyright 1994, 1995, Quest Protein Database Center,
Cold Spring Harbor Labs. */
@@ -5178,8 +5178,9 @@
zval *SIM;
gdImagePtr im_src;
long r,g,b,tmp;
+ long a = 0;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &SIM,
&tmp, &r, &g, &b) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &SIM,
&tmp, &r, &g, &b, &a) == FAILURE) {
RETURN_FALSE;
}
@@ -5189,7 +5190,7 @@
RETURN_FALSE;
}
- if (gdImageColor(im_src, (int) r, (int) g, (int) b) == 1) {
+ if (gdImageColor(im_src, (int) r, (int) g, (int) b, (int) a) == 1) {
RETURN_TRUE;
}
@@ -5298,7 +5299,7 @@
php_image_filter_smooth
};
- if (ZEND_NUM_ARGS() < 2 || ZEND_NUM_ARGS() > 5) {
+ if (ZEND_NUM_ARGS() < 2 || ZEND_NUM_ARGS() > 6) {
WRONG_PARAM_COUNT;
} else if (zend_parse_parameters(2 TSRMLS_CC, "rl", &tmp, &filtertype)
== FAILURE) {
return;
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.90.2.1.2.20&r2=1.90.2.1.2.21&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.90.2.1.2.20
php-src/ext/gd/libgd/gd.c:1.90.2.1.2.21
--- php-src/ext/gd/libgd/gd.c:1.90.2.1.2.20 Sun Sep 9 13:05:51 2007
+++ php-src/ext/gd/libgd/gd.c Tue Sep 11 21:03:48 2007
@@ -3807,15 +3807,14 @@
}
-int gdImageColor(gdImagePtr src, int red, int green, int blue)
+int gdImageColor(gdImagePtr src, const int red, const int green, const int
blue, const int alpha)
{
int x, y;
- int r,g,b,a;
int new_pxl, pxl;
typedef int (*FuncPtr)(gdImagePtr, int, int);
FuncPtr f;
- if (src==NULL || (red<-255||red>255) || (green<-255||green>255) ||
(blue<-255||blue>255)) {
+ if (src == NULL) {
return 0;
}
@@ -3823,6 +3822,8 @@
for (y=0; ysy; ++y) {
for (x=0; xsx; ++x) {
+ int r,g,b,a;
+
pxl = f(src, x, y);
r = gdImageRed(src, pxl);
g = gdImageGreen(src, pxl);
@@ -3832,14 +3833,16 @@
r = r + red;
g = g + green;
b = b + blue;
+ a = a + alpha;
- r = (r > 255)? 255 : ((r < 0)? 0:r);
- g = (g > 255)? 255 : ((g < 0)? 0:g);
- b = (b > 255)? 255 : ((b < 0)? 0:b);
+ r = (r > 255)? 255 : ((r < 0)? 0 : r);
+ g = (g > 255)? 255 : ((g < 0)? 0 : g);
+ b = (b > 255)? 255 : ((b < 0)? 0 : b);
+ a = (a > 127)? 127 : ((a < 0)? 0 : a);
- new_pxl = gdImageColorAllocateAlpha(src, (int)r,
(int)g, (int)b, a);
+ new_pxl = gdImageColorAllocateAlpha(src, r, g, b, a);
if (new_pxl == -1) {
- new_pxl = gdImageColorClosestAlpha(src, (int)r,
(int)g, (int)b, a);
+ new_pxl = gdImageColorClosestAlpha(src, r, g,
b, a);
}
gdImageSetPixel (src, x, y, new_pxl);
}