summaryrefslogtreecommitdiff
path: root/ext/gd/tests/libgd00100.phpt
diff options
context:
space:
mode:
Diffstat (limited to 'ext/gd/tests/libgd00100.phpt')
-rw-r--r--ext/gd/tests/libgd00100.phpt119
1 files changed, 119 insertions, 0 deletions
diff --git a/ext/gd/tests/libgd00100.phpt b/ext/gd/tests/libgd00100.phpt
new file mode 100644
index 0000000000..abf4ee3339
--- /dev/null
+++ b/ext/gd/tests/libgd00100.phpt
@@ -0,0 +1,119 @@
+--TEST--
+libgd #100 (spurious horizontal line drawn by gdImageFilledPolygon)
+--SKIPIF--
+<?php
+ if (!extension_loaded('gd')) die("skip gd extension not available\n");
+ if (!GD_BUNDLED) die("skip requires bundled GD library\n");
+?>
+--FILE--
+<?php
+$im = imagecreatetruecolor(256, 256);
+
+$white = imagecolorallocatealpha($im, 255, 255, 255, 10);
+$black = imagecolorallocatealpha($im, 0, 0, 0, 10);
+$red = imagecolorallocatealpha($im, 255, 0, 0, 10);
+$green = imagecolorallocatealpha($im, 0, 255, 0, 10);
+$blue = imagecolorallocatealpha($im, 0, 0, 255, 10);
+$yellow = imagecolorallocatealpha($im, 255, 255, 0, 10);
+$cyan = imagecolorallocatealpha($im, 0, 255, 255, 10);
+$magenta = imagecolorallocatealpha($im, 255, 0, 255, 10);
+$purple = imagecolorallocatealpha($im, 100, 0, 100, 10);
+
+imagefilledrectangle($im, 0, 0, 255, 255, $white);
+
+// M (bridge)
+$top = 240;
+$bot = 255;
+$d = 30;
+$x = 100;
+$points = array(
+ $x, $top,
+ $x+2*$d, $top,
+ $x+2*$d, $bot,
+ $x+$d, ($top+$bot)/2,
+ $x, $bot
+);
+imagefilledpolygon($im, $points, 5, $yellow);
+
+// left-facing M not on baseline
+$top = 40;
+$bot = 70;
+$left = 120;
+$right = 180;
+$points = array(
+ $left, $top,
+ $right, $top,
+ $right, $bot,
+ $left, $bot,
+ ($left+$right)/2, ($top+$bot)/2
+);
+imagefilledpolygon($im, $points, 5, $purple);
+
+// left-facing M on baseline
+$top = 240;
+$bot = 270;
+$left = 20;
+$right = 80;
+$points = array(
+ $left, $top,
+ $right, $top,
+ $right, $bot,
+ $left, $bot,
+ ($left+$right)/2, ($top+$bot)/2
+);
+imagefilledpolygon($im, $points, 5, $magenta);
+
+// left-facing M on ceiling
+$top = -15;
+$bot = 15;
+$left = 20;
+$right = 80;
+$points = array(
+ $left, $top,
+ $right, $top,
+ $right, $bot,
+ $left, $bot,
+ ($left+$right)/2, ($top+$bot)/2
+);
+imagefilledpolygon($im, $points, 5, $blue);
+
+$d = 30;
+$x = 150;
+$y = 150;
+$diamond = array($x-$d, $y, $x, $y+$d, $x+$d, $y, $x, $y-$d);
+imagefilledpolygon($im, $diamond, 4, $green);
+
+$x = 180;
+$y = 225;
+$diamond = array($x-$d, $y, $x, $y+$d, $x+$d, $y, $x, $y-$d);
+imagefilledpolygon($im, $diamond, 4, $red);
+
+$x = 225;
+$y = 255;
+$diamond = array($x-$d, $y, $x, $y+$d, $x+$d, $y, $x, $y-$d);
+imagefilledpolygon($im, $diamond, 4, $cyan);
+
+// M (bridge) not touching bottom boundary
+$top = 100;
+$bot = 150;
+$x = 30;
+$points = array(
+ $x, $top,
+ $x+2*$d, $top,
+ $x+2*$d, $bot,
+ $x+$d, ($top+$bot)/2,
+ $x, $bot
+);
+imagefilledpolygon($im, $points, 5, $black);
+
+ob_start();
+imagepng($im);
+$png = ob_get_contents();
+ob_end_clean();
+
+echo md5($png);
+
+imagedestroy($im);
+?>
+--EXPECTF--
+2e6cf558bb4dadf60c8b608d5f8cda4e