mirror of
https://github.com/php/php-src.git
synced 2024-09-28 21:36:12 +00:00
Merge branch 'PHP-5.6' into PHP-7.0
This commit is contained in:
commit
60feda4ea4
@ -1049,11 +1049,13 @@ void gdImageAABlend (gdImagePtr im)
|
||||
}
|
||||
}
|
||||
|
||||
static void _gdImageFilledHRectangle (gdImagePtr im, int x1, int y1, int x2, int y2, int color);
|
||||
|
||||
static void gdImageHLine(gdImagePtr im, int y, int x1, int x2, int col)
|
||||
{
|
||||
if (im->thick > 1) {
|
||||
int thickhalf = im->thick >> 1;
|
||||
gdImageFilledRectangle(im, x1, y - thickhalf, x2, y + im->thick - thickhalf - 1, col);
|
||||
_gdImageFilledHRectangle(im, x1, y - thickhalf, x2, y + im->thick - thickhalf - 1, col);
|
||||
} else {
|
||||
if (x2 < x1) {
|
||||
int t = x2;
|
||||
@ -2118,10 +2120,53 @@ void gdImageRectangle (gdImagePtr im, int x1, int y1, int x2, int y2, int color)
|
||||
}
|
||||
}
|
||||
|
||||
void gdImageFilledRectangle (gdImagePtr im, int x1, int y1, int x2, int y2, int color)
|
||||
static void _gdImageFilledHRectangle (gdImagePtr im, int x1, int y1, int x2, int y2, int color)
|
||||
{
|
||||
int x, y;
|
||||
|
||||
if (x1 == x2 && y1 == y2) {
|
||||
gdImageSetPixel(im, x1, y1, color);
|
||||
return;
|
||||
}
|
||||
|
||||
if (x1 > x2) {
|
||||
x = x1;
|
||||
x1 = x2;
|
||||
x2 = x;
|
||||
}
|
||||
|
||||
if (y1 > y2) {
|
||||
y = y1;
|
||||
y1 = y2;
|
||||
y2 = y;
|
||||
}
|
||||
|
||||
if (x1 < 0) {
|
||||
x1 = 0;
|
||||
}
|
||||
|
||||
if (x2 >= gdImageSX(im)) {
|
||||
x2 = gdImageSX(im) - 1;
|
||||
}
|
||||
|
||||
if (y1 < 0) {
|
||||
y1 = 0;
|
||||
}
|
||||
|
||||
if (y2 >= gdImageSY(im)) {
|
||||
y2 = gdImageSY(im) - 1;
|
||||
}
|
||||
|
||||
for (x = x1; (x <= x2); x++) {
|
||||
for (y = y1; (y <= y2); y++) {
|
||||
gdImageSetPixel (im, x, y, color);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void _gdImageFilledVRectangle (gdImagePtr im, int x1, int y1, int x2, int y2, int color)
|
||||
{
|
||||
int x, y;
|
||||
|
||||
if (x1 == x2 && y1 == y2) {
|
||||
gdImageSetPixel(im, x1, y1, color);
|
||||
@ -2163,6 +2208,11 @@ void gdImageFilledRectangle (gdImagePtr im, int x1, int y1, int x2, int y2, int
|
||||
}
|
||||
}
|
||||
|
||||
void gdImageFilledRectangle (gdImagePtr im, int x1, int y1, int x2, int y2, int color)
|
||||
{
|
||||
_gdImageFilledVRectangle(im, x1, y1, x2, y2, color);
|
||||
}
|
||||
|
||||
void gdImageCopy (gdImagePtr dst, gdImagePtr src, int dstX, int dstY, int srcX, int srcY, int w, int h)
|
||||
{
|
||||
int c;
|
||||
|
59
ext/gd/tests/bug43475.phpt
Normal file
59
ext/gd/tests/bug43475.phpt
Normal file
@ -0,0 +1,59 @@
|
||||
--TEST--
|
||||
Bug #43475 (Thick styled lines have scrambled patterns)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded('gd')) die("skip gd extension not available\n");
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
require_once __DIR__ . '/similarity.inc';
|
||||
|
||||
function setStyleAndThickness($im, $color, $thickness)
|
||||
{
|
||||
$style = array();
|
||||
$i = 0;
|
||||
while ($i < 16 * $thickness) {
|
||||
$style[$i++] = $color;
|
||||
}
|
||||
while ($i < 20 * $thickness) {
|
||||
$style[$i++] = IMG_COLOR_TRANSPARENT;
|
||||
}
|
||||
while ($i < 28 * $thickness) {
|
||||
$style[$i++] = $color;
|
||||
}
|
||||
while ($i < 32 * $thickness) {
|
||||
$style[$i++] = IMG_COLOR_TRANSPARENT;
|
||||
}
|
||||
imagesetstyle($im, $style);
|
||||
imagesetthickness($im, $thickness);
|
||||
}
|
||||
|
||||
$im = imagecreate(800, 800);
|
||||
imagecolorallocate($im, 255, 255, 255);
|
||||
$black = imagecolorallocate($im, 0, 0, 0);
|
||||
|
||||
setStyleAndThickness($im, $black, 1);
|
||||
imageline($im, 50, 250, 550, 250, IMG_COLOR_STYLED);
|
||||
imageline($im, 550, 250, 550, 750, IMG_COLOR_STYLED);
|
||||
imageline($im, 550, 750, 50, 250, IMG_COLOR_STYLED);
|
||||
|
||||
setStyleAndThickness($im, $black, 2);
|
||||
imageline($im, 100, 200, 600, 200, IMG_COLOR_STYLED);
|
||||
imageline($im, 600, 200, 600, 700, IMG_COLOR_STYLED);
|
||||
imageline($im, 600, 700, 100, 200, IMG_COLOR_STYLED);
|
||||
|
||||
setStyleAndThickness($im, $black, 4);
|
||||
imageline($im, 150, 150, 650, 150, IMG_COLOR_STYLED);
|
||||
imageline($im, 650, 150, 650, 650, IMG_COLOR_STYLED);
|
||||
imageline($im, 650, 650, 150, 150, IMG_COLOR_STYLED);
|
||||
|
||||
setStyleAndThickness($im, $black, 6);
|
||||
imageline($im, 200, 100, 700, 100, IMG_COLOR_STYLED);
|
||||
imageline($im, 700, 100, 700, 600, IMG_COLOR_STYLED);
|
||||
imageline($im, 700, 600, 200, 100, IMG_COLOR_STYLED);
|
||||
|
||||
$ex = imagecreatefrompng(__DIR__ . '/bug43475.png');
|
||||
var_dump(calc_image_dissimilarity($ex, $im) < 1e-5);
|
||||
?>
|
||||
--EXPECT--
|
||||
bool(true)
|
BIN
ext/gd/tests/bug43475.png
Normal file
BIN
ext/gd/tests/bug43475.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.6 KiB |
Loading…
Reference in New Issue
Block a user