diff --git a/ext/gd/gd.c b/ext/gd/gd.c index a63319d48ee14..cdfaaeedaeb7f 100644 --- a/ext/gd/gd.c +++ b/ext/gd/gd.c @@ -103,28 +103,6 @@ static void php_imagettftext_common(INTERNAL_FUNCTION_PARAMETERS, int); pointless warnings */ int overflow2(int a, int b); -/* 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 amount of arguments - * image_filter array in PHP_FUNCTION(imagefilter) - * */ -#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_PIXELATE 11 -#define IMAGE_FILTER_SCATTER 12 -#define IMAGE_FILTER_MAX 12 -#define IMAGE_FILTER_MAX_ARGS 6 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); @@ -367,135 +345,7 @@ PHP_MINIT_FUNCTION(gd) REGISTER_INI_ENTRIES(); - REGISTER_LONG_CONSTANT("IMG_AVIF", PHP_IMG_AVIF, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_GIF", PHP_IMG_GIF, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_JPG", PHP_IMG_JPG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_JPEG", PHP_IMG_JPEG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_PNG", PHP_IMG_PNG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_WBMP", PHP_IMG_WBMP, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_XPM", PHP_IMG_XPM, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_WEBP", PHP_IMG_WEBP, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_BMP", PHP_IMG_BMP, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_TGA", PHP_IMG_TGA, CONST_CS | CONST_PERSISTENT); - -#ifdef gdWebpLossless - /* constant for webp encoding */ - REGISTER_LONG_CONSTANT("IMG_WEBP_LOSSLESS", gdWebpLossless, CONST_CS | CONST_PERSISTENT); -#endif - - /* special colours for gd */ - REGISTER_LONG_CONSTANT("IMG_COLOR_TILED", gdTiled, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_COLOR_STYLED", gdStyled, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_COLOR_BRUSHED", gdBrushed, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_COLOR_STYLEDBRUSHED", gdStyledBrushed, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_COLOR_TRANSPARENT", gdTransparent, CONST_CS | CONST_PERSISTENT); - - /* for imagefilledarc */ - REGISTER_LONG_CONSTANT("IMG_ARC_ROUNDED", gdArc, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_ARC_PIE", gdPie, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_ARC_CHORD", gdChord, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_ARC_NOFILL", gdNoFill, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_ARC_EDGED", gdEdged, CONST_CS | CONST_PERSISTENT); - - /* GD2 image format types */ - REGISTER_LONG_CONSTANT("IMG_GD2_RAW", GD2_FMT_RAW, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_GD2_COMPRESSED", GD2_FMT_COMPRESSED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_FLIP_HORIZONTAL", PHP_GD_FLIP_HORIZONTAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_FLIP_VERTICAL", PHP_GD_FLIP_VERTICAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_FLIP_BOTH", PHP_GD_FLIP_BOTH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_EFFECT_REPLACE", gdEffectReplace, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_EFFECT_ALPHABLEND", gdEffectAlphaBlend, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_EFFECT_NORMAL", gdEffectNormal, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_EFFECT_OVERLAY", gdEffectOverlay, CONST_CS | CONST_PERSISTENT); -#ifdef gdEffectMultiply - REGISTER_LONG_CONSTANT("IMG_EFFECT_MULTIPLY", gdEffectMultiply, CONST_CS | CONST_PERSISTENT); -#endif - - REGISTER_LONG_CONSTANT("IMG_CROP_DEFAULT", GD_CROP_DEFAULT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_CROP_TRANSPARENT", GD_CROP_TRANSPARENT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_CROP_BLACK", GD_CROP_BLACK, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_CROP_WHITE", GD_CROP_WHITE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_CROP_SIDES", GD_CROP_SIDES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_CROP_THRESHOLD", GD_CROP_THRESHOLD, CONST_CS | CONST_PERSISTENT); - - - REGISTER_LONG_CONSTANT("IMG_BELL", GD_BELL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_BESSEL", GD_BESSEL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_BILINEAR_FIXED", GD_BILINEAR_FIXED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_BICUBIC", GD_BICUBIC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_BICUBIC_FIXED", GD_BICUBIC_FIXED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_BLACKMAN", GD_BLACKMAN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_BOX", GD_BOX, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_BSPLINE", GD_BSPLINE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_CATMULLROM", GD_CATMULLROM, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_GAUSSIAN", GD_GAUSSIAN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_GENERALIZED_CUBIC", GD_GENERALIZED_CUBIC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_HERMITE", GD_HERMITE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_HAMMING", GD_HAMMING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_HANNING", GD_HANNING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_MITCHELL", GD_MITCHELL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_POWER", GD_POWER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_QUADRATIC", GD_QUADRATIC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_SINC", GD_SINC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_NEAREST_NEIGHBOUR", GD_NEAREST_NEIGHBOUR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_WEIGHTED4", GD_WEIGHTED4, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_TRIANGLE", GD_TRIANGLE, CONST_CS | CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("IMG_AFFINE_TRANSLATE", GD_AFFINE_TRANSLATE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_AFFINE_SCALE", GD_AFFINE_SCALE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_AFFINE_ROTATE", GD_AFFINE_ROTATE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_AFFINE_SHEAR_HORIZONTAL", GD_AFFINE_SHEAR_HORIZONTAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_AFFINE_SHEAR_VERTICAL", GD_AFFINE_SHEAR_VERTICAL, CONST_CS | CONST_PERSISTENT); - -#ifdef HAVE_GD_BUNDLED - REGISTER_LONG_CONSTANT("GD_BUNDLED", 1, CONST_CS | CONST_PERSISTENT); -#else - REGISTER_LONG_CONSTANT("GD_BUNDLED", 0, CONST_CS | CONST_PERSISTENT); -#endif - - /* 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); - REGISTER_LONG_CONSTANT("IMG_FILTER_PIXELATE", IMAGE_FILTER_PIXELATE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_FILTER_SCATTER", IMAGE_FILTER_SCATTER, CONST_CS | CONST_PERSISTENT); - /* End Section Filters */ - -#ifdef GD_VERSION_STRING - REGISTER_STRING_CONSTANT("GD_VERSION", GD_VERSION_STRING, CONST_CS | CONST_PERSISTENT); -#endif - -#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 - - -#ifdef HAVE_GD_PNG - - /* - * 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 + register_gd_symbols(module_number); return SUCCESS; } diff --git a/ext/gd/gd.stub.php b/ext/gd/gd.stub.php index ec4a9ea3ae028..e3b45cb12f8e7 100644 --- a/ext/gd/gd.stub.php +++ b/ext/gd/gd.stub.php @@ -2,6 +2,469 @@ /** @generate-class-entries */ +/** + * @var int + * @cvalue PHP_IMG_AVIF + */ +const IMG_AVIF = UNKNOWN; +/** + * @var int + * @cvalue PHP_IMG_GIF + */ +const IMG_GIF = UNKNOWN; +/** + * @var int + * @cvalue PHP_IMG_JPG + */ +const IMG_JPG = UNKNOWN; +/** + * @var int + * @cvalue PHP_IMG_JPEG + */ +const IMG_JPEG = UNKNOWN; +/** + * @var int + * @cvalue PHP_IMG_PNG + */ +const IMG_PNG = UNKNOWN; +/** + * @var int + * @cvalue PHP_IMG_WBMP + */ +const IMG_WBMP = UNKNOWN; +/** + * @var int + * @cvalue PHP_IMG_XPM + */ +const IMG_XPM = UNKNOWN; +/** + * @var int + * @cvalue PHP_IMG_WEBP + */ +const IMG_WEBP = UNKNOWN; +/** + * @var int + * @cvalue PHP_IMG_BMP + */ +const IMG_BMP = UNKNOWN; +/** + * @var int + * @cvalue PHP_IMG_TGA + */ +const IMG_TGA = UNKNOWN; + +/* constant for webp encoding */ + +#ifdef gdWebpLossless +/** + * @var int + * @cvalue gdWebpLossless + */ +const IMG_WEBP_LOSSLESS = UNKNOWN; +#endif + +/* special colours for gd */ + +/** + * @var int + * @cvalue gdTiled + */ +const IMG_COLOR_TILED = UNKNOWN; +/** + * @var int + * @cvalue gdStyled + */ +const IMG_COLOR_STYLED = UNKNOWN; +/** + * @var int + * @cvalue gdBrushed + */ +const IMG_COLOR_BRUSHED = UNKNOWN; +/** + * @var int + * @cvalue gdStyledBrushed + */ +const IMG_COLOR_STYLEDBRUSHED = UNKNOWN; +/** + * @var int + * @cvalue gdTransparent + */ +const IMG_COLOR_TRANSPARENT = UNKNOWN; + +/* for imagefilledarc */ + +/** + * @var int + * @cvalue gdArc + */ +const IMG_ARC_ROUNDED = UNKNOWN; +/** + * @var int + * @cvalue gdPie + */ +const IMG_ARC_PIE = UNKNOWN; +/** + * @var int + * @cvalue gdChord + */ +const IMG_ARC_CHORD = UNKNOWN; +/** + * @var int + * @cvalue gdNoFill + */ +const IMG_ARC_NOFILL = UNKNOWN; +/** + * @var int + * @cvalue gdEdged + */ +const IMG_ARC_EDGED = UNKNOWN; + +/* GD2 image format types */ + +/** + * @var int + * @cvalue GD2_FMT_RAW + */ +const IMG_GD2_RAW = UNKNOWN; +/** + * @var int + * @cvalue GD2_FMT_COMPRESSED + */ +const IMG_GD2_COMPRESSED = UNKNOWN; +/** + * @var int + * @cvalue PHP_GD_FLIP_HORIZONTAL + */ +const IMG_FLIP_HORIZONTAL = UNKNOWN; +/** + * @var int + * @cvalue PHP_GD_FLIP_VERTICAL + */ +const IMG_FLIP_VERTICAL = UNKNOWN; +/** + * @var int + * @cvalue PHP_GD_FLIP_BOTH + */ +const IMG_FLIP_BOTH = UNKNOWN; +/** + * @var int + * @cvalue gdEffectReplace + */ +const IMG_EFFECT_REPLACE = UNKNOWN; +/** + * @var int + * @cvalue gdEffectAlphaBlend + */ +const IMG_EFFECT_ALPHABLEND = UNKNOWN; +/** + * @var int + * @cvalue gdEffectNormal + */ +const IMG_EFFECT_NORMAL = UNKNOWN; +/** + * @var int + * @cvalue gdEffectOverlay + */ +const IMG_EFFECT_OVERLAY = UNKNOWN; + +#ifdef gdEffectMultiply +/** + * @var int + * @cvalue gdEffectMultiply + */ +const IMG_EFFECT_MULTIPLY = UNKNOWN; +#endif + +/** + * @var int + * @cvalue GD_CROP_DEFAULT + */ +const IMG_CROP_DEFAULT = UNKNOWN; +/** + * @var int + * @cvalue GD_CROP_TRANSPARENT + */ +const IMG_CROP_TRANSPARENT = UNKNOWN; +/** + * @var int + * @cvalue GD_CROP_BLACK + */ +const IMG_CROP_BLACK = UNKNOWN; +/** + * @var int + * @cvalue GD_CROP_WHITE + */ +const IMG_CROP_WHITE = UNKNOWN; +/** + * @var int + * @cvalue GD_CROP_SIDES + */ +const IMG_CROP_SIDES = UNKNOWN; +/** + * @var int + * @cvalue GD_CROP_THRESHOLD + */ +const IMG_CROP_THRESHOLD = UNKNOWN; + +/** + * @var int + * @cvalue GD_BELL + */ +const IMG_BELL = UNKNOWN; +/** + * @var int + * @cvalue GD_BESSEL + */ +const IMG_BESSEL = UNKNOWN; +/** + * @var int + * @cvalue GD_BILINEAR_FIXED + */ +const IMG_BILINEAR_FIXED = UNKNOWN; +/** + * @var int + * @cvalue GD_BICUBIC + */ +const IMG_BICUBIC = UNKNOWN; +/** + * @var int + * @cvalue GD_BICUBIC_FIXED + */ +const IMG_BICUBIC_FIXED = UNKNOWN; +/** + * @var int + * @cvalue GD_BLACKMAN + */ +const IMG_BLACKMAN = UNKNOWN; +/** + * @var int + * @cvalue GD_BOX + */ +const IMG_BOX = UNKNOWN; +/** + * @var int + * @cvalue GD_BSPLINE + */ +const IMG_BSPLINE = UNKNOWN; +/** + * @var int + * @cvalue GD_CATMULLROM + */ +const IMG_CATMULLROM = UNKNOWN; +/** + * @var int + * @cvalue GD_GAUSSIAN + */ +const IMG_GAUSSIAN = UNKNOWN; +/** + * @var int + * @cvalue GD_GENERALIZED_CUBIC + */ +const IMG_GENERALIZED_CUBIC = UNKNOWN; +/** + * @var int + * @cvalue GD_HERMITE + */ +const IMG_HERMITE = UNKNOWN; +/** + * @var int + * @cvalue GD_HAMMING + */ +const IMG_HAMMING = UNKNOWN; +/** + * @var int + * @cvalue GD_HANNING + */ +const IMG_HANNING = UNKNOWN; +/** + * @var int + * @cvalue GD_MITCHELL + */ +const IMG_MITCHELL = UNKNOWN; +/** + * @var int + * @cvalue GD_POWER + */ +const IMG_POWER = UNKNOWN; +/** + * @var int + * @cvalue GD_QUADRATIC + */ +const IMG_QUADRATIC = UNKNOWN; +/** + * @var int + * @cvalue GD_SINC + */ +const IMG_SINC = UNKNOWN; +/** + * @var int + * @cvalue GD_NEAREST_NEIGHBOUR + */ +const IMG_NEAREST_NEIGHBOUR = UNKNOWN; +/** + * @var int + * @cvalue GD_WEIGHTED4 + */ +const IMG_WEIGHTED4 = UNKNOWN; +/** + * @var int + * @cvalue GD_TRIANGLE + */ +const IMG_TRIANGLE = UNKNOWN; + +/** + * @var int + * @cvalue GD_AFFINE_TRANSLATE + */ +const IMG_AFFINE_TRANSLATE = UNKNOWN; +/** + * @var int + * @cvalue GD_AFFINE_SCALE + */ +const IMG_AFFINE_SCALE = UNKNOWN; +/** + * @var int + * @cvalue GD_AFFINE_ROTATE + */ +const IMG_AFFINE_ROTATE = UNKNOWN; +/** + * @var int + * @cvalue GD_AFFINE_SHEAR_HORIZONTAL + */ +const IMG_AFFINE_SHEAR_HORIZONTAL = UNKNOWN; +/** + * @var int + * @cvalue GD_AFFINE_SHEAR_VERTICAL + */ +const IMG_AFFINE_SHEAR_VERTICAL = UNKNOWN; + +/** + * @var int + * @cvalue GD_BUNDLED + */ +const GD_BUNDLED = UNKNOWN; + +/* Section Filters */ + +/** + * @var int + * @cvalue IMAGE_FILTER_NEGATE + */ +const IMG_FILTER_NEGATE = UNKNOWN; +/** + * @var int + * @cvalue IMAGE_FILTER_GRAYSCALE + */ +const IMG_FILTER_GRAYSCALE = UNKNOWN; +/** + * @var int + * @cvalue IMAGE_FILTER_BRIGHTNESS + */ +const IMG_FILTER_BRIGHTNESS = UNKNOWN; +/** + * @var int + * @cvalue IMAGE_FILTER_CONTRAST + */ +const IMG_FILTER_CONTRAST = UNKNOWN; +/** + * @var int + * @cvalue IMAGE_FILTER_COLORIZE + */ +const IMG_FILTER_COLORIZE = UNKNOWN; +/** + * @var int + * @cvalue IMAGE_FILTER_EDGEDETECT + */ +const IMG_FILTER_EDGEDETECT = UNKNOWN; +/** + * @var int + * @cvalue IMAGE_FILTER_GAUSSIAN_BLUR + */ +const IMG_FILTER_GAUSSIAN_BLUR = UNKNOWN; +/** + * @var int + * @cvalue IMAGE_FILTER_SELECTIVE_BLUR + */ +const IMG_FILTER_SELECTIVE_BLUR = UNKNOWN; +/** + * @var int + * @cvalue IMAGE_FILTER_EMBOSS + */ +const IMG_FILTER_EMBOSS = UNKNOWN; +/** + * @var int + * @cvalue IMAGE_FILTER_MEAN_REMOVAL + */ +const IMG_FILTER_MEAN_REMOVAL = UNKNOWN; +/** + * @var int + * @cvalue IMAGE_FILTER_SMOOTH + */ +const IMG_FILTER_SMOOTH = UNKNOWN; +/** + * @var int + * @cvalue IMAGE_FILTER_PIXELATE + */ +const IMG_FILTER_PIXELATE = UNKNOWN; +/** + * @var int + * @cvalue IMAGE_FILTER_SCATTER + */ +const IMG_FILTER_SCATTER = UNKNOWN; + +#ifdef GD_VERSION_STRING +/** + * @var string + * @cvalue GD_VERSION_STRING + */ +const GD_VERSION = UNKNOWN; +#endif + +#if (defined(GD_MAJOR_VERSION) && defined(GD_MINOR_VERSION) && defined(GD_RELEASE_VERSION) && defined(GD_EXTRA_VERSION)) +/** + * @var int + * @cvalue GD_MAJOR_VERSION + */ +const GD_MAJOR_VERSION = UNKNOWN; +/** + * @var int + * @cvalue GD_MINOR_VERSION + */ +const GD_MINOR_VERSION = UNKNOWN; +/** + * @var int + * @cvalue GD_RELEASE_VERSION + */ +const GD_RELEASE_VERSION = UNKNOWN; +/** + * @var string + * @cvalue GD_EXTRA_VERSION + */ +const GD_EXTRA_VERSION = UNKNOWN; +#endif + +#ifdef HAVE_GD_PNG +/* + * 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... + */ +/** @var int */ +const PNG_NO_FILTER = 0x00; +/** @var int */ +const PNG_FILTER_NONE = 0x08; +/** @var int */ +const PNG_FILTER_SUB = 0x10; +/** @var int */ +const PNG_FILTER_UP = 0x20; +/** @var int */ +const PNG_FILTER_AVG = 0x40; +/** @var int */ +const PNG_FILTER_PAETH = 0x80; +/** @var int */ +const PNG_ALL_FILTERS = 0x08 | 0x10 | 0x20 | 0x40 | 0x80; +#endif + /** * @strict-properties * @not-serializable diff --git a/ext/gd/gd_arginfo.h b/ext/gd/gd_arginfo.h index b0f22ace5e679..9e644c19f9a50 100644 --- a/ext/gd/gd_arginfo.h +++ b/ext/gd/gd_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: a60454e502813da9aba42100fdbfd619c8da54d2 */ + * Stub hash: 68be83247e5e142879ce1bc4340c1c5b8a8f670a */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_gd_info, 0, 0, IS_ARRAY, 0) ZEND_END_ARG_INFO() @@ -875,6 +875,127 @@ static const zend_function_entry class_GdFont_methods[] = { ZEND_FE_END }; +static void register_gd_symbols(int module_number) +{ + REGISTER_LONG_CONSTANT("IMG_AVIF", PHP_IMG_AVIF, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_GIF", PHP_IMG_GIF, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_JPG", PHP_IMG_JPG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_JPEG", PHP_IMG_JPEG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_PNG", PHP_IMG_PNG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_WBMP", PHP_IMG_WBMP, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_XPM", PHP_IMG_XPM, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_WEBP", PHP_IMG_WEBP, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_BMP", PHP_IMG_BMP, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_TGA", PHP_IMG_TGA, CONST_CS | CONST_PERSISTENT); +#if defined(gdWebpLossless) + REGISTER_LONG_CONSTANT("IMG_WEBP_LOSSLESS", gdWebpLossless, CONST_CS | CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("IMG_COLOR_TILED", gdTiled, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_COLOR_STYLED", gdStyled, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_COLOR_BRUSHED", gdBrushed, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_COLOR_STYLEDBRUSHED", gdStyledBrushed, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_COLOR_TRANSPARENT", gdTransparent, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_ARC_ROUNDED", gdArc, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_ARC_PIE", gdPie, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_ARC_CHORD", gdChord, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_ARC_NOFILL", gdNoFill, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_ARC_EDGED", gdEdged, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_GD2_RAW", GD2_FMT_RAW, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_GD2_COMPRESSED", GD2_FMT_COMPRESSED, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_FLIP_HORIZONTAL", PHP_GD_FLIP_HORIZONTAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_FLIP_VERTICAL", PHP_GD_FLIP_VERTICAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_FLIP_BOTH", PHP_GD_FLIP_BOTH, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_EFFECT_REPLACE", gdEffectReplace, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_EFFECT_ALPHABLEND", gdEffectAlphaBlend, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_EFFECT_NORMAL", gdEffectNormal, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_EFFECT_OVERLAY", gdEffectOverlay, CONST_CS | CONST_PERSISTENT); +#if defined(gdEffectMultiply) + REGISTER_LONG_CONSTANT("IMG_EFFECT_MULTIPLY", gdEffectMultiply, CONST_CS | CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("IMG_CROP_DEFAULT", GD_CROP_DEFAULT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_CROP_TRANSPARENT", GD_CROP_TRANSPARENT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_CROP_BLACK", GD_CROP_BLACK, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_CROP_WHITE", GD_CROP_WHITE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_CROP_SIDES", GD_CROP_SIDES, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_CROP_THRESHOLD", GD_CROP_THRESHOLD, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_BELL", GD_BELL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_BESSEL", GD_BESSEL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_BILINEAR_FIXED", GD_BILINEAR_FIXED, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_BICUBIC", GD_BICUBIC, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_BICUBIC_FIXED", GD_BICUBIC_FIXED, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_BLACKMAN", GD_BLACKMAN, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_BOX", GD_BOX, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_BSPLINE", GD_BSPLINE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_CATMULLROM", GD_CATMULLROM, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_GAUSSIAN", GD_GAUSSIAN, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_GENERALIZED_CUBIC", GD_GENERALIZED_CUBIC, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_HERMITE", GD_HERMITE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_HAMMING", GD_HAMMING, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_HANNING", GD_HANNING, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_MITCHELL", GD_MITCHELL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_POWER", GD_POWER, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_QUADRATIC", GD_QUADRATIC, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_SINC", GD_SINC, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_NEAREST_NEIGHBOUR", GD_NEAREST_NEIGHBOUR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_WEIGHTED4", GD_WEIGHTED4, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_TRIANGLE", GD_TRIANGLE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_AFFINE_TRANSLATE", GD_AFFINE_TRANSLATE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_AFFINE_SCALE", GD_AFFINE_SCALE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_AFFINE_ROTATE", GD_AFFINE_ROTATE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_AFFINE_SHEAR_HORIZONTAL", GD_AFFINE_SHEAR_HORIZONTAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_AFFINE_SHEAR_VERTICAL", GD_AFFINE_SHEAR_VERTICAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("GD_BUNDLED", GD_BUNDLED, CONST_CS | CONST_PERSISTENT); + 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); + REGISTER_LONG_CONSTANT("IMG_FILTER_PIXELATE", IMAGE_FILTER_PIXELATE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_FILTER_SCATTER", IMAGE_FILTER_SCATTER, CONST_CS | CONST_PERSISTENT); +#if defined(GD_VERSION_STRING) + REGISTER_STRING_CONSTANT("GD_VERSION", GD_VERSION_STRING, CONST_CS | CONST_PERSISTENT); +#endif +#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); +#endif +#if (defined(GD_MAJOR_VERSION) && defined(GD_MINOR_VERSION) && defined(GD_RELEASE_VERSION) && defined(GD_EXTRA_VERSION)) + REGISTER_LONG_CONSTANT("GD_MINOR_VERSION", GD_MINOR_VERSION, CONST_CS | CONST_PERSISTENT); +#endif +#if (defined(GD_MAJOR_VERSION) && defined(GD_MINOR_VERSION) && defined(GD_RELEASE_VERSION) && defined(GD_EXTRA_VERSION)) + REGISTER_LONG_CONSTANT("GD_RELEASE_VERSION", GD_RELEASE_VERSION, CONST_CS | CONST_PERSISTENT); +#endif +#if (defined(GD_MAJOR_VERSION) && defined(GD_MINOR_VERSION) && defined(GD_RELEASE_VERSION) && defined(GD_EXTRA_VERSION)) + REGISTER_STRING_CONSTANT("GD_EXTRA_VERSION", GD_EXTRA_VERSION, CONST_CS | CONST_PERSISTENT); +#endif +#if defined(HAVE_GD_PNG) + REGISTER_LONG_CONSTANT("PNG_NO_FILTER", 0, CONST_CS | CONST_PERSISTENT); +#endif +#if defined(HAVE_GD_PNG) + REGISTER_LONG_CONSTANT("PNG_FILTER_NONE", 8, CONST_CS | CONST_PERSISTENT); +#endif +#if defined(HAVE_GD_PNG) + REGISTER_LONG_CONSTANT("PNG_FILTER_SUB", 16, CONST_CS | CONST_PERSISTENT); +#endif +#if defined(HAVE_GD_PNG) + REGISTER_LONG_CONSTANT("PNG_FILTER_UP", 32, CONST_CS | CONST_PERSISTENT); +#endif +#if defined(HAVE_GD_PNG) + REGISTER_LONG_CONSTANT("PNG_FILTER_AVG", 64, CONST_CS | CONST_PERSISTENT); +#endif +#if defined(HAVE_GD_PNG) + REGISTER_LONG_CONSTANT("PNG_FILTER_PAETH", 128, CONST_CS | CONST_PERSISTENT); +#endif +#if defined(HAVE_GD_PNG) + REGISTER_LONG_CONSTANT("PNG_ALL_FILTERS", 248, CONST_CS | CONST_PERSISTENT); +#endif +} + static zend_class_entry *register_class_GdImage(void) { zend_class_entry ce, *class_entry; diff --git a/ext/gd/php_gd.h b/ext/gd/php_gd.h index f063f30e3e075..8d27f8cc75a60 100644 --- a/ext/gd/php_gd.h +++ b/ext/gd/php_gd.h @@ -55,6 +55,35 @@ #define PHP_IMG_TGA 128 #define PHP_IMG_AVIF 256 +/* 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 amount of arguments + * image_filter array in PHP_FUNCTION(imagefilter) + * */ +#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_PIXELATE 11 +#define IMAGE_FILTER_SCATTER 12 +#define IMAGE_FILTER_MAX 12 +#define IMAGE_FILTER_MAX_ARGS 6 + +#ifdef HAVE_GD_BUNDLED +#define GD_BUNDLED 1 +#else +#define GD_BUNDLED 0 +#endif + #ifdef PHP_WIN32 # ifdef PHP_GD_EXPORTS # define PHP_GD_API __declspec(dllexport)