iliaa Mon Mar 22 12:27:19 2004 EDT Modified files: /php-src/ext/gd/libgd gd.c Log: Revert patch to imagefillborder. http://cvs.php.net/diff.php/php-src/ext/gd/libgd/gd.c?r1=1.75&r2=1.76&ty=u Index: php-src/ext/gd/libgd/gd.c diff -u php-src/ext/gd/libgd/gd.c:1.75 php-src/ext/gd/libgd/gd.c:1.76 --- php-src/ext/gd/libgd/gd.c:1.75 Sun Mar 21 13:02:19 2004 +++ php-src/ext/gd/libgd/gd.c Mon Mar 22 12:26:03 2004 @@ -1757,7 +1757,10 @@ void gdImageFillToBorder (gdImagePtr im, int x, int y, int border, int color) { - int i, j, restoreAlphaBleding = 0; + int lastBorder; + /* Seek left */ + int leftLimit = -1, rightLimit; + int i, restoreAlphaBleding=0; if (border < 0) { /* Refuse to fill to a non-solid border */ @@ -1776,16 +1779,61 @@ y = im->sy - 1; } - for (i = x; i < im->sx; i++) { - for (j = y; j < im->sy; j++) { - int c = gdImageGetPixel(im, i, j); - if (c == border || c == color) { - continue; + for (i = x; i >= 0; i--) { + if (gdImageGetPixel(im, i, y) == border) { + break; + } + gdImageSetPixel(im, i, y, color); + leftLimit = i; + } + if (leftLimit == -1) { + if (restoreAlphaBleding) { + im->alphaBlendingFlag = 1; + } + return; + } + /* Seek right */ + rightLimit = x; + for (i = (x + 1); i < im->sx; i++) { + if (gdImageGetPixel(im, i, y) == border) { + break; + } + gdImageSetPixel(im, i, y, color); + rightLimit = i; + } + /* Look at lines above and below and start paints */ + /* Above */ + if (y > 0) { + lastBorder = 1; + for (i = leftLimit; i <= rightLimit; i++) { + int c = gdImageGetPixel(im, i, y - 1); + if (lastBorder) { + if ((c != border) && (c != color)) { + gdImageFillToBorder(im, i, y - 1, border, color); + lastBorder = 0; + } + } else if ((c == border) || (c == color)) { + lastBorder = 1; } - gdImageSetPixel(im, i, j, color); } } + /* Below */ + if (y < ((im->sy) - 1)) { + lastBorder = 1; + for (i = leftLimit; i <= rightLimit; i++) { + int c = gdImageGetPixel(im, i, y + 1); + + if (lastBorder) { + if ((c != border) && (c != color)) { + gdImageFillToBorder(im, i, y + 1, border, color); + lastBorder = 0; + } + } else if ((c == border) || (c == color)) { + lastBorder = 1; + } + } + } if (restoreAlphaBleding) { im->alphaBlendingFlag = 1; }
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php