Skip to content

Commit 27cbdd4

Browse files
thg2kondrejmirtes
authored andcommitted
Improve image related functions signature
- The parameters involving red, green, blue, and alpha are now required to be in the respective allowed range (0-255 for colors and 0-127 for alpha) in bleeding edge mode. - Return values are specified in their possible ranges (0-max for color indexes, and 0-256 for imagecolorstotal()). - imagecreate() and imagecreatetruecolor() now returns a benevolent union, it can only return false if width x height exceeds INT_MAX, and the size parameters are required to be in the range 1-max in bleeding edge. - imagesx() and imagesy() return value is in the range 1-max and can no longer return false. - Return type of imagecolorsforindex() now contains the array signature.
1 parent a1bfec3 commit 27cbdd4

File tree

4 files changed

+32
-18
lines changed

4 files changed

+32
-18
lines changed

resources/functionMap.php

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4544,29 +4544,29 @@
45444544
'imagebmp' => ['bool', 'image'=>'resource', 'to='=>'string|resource|null', 'compressed='=>'bool'],
45454545
'imagechar' => ['bool', 'im'=>'resource', 'font'=>'int', 'x'=>'int', 'y'=>'int', 'c'=>'string', 'col'=>'int'],
45464546
'imagecharup' => ['bool', 'im'=>'resource', 'font'=>'int', 'x'=>'int', 'y'=>'int', 'c'=>'string', 'col'=>'int'],
4547-
'imagecolorallocate' => ['int|false', 'im'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
4548-
'imagecolorallocatealpha' => ['int|false', 'im'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'],
4549-
'imagecolorat' => ['int|false', 'im'=>'resource', 'x'=>'int', 'y'=>'int'],
4550-
'imagecolorclosest' => ['int|false', 'im'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
4551-
'imagecolorclosestalpha' => ['int|false', 'im'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'],
4552-
'imagecolorclosesthwb' => ['int|false', 'im'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
4547+
'imagecolorallocate' => ['int<0, max>|false', 'im'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
4548+
'imagecolorallocatealpha' => ['int<0, max>|false', 'im'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'],
4549+
'imagecolorat' => ['int<0, max>|false', 'im'=>'resource', 'x'=>'int', 'y'=>'int'],
4550+
'imagecolorclosest' => ['int<0, max>', 'im'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
4551+
'imagecolorclosestalpha' => ['int<0, max>', 'im'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'],
4552+
'imagecolorclosesthwb' => ['int<0, max>', 'im'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
45534553
'imagecolordeallocate' => ['bool', 'im'=>'resource', 'index'=>'int'],
4554-
'imagecolorexact' => ['int|false', 'im'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
4555-
'imagecolorexactalpha' => ['int|false', 'im'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'],
4554+
'imagecolorexact' => ['int<0, max>|false', 'im'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
4555+
'imagecolorexactalpha' => ['int<0, max>|false', 'im'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'],
45564556
'imagecolormatch' => ['bool', 'im1'=>'resource', 'im2'=>'resource'],
4557-
'imagecolorresolve' => ['int|false', 'im'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
4558-
'imagecolorresolvealpha' => ['int|false', 'im'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'],
4557+
'imagecolorresolve' => ['int<0, max>', 'im'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int'],
4558+
'imagecolorresolvealpha' => ['int<0, max>', 'im'=>'resource', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha'=>'int'],
45594559
'imagecolorset' => ['void', 'im'=>'resource', 'col'=>'int', 'red'=>'int', 'green'=>'int', 'blue'=>'int', 'alpha='=>'int'],
4560-
'imagecolorsforindex' => ['array|false', 'im'=>'resource', 'col'=>'int'],
4561-
'imagecolorstotal' => ['int', 'im'=>'resource'],
4560+
'imagecolorsforindex' => ['array{red: int<0, 255>, green: int<0, 255>, blue: int<0, 255>, alpha: int<0, 127>}', 'im'=>'resource', 'col'=>'int'],
4561+
'imagecolorstotal' => ['int<0, 256>', 'im'=>'resource'],
45624562
'imagecolortransparent' => ['int', 'im'=>'resource', 'col='=>'int'],
45634563
'imageconvolution' => ['bool', 'src_im'=>'resource', 'matrix3x3'=>'array', 'div'=>'float', 'offset'=>'float'],
45644564
'imagecopy' => ['bool', 'dst_im'=>'resource', 'src_im'=>'resource', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'src_w'=>'int', 'src_h'=>'int'],
45654565
'imagecopymerge' => ['bool', 'src_im'=>'resource', 'dst_im'=>'resource', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'src_w'=>'int', 'src_h'=>'int', 'pct'=>'int'],
45664566
'imagecopymergegray' => ['bool', 'src_im'=>'resource', 'dst_im'=>'resource', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'src_w'=>'int', 'src_h'=>'int', 'pct'=>'int'],
45674567
'imagecopyresampled' => ['bool', 'dst_im'=>'resource', 'src_im'=>'resource', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'dst_w'=>'int', 'dst_h'=>'int', 'src_w'=>'int', 'src_h'=>'int'],
45684568
'imagecopyresized' => ['bool', 'dst_im'=>'resource', 'src_im'=>'resource', 'dst_x'=>'int', 'dst_y'=>'int', 'src_x'=>'int', 'src_y'=>'int', 'dst_w'=>'int', 'dst_h'=>'int', 'src_w'=>'int', 'src_h'=>'int'],
4569-
'imagecreate' => ['resource|false', 'x_size'=>'int', 'y_size'=>'int'],
4569+
'imagecreate' => ['__benevolent<resource|false>', 'x_size'=>'int', 'y_size'=>'int'],
45704570
'imagecreatefrombmp' => ['resource|false', 'filename'=>'string'],
45714571
'imagecreatefromgd' => ['resource|false', 'filename'=>'string'],
45724572
'imagecreatefromgd2' => ['resource|false', 'filename'=>'string'],
@@ -4579,7 +4579,7 @@
45794579
'imagecreatefromwebp' => ['resource|false', 'filename'=>'string'],
45804580
'imagecreatefromxbm' => ['resource|false', 'filename'=>'string'],
45814581
'imagecreatefromxpm' => ['resource|false', 'filename'=>'string'],
4582-
'imagecreatetruecolor' => ['resource|false', 'x_size'=>'int', 'y_size'=>'int'],
4582+
'imagecreatetruecolor' => ['__benevolent<resource|false>', 'x_size'=>'int', 'y_size'=>'int'],
45834583
'imagecrop' => ['resource|false', 'im'=>'resource', 'rect'=>'array'],
45844584
'imagecropauto' => ['resource|false', 'im'=>'resource', 'mode='=>'int', 'threshold='=>'float', 'color='=>'int'],
45854585
'imagedashedline' => ['bool', 'im'=>'resource', 'x1'=>'int', 'y1'=>'int', 'x2'=>'int', 'y2'=>'int', 'col'=>'int'],
@@ -4639,8 +4639,8 @@
46394639
'imagesettile' => ['bool', 'image'=>'resource', 'tile'=>'resource'],
46404640
'imagestring' => ['bool', 'im'=>'resource', 'font'=>'int', 'x'=>'int', 'y'=>'int', 'str'=>'string', 'col'=>'int'],
46414641
'imagestringup' => ['bool', 'im'=>'resource', 'font'=>'int', 'x'=>'int', 'y'=>'int', 'str'=>'string', 'col'=>'int'],
4642-
'imagesx' => ['int|false', 'im'=>'resource'],
4643-
'imagesy' => ['int|false', 'im'=>'resource'],
4642+
'imagesx' => ['int<1, max>', 'im'=>'resource'],
4643+
'imagesy' => ['int<1, max>', 'im'=>'resource'],
46444644
'imagetruecolortopalette' => ['bool', 'im'=>'resource', 'ditherflag'=>'bool', 'colorswanted'=>'int'],
46454645
'imagettfbbox' => ['array|false', 'size'=>'float', 'angle'=>'float', 'font_file'=>'string', 'text'=>'string'],
46464646
'imagettftext' => ['array|false', 'im'=>'resource', 'size'=>'float', 'angle'=>'float', 'x'=>'int', 'y'=>'int', 'col'=>'int', 'font_file'=>'string', 'text'=>'string'],

resources/functionMap_bleedingEdge.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,18 @@
108108
'ImagickDraw::setTextDecoration' => ['bool', 'decoration'=>'Imagick::DECORATION_*'],
109109
'ImagickKernel::fromBuiltin' => ['ImagickKernel', 'kernelType'=>'Imagick::KERNEL_*', 'kernelString'=>'string'],
110110
'ImagickKernel::scale' => ['void', 'scale'=>'float', 'normalizeFlag'=>'Imagick::NORMALIZE_KERNEL_*'],
111+
'imagecolorallocate' => ['int<0, max>|false', 'im'=>'resource', 'red'=>'int<0, 255>', 'green'=>'int<0, 255>', 'blue'=>'int<0, 255>'],
112+
'imagecolorallocatealpha' => ['int<0, max>|false', 'im'=>'resource', 'red'=>'int<0, 255>', 'green'=>'int<0, 255>', 'blue'=>'int<0, 255>', 'alpha'=>'int<0, 127>'],
113+
'imagecolorclosest' => ['int<0, max>', 'im'=>'resource', 'red'=>'int<0, 255>', 'green'=>'int<0, 255>', 'blue'=>'int<0, 255>'],
114+
'imagecolorclosestalpha' => ['int<0, max>', 'im'=>'resource', 'red'=>'int<0, 255>', 'green'=>'int<0, 255>', 'blue'=>'int<0, 255>', 'alpha'=>'int<0, 127>'],
115+
'imagecolorclosesthwb' => ['int<0, max>', 'im'=>'resource', 'red'=>'int<0, 255>', 'green'=>'int<0, 255>', 'blue'=>'int<0, 255>'],
116+
'imagecolorexact' => ['int<0, max>|false', 'im'=>'resource', 'red'=>'int<0, 255>', 'green'=>'int<0, 255>', 'blue'=>'int<0, 255>'],
117+
'imagecolorexactalpha' => ['int<0, max>|false', 'im'=>'resource', 'red'=>'int<0, 255>', 'green'=>'int<0, 255>', 'blue'=>'int<0, 255>', 'alpha'=>'int<0, 127>'],
118+
'imagecolorresolve' => ['int<0, max>', 'im'=>'resource', 'red'=>'int<0, 255>', 'green'=>'int<0, 255>', 'blue'=>'int<0, 255>'],
119+
'imagecolorresolvealpha' => ['int<0, max>', 'im'=>'resource', 'red'=>'int<0, 255>', 'green'=>'int<0, 255>', 'blue'=>'int<0, 255>', 'alpha'=>'int<0, 127>'],
120+
'imagecolorset' => ['void', 'im'=>'resource', 'col'=>'int', 'red'=>'int<0, 255>', 'green'=>'int<0, 255>', 'blue'=>'int<0, 255>', 'alpha='=>'int<0, 127>'],
121+
'imagecreate' => ['__benevolent<resource|false>', 'x_size'=>'int<1, max>', 'y_size'=>'int<1, max>'],
122+
'imagecreatetruecolor' => ['__benevolent<resource|false>', 'x_size'=>'int<1, max>', 'y_size'=>'int<1, max>'],
111123
'max' => ['', '...arg1'=>'non-empty-array'],
112124
'mb_detect_order' => ['bool|list<non-falsy-string>', 'encoding_list='=>'non-empty-list<non-falsy-string>|non-falsy-string'],
113125
'min' => ['', '...arg1'=>'non-empty-array'],

resources/functionMap_php80delta.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
'hash_hmac' => ['non-empty-string', 'algo'=>'string', 'data'=>'string', 'key'=>'string', 'raw_output='=>'bool'],
5656
'hash_pbkdf2' => ['non-empty-string', 'algo'=>'string', 'password'=>'string', 'salt'=>'string', 'iterations'=>'int', 'length='=>'int', 'raw_output='=>'bool'],
5757
'imageaffine' => ['false|object', 'src'=>'resource', 'affine'=>'array', 'clip='=>'array'],
58-
'imagecreate' => ['false|object', 'x_size'=>'int', 'y_size'=>'int'],
58+
'imagecreate' => ['__benevolent<GdImage|false>', 'width'=>'int', 'height'=>'int'],
5959
'imagecreatefrombmp' => ['false|object', 'filename'=>'string'],
6060
'imagecreatefromgd' => ['false|object', 'filename'=>'string'],
6161
'imagecreatefromgd2' => ['false|object', 'filename'=>'string'],
@@ -68,7 +68,7 @@
6868
'imagecreatefromwebp' => ['false|object', 'filename'=>'string'],
6969
'imagecreatefromxbm' => ['false|object', 'filename'=>'string'],
7070
'imagecreatefromxpm' => ['false|object', 'filename'=>'string'],
71-
'imagecreatetruecolor' => ['false|object', 'x_size'=>'int', 'y_size'=>'int'],
71+
'imagecreatetruecolor' => ['__benevolent<GdImage|false>', 'width'=>'int', 'height'=>'int'],
7272
'imagecrop' => ['false|object', 'im'=>'resource', 'rect'=>'array'],
7373
'imagecropauto' => ['false|object', 'im'=>'resource', 'mode'=>'int', 'threshold'=>'float', 'color'=>'int'],
7474
'imagegetclip' => ['array<int,int>', 'im'=>'resource'],

resources/functionMap_php80delta_bleedingEdge.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
'filter_input_array' => ['array|false|null', 'type'=>'INPUT_GET|INPUT_POST|INPUT_COOKIE|INPUT_SERVER|INPUT_ENV', 'definition='=>'int|array', 'add_empty='=>'bool'],
88
'hash_hkdf' => ['non-empty-string', 'algo'=>'non-falsy-string', 'key'=>'string', 'length='=>'0|positive-int', 'info='=>'string', 'salt='=>'string'],
99
'hash_pbkdf2' => ['non-empty-string', 'algo'=>'non-falsy-string', 'password'=>'string', 'salt'=>'string', 'iterations'=>'positive-int', 'length='=>'0|positive-int', 'raw_output='=>'bool'],
10+
'imagecreate' => ['__benevolent<GdImage|false>', 'width'=>'int<1, max>', 'height'=>'int<1, max>'],
11+
'imagecreatetruecolor' => ['__benevolent<GdImage|false>', 'width'=>'int<1, max>', 'height'=>'int<1, max>'],
1012
'mb_detect_order' => ['bool|list<non-falsy-string>', 'encoding_list='=>'non-empty-list<non-falsy-string>|non-falsy-string|null'],
1113
],
1214
'old' => [

0 commit comments

Comments
 (0)