--- /dev/null
- function imagecolorresolvealpha($im, int $red, int $green, int $blue, int $alpha): int {}
+<?php
+
+function gd_info(): array {}
+
+/** @return int|false */
+function imageloadfont(string $filename) {}
+
+function imagesetstyle($im, array $styles): bool {}
+
+/** @return resource|false */
+function imagecreatetruecolor(int $x_size, int $y_size) {}
+
+function imageistruecolor($im): bool {}
+
+function imagetruecolortopalette($im, bool $ditherFlag, int $colorWanted): bool {}
+
+function imagepalettetotruecolor($im): bool {}
+
+function imagecolormatch($im1, $im2): bool {}
+
+function imagesetthickness($im, int $thickness): bool {}
+
+function imagefilledellipse($im, int $cx, int $cy, int $w, int $h, int $color): bool {}
+
+function imagefilledarc($im, int $cx, int $cy, int $w, int $h, int $s, int $e, int $col, int $style): bool {}
+
+function imagealphablending($im, bool $blend): bool {}
+
+function imagesavealpha($im, bool $save): bool {}
+
+function imagelayereffect($im, int $effect): bool {}
+
+/** @return int|false */
+function imagecolorallocatealpha($im, int $red, int $green, int $blue, int $alpha) {}
+
- function imagecolorclosestalpha($im, int $red, int $green, int $blue, int $alpha): int {}
++/** @return int|false */
++function imagecolorresolvealpha($im, int $red, int $green, int $blue, int $alpha) {}
+
- function imagecolorexactalpha($im, int $red, int $green, int $blue, int $alpha): int {}
++/** @return int|false */
++function imagecolorclosestalpha($im, int $red, int $green, int $blue, int $alpha) {}
+
- function imagecolorclosest($im, int $red, int $green, int $blue): int {}
++/** @return int|false */
++function imagecolorexactalpha($im, int $red, int $green, int $blue, int $alpha) {}
+
+function imagecopyresampled($dst_im, $src_im, int $dst_x, int $dst_y, int $src_x, int $src_y, int $dst_w, int $dst_h, int $src_w, int $src_h): bool {}
+
+#ifdef PHP_WIN32
+
+/** @return resource|false */
+function imagegrabwindow(int $handle, int $client_area = 0) {}
+
+/** @return resource|false */
+function imagegrabscreen() {}
+
+#endif
+
+/** @return resource|false */
+function imagerotate($im, float $angle, int $bgdcolor, int $ignoretransparent = 0) {}
+
+function imagesettile($im, $tile): bool {}
+
+function imagesetbrush($im, $brush): bool {}
+
+/** @return resource|false */
+function imagecreate(int $x_size, int $y_size) {}
+
+function imagetypes(): int {}
+
+/** @return resource|false */
+function imagecreatefromstring(string $image) {}
+
+/** @return resource|false */
+function imagecreatefromgif(string $filename) {}
+
+#ifdef HAVE_GD_JPG
+/** @return resource|false */
+function imagecreatefromjpeg(string $filename) {}
+#endif
+
+#ifdef HAVE_GD_PNG
+/** @return resource|false */
+function imagecreatefrompng(string $filename) {}
+#endif
+
+#ifdef HAVE_GD_WEBP
+/** @return resource|false */
+function imagecreatefromwebp(string $filename) {}
+#endif
+
+/** @return resource|false */
+function imagecreatefromxbm(string $filename) {}
+
+#ifdef HAVE_GD_XPM
+/** @return resource|false */
+function imagecreatefromxpm(string $filename) {}
+#endif
+
+/** @return resource|false */
+function imagecreatefromwbmp(string $filename) {}
+
+/** @return resource|false */
+function imagecreatefromgd(string $filename) {}
+
+/** @return resource|false */
+function imagecreatefromgd2(string $filename) {}
+
+/** @return resource|false */
+function imagecreatefromgd2part(string $filename, int $srcX, int $srcY, int $width, int $height) {}
+
+#ifdef HAVE_GD_BMP
+/** @return resource|false */
+function imagecreatefrombmp(string $filename) {}
+#endif
+
+#ifdef HAVE_GD_TGA
+/** @return resource|false */
+function imagecreatefromtga(string $filename) {}
+#endif
+
+function imagexbm($im, string $filename, int $foreground = UNKNOWN): bool {}
+
+function imagegif($im, $to = NULL): bool {}
+
+#ifdef HAVE_GD_PNG
+function imagepng($im, $to = NULL, int $quality = UNKNOWN, int $filters = UNKNOWN): bool {}
+#endif
+
+#ifdef HAVE_GD_WEBP
+function imagewebp($im, $to = NULL, int $quality = UNKNOWN): bool {}
+#endif
+
+#ifdef HAVE_GD_JPG
+function imagejpeg($im, $to = NULL, int $quality = UNKNOWN): bool {}
+#endif
+
+function imagewbmp($im, $to = NULL, int $foreground = UNKNOWN): bool {}
+
+function imagegd($im, $to = UNKNOWN): bool {}
+
+function imagegd2($im, $to = UNKNOWN, int $chunk_size = UNKNOWN, int $type = UNKNOWN): bool {}
+
+#ifdef HAVE_GD_BMP
+function imagebmp($im, $to = NULL, int $compressed = 1): bool {}
+#endif
+
+function imagedestroy($im): bool {}
+
+/** @return int|false */
+function imagecolorallocate($im, int $red, int $green, int $blue) {}
+
+function imagepalettecopy($dst, $src): void {}
+
+/** @return int|false */
+function imagecolorat($im, int $x, int $y) {}
+
- function imagecolorclosesthwb($im, int $red, int $green, int $blue): int {}
++/** @return int|false */
++function imagecolorclosest($im, int $red, int $green, int $blue) {}
+
- function imagecolorresolve($im, int $red, int $green, int $blue): int {}
++/** @return int|false */
++function imagecolorclosesthwb($im, int $red, int $green, int $blue) {}
+
+function imagecolordeallocate($im, int $index): bool {}
+
- function imagecolorexact($im, int $red, int $green, int $blue): int {}
++/** @return int|false */
++function imagecolorresolve($im, int $red, int $green, int $blue) {}
+
++/** @return int|false */
++function imagecolorexact($im, int $red, int $green, int $blue) {}
+
+/** @return ?false */
+function imagecolorset($im, int $color, int $red, int $green, int $blue, int $alpha = 0) {}
+
+/** @return array|false */
+function imagecolorsforindex($im, int $index) {}
+
+function imagegammacorrect($im, float $inputgamma, float $outputgamma): bool {}
+
+function imagesetpixel($im, int $x, int $y, int $col): bool {}
+
+function imageline($im, int $x1, int $y1, int $x2, int $y2, int $col): bool {}
+
+function imagedashedline($im, int $x1, int $y1, int $x2, int $y2, int $col): bool {}
+
+function imagerectangle($im, int $x1, int $y1, int $x2, int $y2, int $col): bool {}
+
+function imagefilledrectangle($im, int $x1, int $y1, int $x2, int $y2, int $col): bool {}
+
+function imagearc($im, int $cx, int $cy, int $w, int $h, int $s, int $e, int $col): bool {}
+
+function imageellipse($im, int $cx, int $cy, int $w, int $h, int $color): bool {}
+
+function imagefilltoborder($im, int $x, int $y, int $border, int $col): bool {}
+
+function imagefill($im, int $x, int $y, int $col): bool {}
+
+function imagecolorstotal($im): int {}
+
+function imagecolortransparent($im, int $col = UNKNOWN): ?int {}
+
+function imageinterlace($im, int $interlace = UNKNOWN): ?int {}
+
+function imagepolygon($im, array $points, int $num_pos, int $col): bool {}
+
+function imageopenpolygon($im, array $points, int $num_pos, int $col): bool {}
+
+function imagefilledpolygon($im, array $points, int $num_pos, int $col): bool {}
+
+function imagefontwidth(int $font): int {}
+
+function imagefontheight(int $font): int {}
+
+function imagechar($im, int $font, int $x, int $y, string $c, int $col): bool {}
+
+function imagecharup($im, int $font, int $x, int $y, string $c, int $col): bool {}
+
+function imagestring($im, int $font, int $x, int $y, string $str, int $col): bool {}
+
+function imagestringup($im, int $font, int $x, int $y, string $str, int $col): bool {}
+
+function imagecopy($dst_im, $src_im, int $dst_x, int $dst_y, int $src_x, int $src_y, int $src_w, int $src_h): bool {}
+
+function imagecopymerge($src_im, $dst_im, int $dst_x, int $dst_y, int $src_x, int $src_y, int $src_w, int $src_h, int $pct): bool {}
+
+function imagecopymergegray($src_im, $dst_im, int $dst_x, int $dst_y, int $src_x, int $src_y, int $src_w, int $src_h, int $pct): bool {}
+
+function imagecopyresized($dst_im, $src_im, int $dst_x, int $dst_y, int $src_x, int $src_y, int $dst_w, int $dst_h, int $src_w, int $src_h): bool {}
+
+function imagesx($im): int {}
+
+function imagesy($im): int {}
+
+function imagesetclip($im, int $x1, int $x2, int $y1, int $y2): bool {}
+
+function imagegetclip($im): array {}
+
+#ifdef HAVE_GD_FREETYPE
+/** @return array|false */
+function imageftbbox(float $size, float $angle, string $font_file, string $text, array $extrainfo = UNKNOWN) {}
+
+function imagefttext($im, float $size, float $angle, int $x, int $y, int $col, string $font_file, string $text, array $extrainfo = UNKNOWN) {}
+
+function imagettfbbox(float $size, float $angle, string $font_file, string $text) {}
+
+function imagettftext($im, float $size, float $angle, int $x, int $y, int $col, string $font_file, string $text) {}
+#endif
+
+function imagefilter($im, int $filtertype, $arg1 = UNKNOWN, $arg2 = UNKNOWN, $arg3 = UNKNOWN, $arg4 = UNKNOWN): bool {}
+
+function imageconvolution($im, array $matrix3x3, float $div, float $offset): bool {}
+
+function imageflip($im, int $mode): bool {}
+
+function imageantialias($im, bool $on): bool {}
+
+/** @return resource|false */
+function imagecrop($im, array $rect) {}
+
+/** @return resource|false */
+function imagecropauto($im, int $mode = IMG_CROP_DEFAULT, float $threshold = 0.5, int $color = -1) {}
+
+/** @return resource|false */
+function imagescale($im, int $new_width, int $new_height = UNKNOWN, int $mode = IMG_BILINEAR_FIXED) {}
+
+/** @return resource|false */
+function imageaffine($im, array $affine, array $clip = UNKNOWN) {}
+
+/** @return array|false */
+function imageaffinematrixget(int $type, $options = UNKNOWN) {}
+
+/** @return array|false */
+function imageaffinematrixconcat(array $m1, array $m2) {}
+
+function imagesetinterpolation($im, int $method = IMG_BILENEAR_FIXED): bool {}
+
+/** @return array|true */
+function imageresolution($im, int $res_x = UNKNOWN, int $res_y = UNKNOWN) {}
--- /dev/null
- ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagecolorresolvealpha, 0, 5, IS_LONG, 0)
- ZEND_ARG_INFO(0, im)
- ZEND_ARG_TYPE_INFO(0, red, IS_LONG, 0)
- ZEND_ARG_TYPE_INFO(0, green, IS_LONG, 0)
- ZEND_ARG_TYPE_INFO(0, blue, IS_LONG, 0)
- ZEND_ARG_TYPE_INFO(0, alpha, IS_LONG, 0)
- ZEND_END_ARG_INFO()
+/* This is a generated file, edit the .stub.php file instead. */
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_gd_info, 0, 0, IS_ARRAY, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imageloadfont, 0, 0, 1)
+ ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagesetstyle, 0, 2, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, styles, IS_ARRAY, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imagecreatetruecolor, 0, 0, 2)
+ ZEND_ARG_TYPE_INFO(0, x_size, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, y_size, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imageistruecolor, 0, 1, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagetruecolortopalette, 0, 3, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, ditherFlag, _IS_BOOL, 0)
+ ZEND_ARG_TYPE_INFO(0, colorWanted, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_imagepalettetotruecolor arginfo_imageistruecolor
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagecolormatch, 0, 2, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im1)
+ ZEND_ARG_INFO(0, im2)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagesetthickness, 0, 2, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, thickness, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagefilledellipse, 0, 6, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, cx, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, cy, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, w, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, h, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, color, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagefilledarc, 0, 9, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, cx, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, cy, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, w, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, h, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, s, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, e, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, col, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, style, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagealphablending, 0, 2, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, blend, _IS_BOOL, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagesavealpha, 0, 2, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, save, _IS_BOOL, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagelayereffect, 0, 2, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, effect, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imagecolorallocatealpha, 0, 0, 5)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, red, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, green, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, blue, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, alpha, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
- #define arginfo_imagecolorclosestalpha arginfo_imagecolorresolvealpha
++#define arginfo_imagecolorresolvealpha arginfo_imagecolorallocatealpha
+
- #define arginfo_imagecolorexactalpha arginfo_imagecolorresolvealpha
++#define arginfo_imagecolorclosestalpha arginfo_imagecolorallocatealpha
+
- ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagecolorclosest, 0, 4, IS_LONG, 0)
- ZEND_ARG_INFO(0, im)
- ZEND_ARG_TYPE_INFO(0, red, IS_LONG, 0)
- ZEND_ARG_TYPE_INFO(0, green, IS_LONG, 0)
- ZEND_ARG_TYPE_INFO(0, blue, IS_LONG, 0)
- ZEND_END_ARG_INFO()
++#define arginfo_imagecolorexactalpha arginfo_imagecolorallocatealpha
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagecopyresampled, 0, 10, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, dst_im)
+ ZEND_ARG_INFO(0, src_im)
+ ZEND_ARG_TYPE_INFO(0, dst_x, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, dst_y, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, src_x, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, src_y, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, dst_w, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, dst_h, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, src_w, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, src_h, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#if defined(PHP_WIN32)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imagegrabwindow, 0, 0, 1)
+ ZEND_ARG_TYPE_INFO(0, handle, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, client_area, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+#if defined(PHP_WIN32)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imagegrabscreen, 0, 0, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imagerotate, 0, 0, 3)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, angle, IS_DOUBLE, 0)
+ ZEND_ARG_TYPE_INFO(0, bgdcolor, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, ignoretransparent, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagesettile, 0, 2, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_INFO(0, tile)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagesetbrush, 0, 2, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_INFO(0, brush)
+ZEND_END_ARG_INFO()
+
+#define arginfo_imagecreate arginfo_imagecreatetruecolor
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagetypes, 0, 0, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imagecreatefromstring, 0, 0, 1)
+ ZEND_ARG_TYPE_INFO(0, image, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_imagecreatefromgif arginfo_imageloadfont
+
+#if defined(HAVE_GD_JPG)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imagecreatefromjpeg, 0, 0, 1)
+ ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+#if defined(HAVE_GD_PNG)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imagecreatefrompng, 0, 0, 1)
+ ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+#if defined(HAVE_GD_WEBP)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imagecreatefromwebp, 0, 0, 1)
+ ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+#define arginfo_imagecreatefromxbm arginfo_imageloadfont
+
+#if defined(HAVE_GD_XPM)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imagecreatefromxpm, 0, 0, 1)
+ ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+#define arginfo_imagecreatefromwbmp arginfo_imageloadfont
+
+#define arginfo_imagecreatefromgd arginfo_imageloadfont
+
+#define arginfo_imagecreatefromgd2 arginfo_imageloadfont
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imagecreatefromgd2part, 0, 0, 5)
+ ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, srcX, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, srcY, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, width, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, height, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#if defined(HAVE_GD_BMP)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imagecreatefrombmp, 0, 0, 1)
+ ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+#if defined(HAVE_GD_TGA)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imagecreatefromtga, 0, 0, 1)
+ ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagexbm, 0, 2, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, foreground, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagegif, 0, 1, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_INFO(0, to)
+ZEND_END_ARG_INFO()
+
+#if defined(HAVE_GD_PNG)
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagepng, 0, 1, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_INFO(0, to)
+ ZEND_ARG_TYPE_INFO(0, quality, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, filters, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+#if defined(HAVE_GD_WEBP)
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagewebp, 0, 1, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_INFO(0, to)
+ ZEND_ARG_TYPE_INFO(0, quality, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+#if defined(HAVE_GD_JPG)
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagejpeg, 0, 1, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_INFO(0, to)
+ ZEND_ARG_TYPE_INFO(0, quality, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagewbmp, 0, 1, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_INFO(0, to)
+ ZEND_ARG_TYPE_INFO(0, foreground, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_imagegd arginfo_imagegif
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagegd2, 0, 1, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_INFO(0, to)
+ ZEND_ARG_TYPE_INFO(0, chunk_size, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, type, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#if defined(HAVE_GD_BMP)
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagebmp, 0, 1, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_INFO(0, to)
+ ZEND_ARG_TYPE_INFO(0, compressed, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+#define arginfo_imagedestroy arginfo_imageistruecolor
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imagecolorallocate, 0, 0, 4)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, red, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, green, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, blue, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagepalettecopy, 0, 2, IS_VOID, 0)
+ ZEND_ARG_INFO(0, dst)
+ ZEND_ARG_INFO(0, src)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imagecolorat, 0, 0, 3)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, x, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, y, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
- #define arginfo_imagecolorclosesthwb arginfo_imagecolorclosest
++#define arginfo_imagecolorclosest arginfo_imagecolorallocate
+
- #define arginfo_imagecolorresolve arginfo_imagecolorclosest
++#define arginfo_imagecolorclosesthwb arginfo_imagecolorallocate
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagecolordeallocate, 0, 2, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, index, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
- #define arginfo_imagecolorexact arginfo_imagecolorclosest
++#define arginfo_imagecolorresolve arginfo_imagecolorallocate
+
++#define arginfo_imagecolorexact arginfo_imagecolorallocate
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imagecolorset, 0, 0, 5)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, color, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, red, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, green, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, blue, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, alpha, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imagecolorsforindex, 0, 0, 2)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, index, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagegammacorrect, 0, 3, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, inputgamma, IS_DOUBLE, 0)
+ ZEND_ARG_TYPE_INFO(0, outputgamma, IS_DOUBLE, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagesetpixel, 0, 4, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, x, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, y, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, col, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imageline, 0, 6, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, x1, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, y1, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, x2, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, y2, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, col, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_imagedashedline arginfo_imageline
+
+#define arginfo_imagerectangle arginfo_imageline
+
+#define arginfo_imagefilledrectangle arginfo_imageline
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagearc, 0, 8, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, cx, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, cy, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, w, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, h, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, s, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, e, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, col, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_imageellipse arginfo_imagefilledellipse
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagefilltoborder, 0, 5, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, x, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, y, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, border, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, col, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_imagefill arginfo_imagesetpixel
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagecolorstotal, 0, 1, IS_LONG, 0)
+ ZEND_ARG_INFO(0, im)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagecolortransparent, 0, 1, IS_LONG, 1)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, col, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imageinterlace, 0, 1, IS_LONG, 1)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, interlace, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagepolygon, 0, 4, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, points, IS_ARRAY, 0)
+ ZEND_ARG_TYPE_INFO(0, num_pos, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, col, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_imageopenpolygon arginfo_imagepolygon
+
+#define arginfo_imagefilledpolygon arginfo_imagepolygon
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagefontwidth, 0, 1, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, font, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_imagefontheight arginfo_imagefontwidth
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagechar, 0, 6, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, font, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, x, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, y, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, c, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, col, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_imagecharup arginfo_imagechar
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagestring, 0, 6, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, font, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, x, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, y, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, col, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_imagestringup arginfo_imagestring
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagecopy, 0, 8, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, dst_im)
+ ZEND_ARG_INFO(0, src_im)
+ ZEND_ARG_TYPE_INFO(0, dst_x, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, dst_y, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, src_x, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, src_y, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, src_w, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, src_h, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagecopymerge, 0, 9, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, src_im)
+ ZEND_ARG_INFO(0, dst_im)
+ ZEND_ARG_TYPE_INFO(0, dst_x, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, dst_y, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, src_x, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, src_y, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, src_w, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, src_h, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, pct, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_imagecopymergegray arginfo_imagecopymerge
+
+#define arginfo_imagecopyresized arginfo_imagecopyresampled
+
+#define arginfo_imagesx arginfo_imagecolorstotal
+
+#define arginfo_imagesy arginfo_imagecolorstotal
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagesetclip, 0, 5, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, x1, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, x2, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, y1, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, y2, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagegetclip, 0, 1, IS_ARRAY, 0)
+ ZEND_ARG_INFO(0, im)
+ZEND_END_ARG_INFO()
+
+#if defined(HAVE_GD_FREETYPE)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imageftbbox, 0, 0, 4)
+ ZEND_ARG_TYPE_INFO(0, size, IS_DOUBLE, 0)
+ ZEND_ARG_TYPE_INFO(0, angle, IS_DOUBLE, 0)
+ ZEND_ARG_TYPE_INFO(0, font_file, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, text, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, extrainfo, IS_ARRAY, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+#if defined(HAVE_GD_FREETYPE)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imagefttext, 0, 0, 8)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, size, IS_DOUBLE, 0)
+ ZEND_ARG_TYPE_INFO(0, angle, IS_DOUBLE, 0)
+ ZEND_ARG_TYPE_INFO(0, x, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, y, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, col, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, font_file, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, text, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, extrainfo, IS_ARRAY, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+#if defined(HAVE_GD_FREETYPE)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imagettfbbox, 0, 0, 4)
+ ZEND_ARG_TYPE_INFO(0, size, IS_DOUBLE, 0)
+ ZEND_ARG_TYPE_INFO(0, angle, IS_DOUBLE, 0)
+ ZEND_ARG_TYPE_INFO(0, font_file, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, text, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+#if defined(HAVE_GD_FREETYPE)
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imagettftext, 0, 0, 8)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, size, IS_DOUBLE, 0)
+ ZEND_ARG_TYPE_INFO(0, angle, IS_DOUBLE, 0)
+ ZEND_ARG_TYPE_INFO(0, x, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, y, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, col, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, font_file, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, text, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagefilter, 0, 2, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, filtertype, IS_LONG, 0)
+ ZEND_ARG_INFO(0, arg1)
+ ZEND_ARG_INFO(0, arg2)
+ ZEND_ARG_INFO(0, arg3)
+ ZEND_ARG_INFO(0, arg4)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imageconvolution, 0, 4, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, matrix3x3, IS_ARRAY, 0)
+ ZEND_ARG_TYPE_INFO(0, div, IS_DOUBLE, 0)
+ ZEND_ARG_TYPE_INFO(0, offset, IS_DOUBLE, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imageflip, 0, 2, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, mode, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imageantialias, 0, 2, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, on, _IS_BOOL, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imagecrop, 0, 0, 2)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, rect, IS_ARRAY, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imagecropauto, 0, 0, 1)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, mode, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, threshold, IS_DOUBLE, 0)
+ ZEND_ARG_TYPE_INFO(0, color, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imagescale, 0, 0, 2)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, new_width, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, new_height, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, mode, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imageaffine, 0, 0, 2)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, affine, IS_ARRAY, 0)
+ ZEND_ARG_TYPE_INFO(0, clip, IS_ARRAY, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imageaffinematrixget, 0, 0, 1)
+ ZEND_ARG_TYPE_INFO(0, type, IS_LONG, 0)
+ ZEND_ARG_INFO(0, options)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imageaffinematrixconcat, 0, 0, 2)
+ ZEND_ARG_TYPE_INFO(0, m1, IS_ARRAY, 0)
+ ZEND_ARG_TYPE_INFO(0, m2, IS_ARRAY, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imagesetinterpolation, 0, 1, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, method, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_imageresolution, 0, 0, 1)
+ ZEND_ARG_INFO(0, im)
+ ZEND_ARG_TYPE_INFO(0, res_x, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, res_y, IS_LONG, 0)
+ZEND_END_ARG_INFO()