From: Daniel Beulshausen Date: Wed, 29 Nov 2000 15:25:42 +0000 (+0000) Subject: made gd working correct under win32 X-Git-Tag: php-4.0.4RC3~31 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=93b2587876533a356d00f88cb209a29302269882;p=php made gd working correct under win32 # fixes the issues when running php threadsafe --- diff --git a/ext/gd/gd.c b/ext/gd/gd.c index 956d8ad50d..168f0017bd 100644 --- a/ext/gd/gd.c +++ b/ext/gd/gd.c @@ -31,6 +31,7 @@ #include "SAPI.h" #include "php_gd.h" #include "ext/standard/fsock.h" +#include "ext/standard/info.h" #if HAVE_SYS_WAIT_H # include @@ -45,7 +46,10 @@ #if HAVE_LIBGD -#include "ext/standard/info.h" +static int le_gd, le_gd_font; +#if HAVE_LIBT1 +static int le_ps_font, le_ps_enc; +#endif #include #include /* 1 Tiny font */ @@ -227,14 +231,14 @@ PHP_MINIT_FUNCTION(gd) return FAILURE; } #endif - GDG(le_gd) = zend_register_list_destructors_ex(php_free_gd_image, NULL, "gd", module_number); - GDG(le_gd_font) = zend_register_list_destructors_ex(php_free_gd_font, NULL, "gd font", module_number); + 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_LIBT1 T1_SetBitmapPad(8); T1_InitLib(NO_LOGFILE|IGNORE_CONFIGFILE|IGNORE_FONTDATABASE); T1_SetLogLevel(T1LOG_DEBUG); - GDG(le_ps_font) = zend_register_list_destructors_ex(php_free_ps_font, NULL, "gd PS font", module_number); - GDG(le_ps_enc) = zend_register_list_destructors_ex(php_free_ps_enc, NULL, "gd PS encoding", module_number); + le_ps_font = zend_register_list_destructors_ex(php_free_ps_font, NULL, "gd PS font", module_number); + le_ps_enc = zend_register_list_destructors_ex(php_free_ps_enc, NULL, "gd PS encoding", module_number); #endif REGISTER_LONG_CONSTANT("IMG_GIF", 1, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("IMG_JPG", 2, CONST_CS | CONST_PERSISTENT); @@ -299,7 +303,7 @@ PHPAPI int phpi_get_le_gd(void) { GDLS_FETCH(); - return GDG(le_gd); + return le_gd; } #ifndef HAVE_GDIMAGECOLORRESOLVE @@ -432,7 +436,7 @@ PHP_FUNCTION(imageloadfont) * that overlap with the old fonts (with indices 1-5). The first * list index given out is always 1. */ - ind = 5 + zend_list_insert(font, GDG(le_gd_font)); + ind = 5 + zend_list_insert(font, le_gd_font); RETURN_LONG(ind); } @@ -455,7 +459,7 @@ PHP_FUNCTION(imagecreate) im = gdImageCreate(Z_LVAL_PP(x_size), Z_LVAL_PP(y_size)); - ZEND_REGISTER_RESOURCE(return_value, im, GDG(le_gd)); + ZEND_REGISTER_RESOURCE(return_value, im, le_gd); } /* }}} */ @@ -604,7 +608,7 @@ PHP_FUNCTION (imagecreatefromstring) RETURN_FALSE; } - ZEND_REGISTER_RESOURCE(return_value, im, GDG (le_gd)); + ZEND_REGISTER_RESOURCE(return_value, im, le_gd); #else php_error(E_ERROR, "ImageCreateFromString: Only available with GD 1.5+"); #endif @@ -688,7 +692,7 @@ static void _php_image_create_from(INTERNAL_FUNCTION_PARAMETERS, int image_type, RETURN_FALSE; } - ZEND_REGISTER_RESOURCE(return_value, im, GDG(le_gd)); + ZEND_REGISTER_RESOURCE(return_value, im, le_gd); } /* {{{ proto int imagecreatefromgif(string filename) @@ -788,7 +792,7 @@ static void _php_image_output(INTERNAL_FUNCTION_PARAMETERS, int image_type, char WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(im, gdImagePtr, imgind, -1, "Image", GDG(le_gd)); + ZEND_FETCH_RESOURCE(im, gdImagePtr, imgind, -1, "Image", le_gd); if (argc > 1) { convert_to_string_ex(file); @@ -949,7 +953,7 @@ PHP_FUNCTION(imagedestroy) WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", GDG(le_gd)); + ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd); zend_list_delete(Z_LVAL_PP(IM)); @@ -970,7 +974,7 @@ PHP_FUNCTION(imagecolorallocate) WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", GDG(le_gd)); + ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd); convert_to_long_ex(red); convert_to_long_ex(green); @@ -994,8 +998,8 @@ PHP_FUNCTION(imagepalettecopy) WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(dst, gdImagePtr, dstim, -1, "Image", GDG(le_gd)); - ZEND_FETCH_RESOURCE(src, gdImagePtr, srcim, -1, "Image", GDG(le_gd)); + ZEND_FETCH_RESOURCE(dst, gdImagePtr, dstim, -1, "Image", le_gd); + ZEND_FETCH_RESOURCE(src, gdImagePtr, srcim, -1, "Image", le_gd); gdImagePaletteCopy(dst, src); #else @@ -1019,7 +1023,7 @@ PHP_FUNCTION(imagecolorat) WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", GDG(le_gd)); + ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd); convert_to_long_ex(x); convert_to_long_ex(y); @@ -1050,7 +1054,7 @@ PHP_FUNCTION(imagecolorclosest) WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", GDG(le_gd)); + ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd); convert_to_long_ex(red); convert_to_long_ex(green); @@ -1074,7 +1078,7 @@ PHP_FUNCTION(imagecolorclosesthwb) WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", GDG(le_gd)); + ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd); convert_to_long_ex(red); convert_to_long_ex(green); @@ -1102,7 +1106,7 @@ PHP_FUNCTION(imagecolordeallocate) WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", GDG(le_gd)); + ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd); convert_to_long_ex(index); col = Z_LVAL_PP(index); @@ -1130,7 +1134,7 @@ PHP_FUNCTION(imagecolorresolve) WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", GDG(le_gd)); + ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd); convert_to_long_ex(red); convert_to_long_ex(green); @@ -1153,7 +1157,7 @@ PHP_FUNCTION(imagecolorexact) WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", GDG(le_gd)); + ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd); convert_to_long_ex(red); convert_to_long_ex(green); @@ -1177,7 +1181,7 @@ PHP_FUNCTION(imagecolorset) WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", GDG(le_gd)); + ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd); convert_to_long_ex(color); convert_to_long_ex(red); @@ -1210,7 +1214,7 @@ PHP_FUNCTION(imagecolorsforindex) WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", GDG(le_gd)); + ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd); convert_to_long_ex(index); col = Z_LVAL_PP(index); @@ -1250,7 +1254,7 @@ PHP_FUNCTION(imagegammacorrect) input = Z_DVAL_PP(inputgamma); output = Z_DVAL_PP(outputgamma); - ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", GDG(le_gd)); + ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd); for (i = 0; i < gdImageColorsTotal(im); i++) { im->red[i] = (int)((pow((pow((im->red[i] / 255.0), input)), 1.0 / output) * 255)+.5); @@ -1275,7 +1279,7 @@ PHP_FUNCTION(imagesetpixel) WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", GDG(le_gd)); + ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd); convert_to_long_ex(x); convert_to_long_ex(y); @@ -1300,7 +1304,7 @@ PHP_FUNCTION(imageline) WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", GDG(le_gd)); + ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd); convert_to_long_ex(x1); convert_to_long_ex(y1); @@ -1326,7 +1330,7 @@ PHP_FUNCTION(imagedashedline) WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", GDG(le_gd)); + ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd); convert_to_long_ex(x1); convert_to_long_ex(y1); @@ -1353,7 +1357,7 @@ PHP_FUNCTION(imagerectangle) WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", GDG(le_gd)); + ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd); convert_to_long_ex(x1); convert_to_long_ex(y1); @@ -1380,7 +1384,7 @@ PHP_FUNCTION(imagefilledrectangle) WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", GDG(le_gd)); + ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd); convert_to_long_ex(x1); convert_to_long_ex(y1); @@ -1407,7 +1411,7 @@ PHP_FUNCTION(imagearc) WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", GDG(le_gd)); + ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd); convert_to_long_ex(cx); convert_to_long_ex(cy); @@ -1442,7 +1446,7 @@ PHP_FUNCTION(imagefilltoborder) WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", GDG(le_gd)); + ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd); convert_to_long_ex(x); convert_to_long_ex(y); @@ -1468,7 +1472,7 @@ PHP_FUNCTION(imagefill) WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", GDG(le_gd)); + ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd); convert_to_long_ex(x); convert_to_long_ex(y); @@ -1492,7 +1496,7 @@ PHP_FUNCTION(imagecolorstotal) WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", GDG(le_gd)); + ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd); RETURN_LONG(gdImageColorsTotal(im)); } @@ -1523,7 +1527,7 @@ PHP_FUNCTION(imagecolortransparent) WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", GDG(le_gd)); + ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd); if (ZEND_NUM_ARGS() > 1) { gdImageColorTransparent(im, Z_LVAL_PP(COL)); @@ -1558,7 +1562,7 @@ PHP_FUNCTION(imageinterlace) WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", GDG(le_gd)); + ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd); if (ZEND_NUM_ARGS() > 1) { gdImageInterlace(im,Z_LVAL_PP(INT)); @@ -1584,7 +1588,7 @@ static void php_imagepolygon(INTERNAL_FUNCTION_PARAMETERS, int filled) { WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", GDG(le_gd)); + ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd); convert_to_long_ex(NPOINTS); convert_to_long_ex(COL); @@ -1675,7 +1679,7 @@ static gdFontPtr php_find_gd_font(int size) break; default: font = zend_list_find(size - 5, &ind_type); - if (!font || ind_type != GDG(le_gd_font)) { + if (!font || ind_type != le_gd_font) { if (size < 1) { font = gdFontTiny; } else { @@ -1770,7 +1774,7 @@ static void php_imagechar(INTERNAL_FUNCTION_PARAMETERS, int mode) WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", GDG(le_gd)); + ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd); convert_to_long_ex(SIZE); convert_to_long_ex(X); @@ -1869,8 +1873,8 @@ PHP_FUNCTION(imagecopy) WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(im_src, gdImagePtr, SIM, -1, "Image", GDG(le_gd)); - ZEND_FETCH_RESOURCE(im_dst, gdImagePtr, DIM, -1, "Image", GDG(le_gd)); + ZEND_FETCH_RESOURCE(im_src, gdImagePtr, SIM, -1, "Image", le_gd); + ZEND_FETCH_RESOURCE(im_dst, gdImagePtr, DIM, -1, "Image", le_gd); convert_to_long_ex(SX); convert_to_long_ex(SY); @@ -1907,8 +1911,8 @@ PHP_FUNCTION(imagecopymerge) WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(im_src, gdImagePtr, SIM, -1, "Image", GDG(le_gd)); - ZEND_FETCH_RESOURCE(im_dst, gdImagePtr, DIM, -1, "Image", GDG(le_gd)); + ZEND_FETCH_RESOURCE(im_src, gdImagePtr, SIM, -1, "Image", le_gd); + ZEND_FETCH_RESOURCE(im_dst, gdImagePtr, DIM, -1, "Image", le_gd); convert_to_long_ex(SX); convert_to_long_ex(SY); @@ -1950,8 +1954,8 @@ PHP_FUNCTION(imagecopyresized) WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(im_dst, gdImagePtr, DIM, -1, "Image", GDG(le_gd)); - ZEND_FETCH_RESOURCE(im_src, gdImagePtr, SIM, -1, "Image", GDG(le_gd)); + ZEND_FETCH_RESOURCE(im_dst, gdImagePtr, DIM, -1, "Image", le_gd); + ZEND_FETCH_RESOURCE(im_src, gdImagePtr, SIM, -1, "Image", le_gd); convert_to_long_ex(SX); convert_to_long_ex(SY); @@ -1988,7 +1992,7 @@ PHP_FUNCTION(imagesx) WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", GDG(le_gd)); + ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd); RETURN_LONG(gdImageSX(im)); } @@ -2006,7 +2010,7 @@ PHP_FUNCTION(imagesy) WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", GDG(le_gd)); + ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd); RETURN_LONG(gdImageSY(im)); } @@ -2063,7 +2067,7 @@ void php_imagettftext_common(INTERNAL_FUNCTION_PARAMETERS, int mode) if (ZEND_NUM_ARGS() != 8 || zend_get_parameters_ex(8, &IM, &PTSIZE, &ANGLE, &X, &Y, &COL, &FONTNAME, &C) == FAILURE) { WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", GDG(le_gd)); + ZEND_FETCH_RESOURCE(im, gdImagePtr, IM, -1, "Image", le_gd); } convert_to_double_ex(PTSIZE); @@ -2171,7 +2175,7 @@ PHP_FUNCTION(imagepsloadfont) font = (int *) emalloc(sizeof(int)); *font = f_ind; - ZEND_REGISTER_RESOURCE(return_value, font, GDG(le_ps_font)); + ZEND_REGISTER_RESOURCE(return_value, font, le_ps_font); #else php_error(E_WARNING, "ImagePsLoadFont: No T1lib support in this PHP build"); RETURN_FALSE; @@ -2198,7 +2202,7 @@ PHP_FUNCTION(imagepscopyfont) of_ind = zend_list_find(Z_LVAL_PP(fnt), &type); - if (type != GDG(le_ps_font)) { + if (type != le_ps_font) { php_error(E_WARNING, "%d is not a Type 1 font index", Z_LVAL_PP(fnt)); RETURN_FALSE; } @@ -2230,7 +2234,7 @@ PHP_FUNCTION(imagepscopyfont) } nf_ind->extend = 1; - l_ind = zend_list_insert(nf_ind, GDG(le_ps_font)); + l_ind = zend_list_insert(nf_ind, le_ps_font); RETURN_LONG(l_ind); #else php_error(E_WARNING, "ImagePsCopyFont: No T1lib support in this PHP build"); @@ -2252,7 +2256,7 @@ PHP_FUNCTION(imagepsfreefont) WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(f_ind, int *, fnt, -1, "Type 1 font", GDG(le_ps_font)); + ZEND_FETCH_RESOURCE(f_ind, int *, fnt, -1, "Type 1 font", le_ps_font); zend_list_delete(Z_LVAL_PP(fnt)); RETURN_TRUE; @@ -2278,7 +2282,7 @@ PHP_FUNCTION(imagepsencodefont) convert_to_string_ex(enc); - ZEND_FETCH_RESOURCE(f_ind, int *, fnt, -1, "Type 1 font", GDG(le_ps_font)); + ZEND_FETCH_RESOURCE(f_ind, int *, fnt, -1, "Type 1 font", le_ps_font); if ((enc_vector = T1_LoadEncoding(Z_STRVAL_PP(enc))) == NULL) { php_error(E_WARNING, "Couldn't load encoding vector from %s", Z_STRVAL_PP(enc)); @@ -2291,7 +2295,7 @@ PHP_FUNCTION(imagepsencodefont) php_error(E_WARNING, "Couldn't reencode font"); RETURN_FALSE; } - zend_list_insert(enc_vector, GDG(le_ps_enc)); + zend_list_insert(enc_vector, le_ps_enc); RETURN_TRUE; #else php_error(E_WARNING, "ImagePsEncodeFont: No T1lib support in this PHP build"); @@ -2314,7 +2318,7 @@ PHP_FUNCTION(imagepsextendfont) convert_to_double_ex(ext); - ZEND_FETCH_RESOURCE(f_ind, int *, fnt, -1, "Type 1 font", GDG(le_ps_font)); + ZEND_FETCH_RESOURCE(f_ind, int *, fnt, -1, "Type 1 font", le_ps_font); if (T1_ExtendFont(*f_ind, Z_DVAL_PP(ext)) != 0) RETURN_FALSE; @@ -2340,7 +2344,7 @@ PHP_FUNCTION(imagepsslantfont) convert_to_double_ex(slt); - ZEND_FETCH_RESOURCE(f_ind, int *, fnt, -1, "Type 1 font", GDG(le_ps_font)); + ZEND_FETCH_RESOURCE(f_ind, int *, fnt, -1, "Type 1 font", le_ps_font); if (T1_SlantFont(*f_ind, Z_DVAL_PP(slt)) != 0) RETURN_FALSE; RETURN_TRUE; @@ -2399,8 +2403,8 @@ PHP_FUNCTION(imagepstext) WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(bg_img, gdImagePtr, img, -1, "Image", GDG(le_gd)); - ZEND_FETCH_RESOURCE(f_ind, int *, fnt, -1, "Type 1 font", GDG(le_ps_font)); + ZEND_FETCH_RESOURCE(bg_img, gdImagePtr, img, -1, "Image", le_gd); + ZEND_FETCH_RESOURCE(f_ind, int *, fnt, -1, "Type 1 font", le_ps_font); x = Z_LVAL_PP(px); y = Z_LVAL_PP(py); @@ -2540,7 +2544,7 @@ PHP_FUNCTION(imagepsbbox) WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(f_ind, int *, fnt, -1, "Type 1 font", GDG(le_ps_font)); + ZEND_FETCH_RESOURCE(f_ind, int *, fnt, -1, "Type 1 font", le_ps_font); convert_to_string_ex(str); convert_to_long_ex(sz);