From 334da52d65327a41af192162b4f028a11feca3eb Mon Sep 17 00:00:00 2001 From: Ilia Alshanetsky Date: Sun, 30 Mar 2003 20:48:14 +0000 Subject: [PATCH] MFH --- ext/gd/libgd/gd.c | 140 +++++++++++++++++++++------------------------- 1 file changed, 63 insertions(+), 77 deletions(-) diff --git a/ext/gd/libgd/gd.c b/ext/gd/libgd/gd.c index a2181dc1b5..4b1f7ec021 100644 --- a/ext/gd/libgd/gd.c +++ b/ext/gd/libgd/gd.c @@ -1723,90 +1723,76 @@ void gdImageFilledEllipse (gdImagePtr im, int mx, int my, int w, int h, int c) } } -void -gdImageFillToBorder (gdImagePtr im, int x, int y, int border, int color) +void gdImageFillToBorder (gdImagePtr im, int x, int y, int border, int color) { - int lastBorder; - /* Seek left */ - int leftLimit, rightLimit; - int i; - leftLimit = (-1); - if (border < 0) - { - /* Refuse to fill to a non-solid border */ - return; - } - for (i = x; (i >= 0); i--) - { - if (gdImageGetPixel (im, i, y) == border) - { - break; + int lastBorder; + /* Seek left */ + int leftLimit = -1, rightLimit; + int i; + + if (border < 0) { + /* Refuse to fill to a non-solid border */ + return; } - gdImageSetPixel (im, i, y, color); - leftLimit = i; - } - if (leftLimit == (-1)) - { - return; - } - /* Seek right */ - rightLimit = x; - for (i = (x + 1); (i < im->sx); i++) - { - if (gdImageGetPixel (im, i, y) == border) - { - break; + + if (x >= im->sx) { + x = im->sx - 1; } - 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; - c = gdImageGetPixel (im, i, y - 1); - if (lastBorder) - { - if ((c != border) && (c != color)) - { - gdImageFillToBorder (im, i, y - 1, - border, color); - lastBorder = 0; + if (y >= im->sy) { + y = im->sy - 1; + } + + for (i = x; i >= 0; i--) { + if (gdImageGetPixel(im, i, y) == border) { + break; } - } - else if ((c == border) || (c == color)) - { - lastBorder = 1; - } + gdImageSetPixel(im, i, y, color); + leftLimit = i; } - } - /* Below */ - if (y < ((im->sy) - 1)) - { - lastBorder = 1; - for (i = leftLimit; (i <= rightLimit); i++) - { - int c; - c = gdImageGetPixel (im, i, y + 1); - if (lastBorder) - { - if ((c != border) && (c != color)) - { - gdImageFillToBorder (im, i, y + 1, - border, color); - lastBorder = 0; + if (leftLimit == -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; + } + } + } + /* 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; + } } - } - else if ((c == border) || (c == color)) - { - lastBorder = 1; - } } - } } void -- 2.50.1