bug43475.phpt 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. --TEST--
  2. Bug #43475 (Thick styled lines have scrambled patterns)
  3. --EXTENSIONS--
  4. gd
  5. --SKIPIF--
  6. <?php
  7. if (!GD_BUNDLED && version_compare(GD_VERSION, '2.2.2', '<')) {
  8. die("skip test requires GD 2.2.2 or higher");
  9. }
  10. ?>
  11. --FILE--
  12. <?php
  13. require_once __DIR__ . '/similarity.inc';
  14. function setStyleAndThickness($im, $color, $thickness)
  15. {
  16. $style = array();
  17. $i = 0;
  18. while ($i < 16 * $thickness) {
  19. $style[$i++] = $color;
  20. }
  21. while ($i < 20 * $thickness) {
  22. $style[$i++] = IMG_COLOR_TRANSPARENT;
  23. }
  24. while ($i < 28 * $thickness) {
  25. $style[$i++] = $color;
  26. }
  27. while ($i < 32 * $thickness) {
  28. $style[$i++] = IMG_COLOR_TRANSPARENT;
  29. }
  30. imagesetstyle($im, $style);
  31. imagesetthickness($im, $thickness);
  32. }
  33. $im = imagecreate(800, 800);
  34. imagecolorallocate($im, 255, 255, 255);
  35. $black = imagecolorallocate($im, 0, 0, 0);
  36. setStyleAndThickness($im, $black, 1);
  37. imageline($im, 50, 250, 550, 250, IMG_COLOR_STYLED);
  38. imageline($im, 550, 250, 550, 750, IMG_COLOR_STYLED);
  39. imageline($im, 550, 750, 50, 250, IMG_COLOR_STYLED);
  40. setStyleAndThickness($im, $black, 2);
  41. imageline($im, 100, 200, 600, 200, IMG_COLOR_STYLED);
  42. imageline($im, 600, 200, 600, 700, IMG_COLOR_STYLED);
  43. imageline($im, 600, 700, 100, 200, IMG_COLOR_STYLED);
  44. setStyleAndThickness($im, $black, 4);
  45. imageline($im, 150, 150, 650, 150, IMG_COLOR_STYLED);
  46. imageline($im, 650, 150, 650, 650, IMG_COLOR_STYLED);
  47. imageline($im, 650, 650, 150, 150, IMG_COLOR_STYLED);
  48. setStyleAndThickness($im, $black, 6);
  49. imageline($im, 200, 100, 700, 100, IMG_COLOR_STYLED);
  50. imageline($im, 700, 100, 700, 600, IMG_COLOR_STYLED);
  51. imageline($im, 700, 600, 200, 100, IMG_COLOR_STYLED);
  52. $ex = imagecreatefrompng(__DIR__ . '/bug43475.png');
  53. var_dump(calc_image_dissimilarity($ex, $im) < 1e-5);
  54. ?>
  55. --EXPECT--
  56. bool(true)