]> granicus.if.org Git - php/commitdiff
MFH
authorIlia Alshanetsky <iliaa@php.net>
Sun, 30 Mar 2003 20:48:14 +0000 (20:48 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Sun, 30 Mar 2003 20:48:14 +0000 (20:48 +0000)
ext/gd/libgd/gd.c

index a2181dc1b527150b4d5935760faa7f8c21035183..4b1f7ec021ebaf12b432125629473e2c9abe8bcb 100644 (file)
@@ -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