SOURCES: php4-gd.patch - update from current 5.2; needs some tweaks

arekm arekm at pld-linux.org
Tue Jan 22 14:47:02 CET 2008


Author: arekm                        Date: Tue Jan 22 13:47:02 2008 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- update from current 5.2; needs some tweaks

---- Files affected:
SOURCES:
   php4-gd.patch (1.3 -> 1.4) 

---- Diffs:

================================================================
Index: SOURCES/php4-gd.patch
diff -u SOURCES/php4-gd.patch:1.3 SOURCES/php4-gd.patch:1.4
--- SOURCES/php4-gd.patch:1.3	Wed May 30 22:14:44 2007
+++ SOURCES/php4-gd.patch	Tue Jan 22 14:46:56 2008
@@ -1,7 +1,7 @@
-diff -urN php-4.4.7.org/ext/gd/config.m4 php-4.4.7/ext/gd/config.m4
---- php-4.4.7.org/ext/gd/config.m4	2007-03-10 14:06:37.000000000 +0100
-+++ php-4.4.7/ext/gd/config.m4	2007-05-30 22:09:19.568683975 +0200
-@@ -259,6 +259,7 @@
+diff -urN php-4.4.8.org/ext/gd/config.m4 php-4.4.8/ext/gd/config.m4
+--- php-4.4.8.org/ext/gd/config.m4	2007-03-10 14:06:37.000000000 +0100
++++ php-4.4.8/ext/gd/config.m4	2008-01-22 14:35:21.033975591 +0100
+@@ -259,12 +259,13 @@
    PHP_CHECK_LIBRARY(gd, gdCacheCreate,          [AC_DEFINE(HAVE_GD_CACHE_CREATE,     1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
    PHP_CHECK_LIBRARY(gd, gdFontCacheShutdown,    [AC_DEFINE(HAVE_GD_FONTCACHESHUTDOWN,1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
    PHP_CHECK_LIBRARY(gd, gdFreeFontCache,        [AC_DEFINE(HAVE_GD_FREEFONTCACHE,    1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
@@ -9,6 +9,13 @@
    PHP_CHECK_LIBRARY(gd, gdNewDynamicCtxEx,      [AC_DEFINE(HAVE_GD_DYNAMIC_CTX_EX,   1, [ ])], [], [ -L$GD_LIB $GD_SHARED_LIBADD ])
  ])
  
+ dnl
+ dnl Main GD configure
+-dnl 
++dnl
+ 
+ if test "$PHP_GD" = "yes"; then
+   GD_MODULE_TYPE=builtin
 @@ -310,6 +311,7 @@
    AC_DEFINE(HAVE_GD_GIF_CREATE,       1, [ ])
    AC_DEFINE(HAVE_GD_IMAGEELLIPSE,     1, [ ])
@@ -17,1763 +24,1269 @@
    AC_DEFINE(HAVE_GD_DYNAMIC_CTX_EX,   1, [ ])
    AC_DEFINE(HAVE_GD_GIF_CTX,          1, [ ])
  
-diff -urN php-4.4.7.org/ext/gd/gd.c php-4.4.7/ext/gd/gd.c
---- php-4.4.7.org/ext/gd/gd.c	2007-01-01 10:46:42.000000000 +0100
-+++ php-4.4.7/ext/gd/gd.c	2007-05-30 21:48:29.386645975 +0200
-@@ -333,6 +333,9 @@
+diff -urN php-4.4.8.org/ext/gd/CREDITS php-4.4.8/ext/gd/CREDITS
+--- php-4.4.8.org/ext/gd/CREDITS	2003-03-01 02:16:00.000000000 +0100
++++ php-4.4.8/ext/gd/CREDITS	2008-01-22 14:35:21.033975591 +0100
+@@ -1,2 +1,2 @@
+ GD imaging
+-Rasmus Lerdorf, Stig Bakken, Jim Winstead, Jouni Ahto, Ilia Alshanetsky, Pierre-Alain Joye
++Rasmus Lerdorf, Stig Bakken, Jim Winstead, Jouni Ahto, Ilia Alshanetsky, Pierre-Alain Joye, Marcus Boerger
+diff -urN php-4.4.8.org/ext/gd/gd.c php-4.4.8/ext/gd/gd.c
+--- php-4.4.8.org/ext/gd/gd.c	2007-12-31 08:22:47.000000000 +0100
++++ php-4.4.8/ext/gd/gd.c	2008-01-22 14:35:21.037309093 +0100
+@@ -1,8 +1,8 @@
+ /*
+    +----------------------------------------------------------------------+
+-   | PHP Version 4                                                        |
++   | PHP Version 5                                                        |
+    +----------------------------------------------------------------------+
+-   | Copyright (c) 1997-2008 The PHP Group                                |
++   | Copyright (c) 1997-2007 The PHP Group                                |
+    +----------------------------------------------------------------------+
+    | This source file is subject to version 3.01 of the PHP license,      |
+    | that is bundled with this package in the file LICENSE, and is        |
+@@ -13,14 +13,14 @@
+    | license at php.net so we can mail you a copy immediately.               |
+    +----------------------------------------------------------------------+
+    | Authors: Rasmus Lerdorf <rasmus at php.net>                             |
+-   |          Stig Bakken <ssb at fast.no>                                   |
++   |          Stig Bakken <ssb at php.net>                                   |
+    |          Jim Winstead <jimw at php.net>                                 |
+    +----------------------------------------------------------------------+
+  */
+ 
+-/* $Id$ */
++/* $Id$ */
+ 
+-/* gd 1.2 is copyright 1994, 1995, Quest Protein Database Center, 
++/* gd 1.2 is copyright 1994, 1995, Quest Protein Database Center,
+    Cold Spring Harbor Labs. */
+ 
+ /* Note that there is no code from the gd package in this file */
+@@ -29,7 +29,13 @@
+ #include "config.h"
+ #endif
+ 
++#ifdef HAVE_GD_PNG
++/* needs to be first */
++#include <png.h>
++#endif
++
+ #include "php.h"
++#include "php_ini.h"
+ #include "ext/standard/head.h"
+ #include <math.h>
+ #include "SAPI.h"
+@@ -46,6 +52,9 @@
+ #ifdef PHP_WIN32
+ # include <io.h>
+ # include <fcntl.h>
++#include <windows.h>
++#include <Winuser.h>
++#include <Wingdi.h>
+ #endif
+ 
+ #if HAVE_LIBGD
+@@ -68,6 +77,14 @@
+ #include "libgd/wbmp.h"
+ #endif
+ #ifdef ENABLE_GD_TTF
++# ifdef HAVE_LIBFREETYPE
++#  include <ft2build.h>
++#  include FT_FREETYPE_H
++# else
++#  ifdef HAVE_LIBTTF
++#   include <freetype.h>
++#  endif
++# endif
+ # include "gdttf.h"
+ #endif
+ 
+@@ -112,6 +129,40 @@
+ #define gdNewDynamicCtxEx(len, data, val) gdNewDynamicCtx(len, data)
+ #endif
+ 
++/* Section Filters Declarations */
++/* IMPORTANT NOTE FOR NEW FILTER
++ * Do not forget to update:
++ * IMAGE_FILTER_MAX: define the last filter index
++ * IMAGE_FILTER_MAX_ARGS: define the biggest amout of arguments
++ * image_filter array in PHP_FUNCTION(imagefilter)
++ * */
++#if HAVE_GD_BUNDLED
++#define IMAGE_FILTER_NEGATE         0
++#define IMAGE_FILTER_GRAYSCALE      1
++#define IMAGE_FILTER_BRIGHTNESS     2
++#define IMAGE_FILTER_CONTRAST       3
++#define IMAGE_FILTER_COLORIZE       4
++#define IMAGE_FILTER_EDGEDETECT     5
++#define IMAGE_FILTER_EMBOSS         6
++#define IMAGE_FILTER_GAUSSIAN_BLUR  7
++#define IMAGE_FILTER_SELECTIVE_BLUR 8
++#define IMAGE_FILTER_MEAN_REMOVAL   9
++#define IMAGE_FILTER_SMOOTH         10
++#define IMAGE_FILTER_MAX            10
++#define IMAGE_FILTER_MAX_ARGS       5
++static void php_image_filter_negate(INTERNAL_FUNCTION_PARAMETERS);
++static void php_image_filter_grayscale(INTERNAL_FUNCTION_PARAMETERS);
++static void php_image_filter_brightness(INTERNAL_FUNCTION_PARAMETERS);
++static void php_image_filter_contrast(INTERNAL_FUNCTION_PARAMETERS);
++static void php_image_filter_colorize(INTERNAL_FUNCTION_PARAMETERS);
++static void php_image_filter_edgedetect(INTERNAL_FUNCTION_PARAMETERS);
++static void php_image_filter_emboss(INTERNAL_FUNCTION_PARAMETERS);
++static void php_image_filter_gaussian_blur(INTERNAL_FUNCTION_PARAMETERS);
++static void php_image_filter_selective_blur(INTERNAL_FUNCTION_PARAMETERS);
++static void php_image_filter_mean_removal(INTERNAL_FUNCTION_PARAMETERS);
++static void php_image_filter_smooth(INTERNAL_FUNCTION_PARAMETERS);
++#endif
++/* End Section filters declarations */
+ static gdImagePtr _php_image_create_from_string (zval **Data, char *tn, gdImagePtr (*ioctx_func_p)() TSRMLS_DC);
+ static void _php_image_create_from(INTERNAL_FUNCTION_PARAMETERS, int image_type, char *tn, gdImagePtr (*func_p)(), gdImagePtr (*ioctx_func_p)());
+ static void _php_image_output(INTERNAL_FUNCTION_PARAMETERS, int image_type, char *tn, void (*func_p)());
+@@ -121,7 +172,7 @@
+ 
+ /* {{{ gd_functions[]
+  */
+-function_entry gd_functions[] = {
++zend_function_entry gd_functions[] = {
+ 	PHP_FE(gd_info,                                 NULL)
+ 	PHP_FE(imagearc,								NULL)
+ 	PHP_FE(imageellipse,							NULL)
+@@ -167,6 +218,11 @@
+ 	PHP_FE(imagecopyresampled,						NULL)
+ #endif
+ 
++#ifdef PHP_WIN32
++	PHP_FE(imagegrabwindow,							NULL)
++	PHP_FE(imagegrabscreen,							NULL)
++#endif
++
+ #ifdef HAVE_GD_BUNDLED
+ 	PHP_FE(imagerotate,     						NULL)
+ 	PHP_FE(imageantialias,							NULL)
+@@ -277,6 +333,12 @@
+ #if HAVE_GD_BUNDLED
+ 	PHP_FE(imagelayereffect,						NULL)
+ 	PHP_FE(imagecolormatch,							NULL)
++	PHP_FE(imagexbm,                                NULL)
++#endif
++/* gd filters */
++#ifdef HAVE_GD_BUNDLED
++	PHP_FE(imagefilter,     						NULL)
++	PHP_FE(imageconvolution,						NULL)
+ #endif
+ 
+ 	{NULL, NULL, NULL}
+@@ -288,9 +350,13 @@
+ 	"gd",
+ 	gd_functions,
+ 	PHP_MINIT(gd),
++#if HAVE_LIBT1 || HAVE_GD_FONTMUTEX
+ 	PHP_MSHUTDOWN(gd),
++#else
+ 	NULL,
+-#if HAVE_LIBGD20 && HAVE_GD_STRINGFT && (HAVE_GD_FONTCACHESHUTDOWN || HAVE_GD_FREEFONTCACHE)
++#endif
++	NULL,
++#if HAVE_LIBGD20 && HAVE_GD_STRINGFT && (HAVE_LIBFREETYPE && (HAVE_GD_FONTCACHESHUTDOWN || HAVE_GD_FREEFONTCACHE))
+ 	PHP_RSHUTDOWN(gd),
+ #else
+ 	NULL,
+@@ -304,6 +370,12 @@
+ ZEND_GET_MODULE(gd)
+ #endif
+ 
++/* {{{ PHP_INI_BEGIN */
++PHP_INI_BEGIN()
++	PHP_INI_ENTRY("gd.jpeg_ignore_warning", "0", PHP_INI_ALL, NULL)
++PHP_INI_END()
++/* }}} */
++	
+ /* {{{ php_free_gd_image
+  */
+ static void php_free_gd_image(zend_rsrc_list_entry *rsrc TSRMLS_DC)
+@@ -326,15 +398,21 @@
+ }
+ /* }}} */
+ 
++
+ /* {{{ PHP_MSHUTDOWN_FUNCTION
+  */
++#if HAVE_LIBT1 || HAVE_GD_FONTMUTEX
+ PHP_MSHUTDOWN_FUNCTION(gd)
+ {
  #if HAVE_LIBT1
  	T1_CloseLib();
  #endif
-+#if HAVE_GD_FONTMUTEX
-+    gdFontCacheMutexShutdown();
++#if HAVE_GD_FONTMUTEX && HAVE_LIBFREETYPE
++	gdFontCacheMutexShutdown();
 +#endif
  	return SUCCESS;
  }
++#endif
  /* }}} */
-@@ -344,6 +347,9 @@
+ 
+ 
+@@ -344,6 +422,10 @@
  {
  	le_gd = zend_register_list_destructors_ex(php_free_gd_image, NULL, "gd", module_number);
  	le_gd_font = zend_register_list_destructors_ex(php_free_gd_font, NULL, "gd font", module_number);
-+#if HAVE_GD_FONTMUTEX
-+    gdFontCacheMutexSetup();
++
++#if HAVE_GD_FONTMUTEX && HAVE_LIBFREETYPE
++	gdFontCacheMutexSetup();
 +#endif
  #if HAVE_LIBT1
  	T1_SetBitmapPad(8);
  	T1_InitLib(NO_LOGFILE | IGNORE_CONFIGFILE | IGNORE_FONTDATABASE);
-@@ -1146,7 +1152,7 @@
- 
- 	convert_to_double_ex(ANGLE);
- 	degrees = Z_DVAL_PP(ANGLE);
--	im_dst = gdImageRotate(im_src, degrees, color);
-+	im_dst = gdImageRotate(im_src, degrees, color, 0);
- 
- 	if (im_dst != NULL) {
- 		ZEND_REGISTER_RESOURCE(return_value, im_dst, le_gd);
-@@ -3775,7 +3781,11 @@
+@@ -352,6 +434,8 @@
+ 	le_ps_enc = zend_register_list_destructors_ex(php_free_ps_enc, NULL, "gd PS encoding", module_number);
+ #endif
  
- #ifdef HAVE_GD_JPG
- 		case PHP_GDIMG_TYPE_JPG:
-+#ifdef HAVE_GD_BUNDLED
-+			im_org = gdImageCreateFromJpeg(org, 0);
-+#else
- 			im_org = gdImageCreateFromJpeg(org);
-+#endif
- 			if (im_org == NULL) {
- 				php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to open '%s' Not a valid JPEG file", fn_dest);
- 				RETURN_FALSE;
-diff -urN php-4.4.7.org/ext/gd/libgd/gd_arc_f_buggy.c php-4.4.7/ext/gd/libgd/gd_arc_f_buggy.c
---- php-4.4.7.org/ext/gd/libgd/gd_arc_f_buggy.c	2003-03-05 17:04:20.000000000 +0100
-+++ php-4.4.7/ext/gd/libgd/gd_arc_f_buggy.c	2005-08-18 14:54:43.000000000 +0200
-@@ -1,6 +1,6 @@
- /* This is potentially great stuff, but fails against the test
--   program at the end. This would probably be much more 
--   efficent than the implementation currently in gd.c if the 
-+   program at the end. This would probably be much more
-+   efficent than the implementation currently in gd.c if the
-    errors in the output were corrected. TBB */
- 
- #if 0
-@@ -698,7 +698,7 @@
- #define WIDTH	500
- #define HEIGHT	300
- 
--int 
-+int
- main (int argc, char *argv[])
- {
-   gdImagePtr im = gdImageCreate (WIDTH, HEIGHT);
-@@ -726,12 +726,12 @@
-   out = fopen ("test/arctest.png", "wb");
-   if (!out)
-     {
--      php_gd_error("Can't create test/arctest.png\n");
-+      php_gd_error("Can't create test/arctest.png");
-       exit (1);
-     }
-   gdImagePng (im, out);
-   fclose (out);
--  php_gd_error("Test image written to test/arctest.png\n");
-+  php_gd_error("Test image written to test/arctest.png");
-   /* Destroy it */
-   gdImageDestroy (im);
- 
-diff -urN php-4.4.7.org/ext/gd/libgd/gd.c php-4.4.7/ext/gd/libgd/gd.c
---- php-4.4.7.org/ext/gd/libgd/gd.c	2007-04-14 19:38:38.000000000 +0200
-+++ php-4.4.7/ext/gd/libgd/gd.c	2007-04-14 19:33:15.000000000 +0200
-@@ -1,4 +1,4 @@
--#include <stdio.h>
++	REGISTER_INI_ENTRIES();
++	
+ 	REGISTER_LONG_CONSTANT("IMG_GIF", 1, CONST_CS | CONST_PERSISTENT);
+ 	REGISTER_LONG_CONSTANT("IMG_JPG", 2, CONST_CS | CONST_PERSISTENT);
+ 	REGISTER_LONG_CONSTANT("IMG_JPEG", 2, CONST_CS | CONST_PERSISTENT);
+@@ -387,16 +471,58 @@
+ 	REGISTER_LONG_CONSTANT("IMG_EFFECT_NORMAL", gdEffectNormal, CONST_CS | CONST_PERSISTENT);
+ 	REGISTER_LONG_CONSTANT("IMG_EFFECT_OVERLAY", gdEffectOverlay, CONST_CS | CONST_PERSISTENT);
+ 	REGISTER_LONG_CONSTANT("GD_BUNDLED", 1, CONST_CS | CONST_PERSISTENT);
++
++	/* Section Filters */
++	REGISTER_LONG_CONSTANT("IMG_FILTER_NEGATE", IMAGE_FILTER_NEGATE, CONST_CS | CONST_PERSISTENT);
++	REGISTER_LONG_CONSTANT("IMG_FILTER_GRAYSCALE", IMAGE_FILTER_GRAYSCALE, CONST_CS | CONST_PERSISTENT);
++	REGISTER_LONG_CONSTANT("IMG_FILTER_BRIGHTNESS", IMAGE_FILTER_BRIGHTNESS, CONST_CS | CONST_PERSISTENT);
++	REGISTER_LONG_CONSTANT("IMG_FILTER_CONTRAST", IMAGE_FILTER_CONTRAST, CONST_CS | CONST_PERSISTENT);
++	REGISTER_LONG_CONSTANT("IMG_FILTER_COLORIZE", IMAGE_FILTER_COLORIZE, CONST_CS | CONST_PERSISTENT);
++	REGISTER_LONG_CONSTANT("IMG_FILTER_EDGEDETECT", IMAGE_FILTER_EDGEDETECT, CONST_CS | CONST_PERSISTENT);
++	REGISTER_LONG_CONSTANT("IMG_FILTER_GAUSSIAN_BLUR", IMAGE_FILTER_GAUSSIAN_BLUR, CONST_CS | CONST_PERSISTENT);
++	REGISTER_LONG_CONSTANT("IMG_FILTER_SELECTIVE_BLUR", IMAGE_FILTER_SELECTIVE_BLUR, CONST_CS | CONST_PERSISTENT);
++	REGISTER_LONG_CONSTANT("IMG_FILTER_EMBOSS", IMAGE_FILTER_EMBOSS, CONST_CS | CONST_PERSISTENT);
++	REGISTER_LONG_CONSTANT("IMG_FILTER_MEAN_REMOVAL", IMAGE_FILTER_MEAN_REMOVAL, CONST_CS | CONST_PERSISTENT);
++	REGISTER_LONG_CONSTANT("IMG_FILTER_SMOOTH", IMAGE_FILTER_SMOOTH, CONST_CS | CONST_PERSISTENT);
++	/* End Section Filters */
+ #else
+ 	REGISTER_LONG_CONSTANT("GD_BUNDLED", 0, CONST_CS | CONST_PERSISTENT);
+ #endif
 +
- #include <math.h>
- #include <string.h>
- #include <stdlib.h>
-@@ -90,18 +90,16 @@
- 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);
- 
--void php_gd_error_ex(int type, const char *format, ...) 
-+void php_gd_error_ex(int type, const char *format, ...)
- {
- 	va_list args;
--	
++#ifdef GD_VERSION_STRING
++	REGISTER_STRING_CONSTANT("GD_VERSION", GD_VERSION_STRING, CONST_CS | CONST_PERSISTENT);
++#endif
 +
- 	TSRMLS_FETCH();
--	
++#if defined(GD_MAJOR_VERSION) && defined(GD_MINOR_VERSION) && defined(GD_RELEASE_VERSION) && defined(GD_EXTRA_VERSION)
++	REGISTER_LONG_CONSTANT("GD_MAJOR_VERSION", GD_MAJOR_VERSION, CONST_CS | CONST_PERSISTENT);
++	REGISTER_LONG_CONSTANT("GD_MINOR_VERSION", GD_MINOR_VERSION, CONST_CS | CONST_PERSISTENT);
++	REGISTER_LONG_CONSTANT("GD_RELEASE_VERSION", GD_RELEASE_VERSION, CONST_CS | CONST_PERSISTENT);
++	REGISTER_STRING_CONSTANT("GD_EXTRA_VERSION", GD_EXTRA_VERSION, CONST_CS | CONST_PERSISTENT);
++#endif
 +
- 	va_start(args, format);
- 	php_verror(NULL, "", type, format, args TSRMLS_CC);
- 	va_end(args);
-@@ -110,9 +108,9 @@
- void php_gd_error(const char *format, ...)
- {
- 	va_list args;
--	
 +
- 	TSRMLS_FETCH();
--	
++#ifdef HAVE_GD_PNG
 +
- 	va_start(args, format);
- 	php_verror(NULL, "", E_WARNING, format, args TSRMLS_CC);
- 	va_end(args);
-@@ -125,8 +123,8 @@
- 	im = (gdImage *) gdMalloc(sizeof(gdImage));
- 	memset(im, 0, sizeof(gdImage));
- 	/* Row-major ever since gd 1.3 */
--	im->pixels = (unsigned char **) safe_emalloc(sizeof(unsigned char *), sy, 0);
--	im->AA_opacity = (unsigned char **) safe_emalloc(sizeof(unsigned char *), sy, 0);
-+	im->pixels = (unsigned char **) gdMalloc(sizeof(unsigned char *) * sy);
-+	im->AA_opacity = (unsigned char **) gdMalloc(sizeof(unsigned char *) * sy);
- 	im->polyInts = 0;
- 	im->polyAllocated = 0;
- 	im->brush = 0;
-@@ -166,8 +164,8 @@
- 	gdImagePtr im;
- 	im = (gdImage *) gdMalloc(sizeof(gdImage));
- 	memset(im, 0, sizeof(gdImage));
--	im->tpixels = (int **) safe_emalloc(sizeof(int *), sy, 0);
--	im->AA_opacity = (unsigned char **) safe_emalloc(sizeof(unsigned char *), sy, 0);
-+	im->tpixels = (int **) gdMalloc(sizeof(int *) * sy);
-+	im->AA_opacity = (unsigned char **) gdMalloc(sizeof(unsigned char *) * sy);
- 	im->polyInts = 0;
- 	im->polyAllocated = 0;
- 	im->brush = 0;
-@@ -267,8 +265,8 @@
++/*
++ * cannot include #include "png.h"
++ * /usr/include/pngconf.h:310:2: error: #error png.h already includes setjmp.h with some additional fixup.
++ * as error, use the values for now...
++ */
++	REGISTER_LONG_CONSTANT("PNG_NO_FILTER",		0x00, CONST_CS | CONST_PERSISTENT);
++	REGISTER_LONG_CONSTANT("PNG_FILTER_NONE",	0x08, CONST_CS | CONST_PERSISTENT);
++	REGISTER_LONG_CONSTANT("PNG_FILTER_SUB",	0x10, CONST_CS | CONST_PERSISTENT);
++	REGISTER_LONG_CONSTANT("PNG_FILTER_UP",		0x20, CONST_CS | CONST_PERSISTENT);
++	REGISTER_LONG_CONSTANT("PNG_FILTER_AVG",	0x40, CONST_CS | CONST_PERSISTENT);
++	REGISTER_LONG_CONSTANT("PNG_FILTER_PAETH",	0x80, CONST_CS | CONST_PERSISTENT);
++	REGISTER_LONG_CONSTANT("PNG_ALL_FILTERS",	0x08 | 0x10 | 0x20 | 0x40 | 0x80, CONST_CS | CONST_PERSISTENT);
++#endif
+ 	return SUCCESS;
  }
+ /* }}} */
  
- /* This code is taken from http://www.acm.org/jgt/papers/SmithLyons96/hwb_rgb.html, an article
-- * on colour conversion to/from RBG and HWB colour systems. 
-- * It has been modified to return the converted value as a * parameter. 
-+ * on colour conversion to/from RBG and HWB colour systems.
-+ * It has been modified to return the converted value as a * parameter.
+ /* {{{ PHP_RSHUTDOWN_FUNCTION
   */
+-#if HAVE_LIBGD20 && HAVE_GD_STRINGFT && (HAVE_GD_FONTCACHESHUTDOWN || HAVE_GD_FREEFONTCACHE)
++#if HAVE_LIBGD20 && HAVE_GD_STRINGFT && (HAVE_LIBFREETYPE && (HAVE_GD_FONTCACHESHUTDOWN || HAVE_GD_FREEFONTCACHE))
+ PHP_RSHUTDOWN_FUNCTION(gd)
+ {
+ #if HAVE_GD_FONTCACHESHUTDOWN
+@@ -410,7 +536,7 @@
+ /* }}} */
  
- #define RETURN_HWB(h, w, b) {HWB->H = h; HWB->W = w; HWB->B = b; return HWB;}
-@@ -287,8 +285,8 @@
+ #if HAVE_GD_BUNDLED
+-#define PHP_GD_VERSION_STRING "bundled (2.0.28 compatible)"
++#define PHP_GD_VERSION_STRING "bundled (2.0.34 compatible)"
+ #elif HAVE_LIBGD20
+ #define PHP_GD_VERSION_STRING "2.0 or higher"
+ #elif HAVE_GDIMAGECOLORRESOLVE
+@@ -436,8 +562,24 @@
+ 	php_info_print_table_row(2, "FreeType Support", "enabled");
+ #if HAVE_LIBFREETYPE
+ 	php_info_print_table_row(2, "FreeType Linkage", "with freetype");
++	{
++		char tmp[256];
++#ifdef FREETYPE_PATCH
++		snprintf(tmp, sizeof(tmp), "%d.%d.%d", FREETYPE_MAJOR, FREETYPE_MINOR, FREETYPE_PATCH);
++#elif defined(FREETYPE_MAJOR)
++		snprintf(tmp, sizeof(tmp), "%d.%d", FREETYPE_MAJOR, FREETYPE_MINOR);
++#else
++		snprintf(tmp, sizeof(tmp), "1.x");
++#endif
++		php_info_print_table_row(2, "FreeType Version", tmp);
++	}
+ #elif HAVE_LIBTTF
+ 	php_info_print_table_row(2, "FreeType Linkage", "with TTF library");
++	{
++		char tmp[256];
++		snprintf(tmp, sizeof(tmp), "%d.%d", TT_FREETYPE_MAJOR, TT_FREETYPE_MINOR);
++		php_info_print_table_row(2, "FreeType Version", tmp);
++	}
+ #else
+ 	php_info_print_table_row(2, "FreeType Linkage", "with unknown library");
+ #endif
+@@ -464,6 +606,9 @@
+ #ifdef HAVE_GD_WBMP
+ 	php_info_print_table_row(2, "WBMP Support", "enabled");
+ #endif
++#if defined(HAVE_GD_XPM) && defined(HAVE_GD_BUNDLED)
++	php_info_print_table_row(2, "XPM Support", "enabled");
++#endif
+ #ifdef HAVE_GD_XBM
+ 	php_info_print_table_row(2, "XBM Support", "enabled");
+ #endif
+@@ -530,6 +675,11 @@
+ #else
+ 	add_assoc_bool(return_value, "WBMP Support", 0);
+ #endif
++#if defined(HAVE_GD_XPM) && defined(HAVE_GD_BUNDLED)
++	add_assoc_bool(return_value, "XPM Support", 1);
++#else
++	add_assoc_bool(return_value, "XPM Support", 0);
++#endif
+ #ifdef HAVE_GD_XBM
+ 	add_assoc_bool(return_value, "XBM Support", 1);
+ #else
+@@ -548,6 +698,7 @@
+ {
+ 	return le_gd;
+ }
++/* }}} */
  
+ #ifndef HAVE_GDIMAGECOLORRESOLVE
  
- /*
-- * Theoretically, hue 0 (pure red) is identical to hue 6 in these transforms. Pure 
-- * red always maps to 6 in this implementation. Therefore UNDEFINED can be 
-+ * Theoretically, hue 0 (pure red) is identical to hue 6 in these transforms. Pure
-+ * red always maps to 6 in this implementation. Therefore UNDEFINED can be
-  * defined as 0 in situations where only unsigned numbers are desired.
-  */
- typedef struct
-@@ -305,8 +303,8 @@
- static HWBType * RGB_to_HWB (RGBType RGB, HWBType * HWB)
- {
- 	/*
--	 * RGB are each on [0, 1]. W and B are returned on [0, 1] and H is  
--	 * returned on [0, 6]. Exception: H is returned UNDEFINED if W == 1 - B.  
-+	 * RGB are each on [0, 1]. W and B are returned on [0, 1] and H is
-+	 * returned on [0, 6]. Exception: H is returned UNDEFINED if W == 1 - B.
- 	 */
+@@ -763,13 +914,19 @@
+ 	convert_to_long_ex(x_size);
+ 	convert_to_long_ex(y_size);
  
- 	float R = RGB.R, G = RGB.G, B = RGB.B, w, v, b, f;
-@@ -320,7 +318,7 @@
+-	if (Z_LVAL_PP(x_size) <= 0 || Z_LVAL_PP(y_size) <= 0) {
++	if (Z_LVAL_PP(x_size) <= 0 || Z_LVAL_PP(y_size) <= 0 ||
++			Z_LVAL_PP(x_size) >= INT_MAX || Z_LVAL_PP(y_size) >= INT_MAX 
++		) {
+ 		php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid image dimensions");
+ 		RETURN_FALSE;
  	}
- 	f = (R == w) ? G - B : ((G == w) ? B - R : R - G);
- 	i = (R == w) ? 3 : ((G == w) ? 5 : 1);
--	
+ 
+ 	im = gdImageCreateTrueColor(Z_LVAL_PP(x_size), Z_LVAL_PP(y_size));
+ 
++	if (!im) {
++		RETURN_FALSE;
++	}
 +
- 	RETURN_HWB(i - f / (v - w), w, b);
+ 	ZEND_REGISTER_RESOURCE(return_value, im, le_gd);
  }
+ /* }}} */
+@@ -836,15 +993,19 @@
+ 	result = gdImageColorMatch(im1, im2);
+ 	switch (result) {
+ 		case -1:
+-			php_error_docref(NULL TSRMLS_CC, E_ERROR, "Image1 must be TrueColor" );
++			php_error_docref(NULL TSRMLS_CC, E_WARNING, "Image1 must be TrueColor" );
+ 			RETURN_FALSE;
+ 			break;
+ 		case -2:
+-			php_error_docref(NULL TSRMLS_CC, E_ERROR, "Image2 must be Palette" );
++			php_error_docref(NULL TSRMLS_CC, E_WARNING, "Image2 must be Palette" );
+ 			RETURN_FALSE;
+ 			break;
+ 		case -3:
+-			php_error_docref(NULL TSRMLS_CC, E_ERROR, "Image1 and Image2 must be the same size" );
++			php_error_docref(NULL TSRMLS_CC, E_WARNING, "Image1 and Image2 must be the same size" );
++			RETURN_FALSE;
++			break;
++		case -4:
++			php_error_docref(NULL TSRMLS_CC, E_WARNING, "Image2 must have at least one color" );
+ 			RETURN_FALSE;
+ 			break;
+ 	}
+@@ -977,6 +1138,7 @@
  
-@@ -363,9 +361,9 @@
-  */
- static RGBType * HWB_to_RGB (HWBType HWB, RGBType * RGB)
- {
--	/* 
--	 * H is given on [0, 6] or UNDEFINED. W and B are given on [0, 1].  
--	 * RGB are each returned on [0, 1]. 
-+	/*
-+	 * H is given on [0, 6] or UNDEFINED. W and B are given on [0, 1].
-+	 * RGB are each returned on [0, 1].
- 	 */
- 
- 	float h = HWB.H, w = HWB.W, b = HWB.B, v, n, f;
<<Diff was trimmed, longer than 597 lines>>

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SOURCES/php4-gd.patch?r1=1.3&r2=1.4&f=u



More information about the pld-cvs-commit mailing list