pajoye          Fri Jan 19 15:03:56 2007 UTC

  Modified files:              (Branch: PHP_5_2)
    /php-src/ext/gd/libgd       gd.c 
  Log:
  - save/restore the alpha blending mode correctly in imagefill and
    imagefilltoborder
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.90.2.1.2.8&r2=1.90.2.1.2.9&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.90.2.1.2.8 
php-src/ext/gd/libgd/gd.c:1.90.2.1.2.9
--- php-src/ext/gd/libgd/gd.c:1.90.2.1.2.8      Sat Jan 13 11:21:21 2007
+++ php-src/ext/gd/libgd/gd.c   Fri Jan 19 15:03:56 2007
@@ -1795,17 +1795,15 @@
        int lastBorder;
        /* Seek left */
        int leftLimit = -1, rightLimit;
-       int i, restoreAlphaBleding=0;
+       int i, restoreAlphaBlending = 0;
 
        if (border < 0) {
                /* Refuse to fill to a non-solid border */
                return;
        }
 
-       if (im->alphaBlendingFlag) {
-               restoreAlphaBleding = 1;
-               im->alphaBlendingFlag = 0;
-       }
+       restoreAlphaBlending = im->alphaBlendingFlag;
+       im->alphaBlendingFlag = 0;
 
        if (x >= im->sx) {
                x = im->sx - 1;
@@ -1822,9 +1820,7 @@
                leftLimit = i;
        }
        if (leftLimit == -1) {
-               if (restoreAlphaBleding) {
-                       im->alphaBlendingFlag = 1;
-               }
+               im->alphaBlendingFlag = restoreAlphaBlending;
                return;
        }
        /* Seek right */
@@ -1869,9 +1865,7 @@
                        }
                }
        }
-       if (restoreAlphaBleding) {
-               im->alphaBlendingFlag = 1;
-       }
+       im->alphaBlendingFlag = restoreAlphaBlending;
 }
 
 /*
@@ -1908,7 +1902,7 @@
 
        /* stack of filled segments */
        /* struct seg stack[FILL_MAX],*sp = stack;; */
-       struct seg *stack;
+       struct seg *stack = NULL;
        struct seg *sp;
 
        if (!im->trueColor && nc > (im->colorsTotal -1)) {
@@ -1939,7 +1933,7 @@
                do {
                        c = gdImageGetPixel(im, ix, iy);
                        if (c != oc) {
-                               return;
+                               goto done;
                        }
                        gdImageSetPixel(im, ix, iy, nc);
                } while(ix++ < (im->sx -1));
@@ -1947,11 +1941,11 @@
                do {
                        c = gdImageGetPixel(im, ix, iy);
                        if (c != oc) {
-                               return;
+                               goto done;
                        }
                        gdImageSetPixel(im, ix, iy, nc);
                } while(ix++ < (im->sx -1));
-               return;
+               goto done;
        }
 
        stack = (struct seg *)safe_emalloc(sizeof(struct seg), 
((int)(im->sy*im->sx)/4), 1);
@@ -1991,7 +1985,10 @@
                        l = x;
                } while (x<=x2);
        }
+
        efree(stack);
+
+done:
        im->alphaBlendingFlag = alphablending_bak;      
 }
 
@@ -2025,7 +2022,7 @@
 
        oc = gdImageGetPixel(im, x, y);
 
-       /* required! */
+/* required! */
        FILL_PUSH(y,x,x,1);
        /* seed segment (popped 1st) */
        FILL_PUSH(y+1, x, x, -1);

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to