pajoye          Tue May 26 19:34:18 2009 UTC

  Added files:                 
    /php-src/ext/gd/libgd       gd_arc.c 

  Modified files:              
    /php-src/ext/gd     config.m4 gd.c 
    /php-src/ext/gd/libgd       gd.c gd_compat.h 
  Log:
  - add image(filled)ellipse to the compat layer (work around a bug in debian 
too, function is declared but not present in the lib...)
  
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/config.m4?r1=1.180&r2=1.181&diff_format=u
Index: php-src/ext/gd/config.m4
diff -u php-src/ext/gd/config.m4:1.180 php-src/ext/gd/config.m4:1.181
--- php-src/ext/gd/config.m4:1.180      Tue May 26 14:26:39 2009
+++ php-src/ext/gd/config.m4    Tue May 26 19:34:17 2009
@@ -1,5 +1,5 @@
 dnl
-dnl $Id: config.m4,v 1.180 2009/05/26 14:26:39 pajoye Exp $
+dnl $Id: config.m4,v 1.181 2009/05/26 19:34:17 pajoye Exp $
 dnl
 
 dnl
@@ -274,7 +274,7 @@
                  libgd/gdxpm.c libgd/gdfontt.c libgd/gdfonts.c 
libgd/gdfontmb.c libgd/gdfontl.c \
                  libgd/gdfontg.c libgd/gdtables.c libgd/gdft.c libgd/gdcache.c 
libgd/gdkanji.c \
                  libgd/wbmp.c libgd/gd_wbmp.c libgd/gdhelpers.c 
libgd/gd_topal.c libgd/gd_gif_in.c \
-                 libgd/xbm.c libgd/gd_gif_out.c libgd/gd_security.c 
libgd/gd_filter.c libgd/gd_pixelate.c"
+                 libgd/xbm.c libgd/gd_gif_out.c libgd/gd_security.c 
libgd/gd_filter.c libgd/gd_pixelate.c libgd/gd_arc.c"
 
 dnl check for fabsf and floorf which are available since C99
   AC_CHECK_FUNCS([fabsf floorf])
@@ -298,6 +298,7 @@
   AC_DEFINE(HAVE_GD_GIF_CREATE,       1, [ ])
   AC_DEFINE(HAVE_GD_FONTCACHESHUTDOWN,1, [ ])
   AC_DEFINE(HAVE_GD_FONTMUTEX,        1, [ ])
+  AC_DEFINE(HAVE_GD_IMAGEELLIPSE,     1, [ ])
 
 elif test "$PHP_GD" != "no"; then
 
@@ -310,7 +311,7 @@
   PHP_ADD_BUILD_DIR($ext_builddir/libgd)
 
   GD_MODULE_TYPE=external
-  extra_sources="gdcache.c libgd/gd_compat.c libgd/gd_filter.c 
libgd/gd_pixelate.c"
+  extra_sources="gdcache.c libgd/gd_compat.c libgd/gd_filter.c 
libgd/gd_pixelate.c libgd/gd_arc.c"
 
   GD_FEATURES=`$GDLIB_CONFIG --features`
 
@@ -350,7 +351,7 @@
 dnl Extra libraries and libpaths needed to link with libgd
   GD_LDFLAGS=`$GDLIB_CONFIG --ldflags`
   GD_LIBS=`$GDLIB_CONFIG --libs`
-
+  PHP_CHECK_LIBRARY(gd, gdImageEllipse,         
[AC_DEFINE(HAVE_GD_IMAGEELLIPSE,     1, [ ])], [], [ -L$GD_LIB 
$GD_SHARED_LIBADD ])
   PHP_EVAL_LIBLINE([$GD_LDFLAGS $GD_LIBS -L$GD_LIBDIR -lgd], GD_SHARED_LIBADD)
 fi
 
@@ -362,7 +363,6 @@
 dnl These defines are always available
 dnl FIXME: Cleanup the sources so that these are not needed!
   AC_DEFINE(HAVE_GD_IMAGESETTILE,     1, [ ])
-  AC_DEFINE(HAVE_GD_IMAGEELLIPSE,     1, [ ])
   AC_DEFINE(HAVE_GD_IMAGESETBRUSH,    1, [ ])
   AC_DEFINE(HAVE_COLORCLOSESTHWB,     1, [ ])
 
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/gd.c?r1=1.412&r2=1.413&diff_format=u
Index: php-src/ext/gd/gd.c
diff -u php-src/ext/gd/gd.c:1.412 php-src/ext/gd/gd.c:1.413
--- php-src/ext/gd/gd.c:1.412   Tue May 26 14:26:39 2009
+++ php-src/ext/gd/gd.c Tue May 26 19:34:17 2009
@@ -18,7 +18,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: gd.c,v 1.412 2009/05/26 14:26:39 pajoye Exp $ */
+/* $Id: gd.c,v 1.413 2009/05/26 19:34:17 pajoye Exp $ */
 
 /* gd 1.2 is copyright 1994, 1995, Quest Protein Database Center,
    Cold Spring Harbor Labs. */
@@ -1184,8 +1184,10 @@
 #if HAVE_GD_BUNDLED
 #define PHP_GD_VERSION_STRING "bundled (2.0.34 compatible)"
 #else
+#ifndef PHP_GD_VERSION_STRING
 #define PHP_GD_VERSION_STRING "2.0"
 #endif
+#endif
 
 /* {{{ PHP_MINFO_FUNCTION
  */
@@ -3046,12 +3048,7 @@
 
        ZEND_FETCH_RESOURCE(im, gdImagePtr, &IM, -1, "Image", le_gd);
 
-#ifdef HAVE_GD_IMAGEELLIPSE  /* this function is missing from GD 2.0.1 */
        gdImageEllipse(im, cx, cy, w, h, color);
-#else
-       gdImageArc(im, cx, cy, w, h, 0, 360, color);
-#endif
-
        RETURN_TRUE;
 }
 /* }}} */
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd.c?r1=1.122&r2=1.123&diff_format=u
Index: php-src/ext/gd/libgd/gd.c
diff -u php-src/ext/gd/libgd/gd.c:1.122 php-src/ext/gd/libgd/gd.c:1.123
--- php-src/ext/gd/libgd/gd.c:1.122     Sat Apr 25 06:20:26 2009
+++ php-src/ext/gd/libgd/gd.c   Tue May 26 19:34:18 2009
@@ -1749,107 +1749,6 @@
        }
 }
 
-
-/**
- * Integer Ellipse functions (gdImageEllipse and gdImageFilledEllipse)
- * Function added by Pierre-Alain Joye 02/08/2003 (p...@pearfr.org)
- * See the ellipse function simplification for the equation
- * as well as the midpoint algorithm.
- */
-
-void gdImageEllipse(gdImagePtr im, int mx, int my, int w, int h, int c)
-{
-       int x=0,mx1=0,mx2=0,my1=0,my2=0;
-       long aq,bq,dx,dy,r,rx,ry,a,b;
-
-       a=w>>1;
-       b=h>>1;
-       gdImageSetPixel(im,mx+a, my, c);
-       gdImageSetPixel(im,mx-a, my, c);
-       mx1 = mx-a;my1 = my;
-       mx2 = mx+a;my2 = my;
-
-       aq = a * a;
-       bq = b * b;
-       dx = aq << 1;
-       dy = bq << 1;
-       r  = a * bq;
-       rx = r << 1;
-       ry = 0;
-       x = a;
-       while (x > 0){
-               if (r > 0) {
-                       my1++;my2--;
-                       ry +=dx;
-                       r  -=ry;
-               }
-               if (r <= 0){
-                       x--;
-                       mx1++;mx2--;
-                       rx -=dy;
-                       r  +=rx;
-               }
-               gdImageSetPixel(im,mx1, my1, c);
-               gdImageSetPixel(im,mx1, my2, c);
-               gdImageSetPixel(im,mx2, my1, c);
-               gdImageSetPixel(im,mx2, my2, c);
-       }
-}
-
-void gdImageFilledEllipse (gdImagePtr im, int mx, int my, int w, int h, int c)
-{
-       int x=0,mx1=0,mx2=0,my1=0,my2=0;
-       long aq,bq,dx,dy,r,rx,ry,a,b;
-       int i;
-       int old_y1,old_y2;
-
-       a=w>>1;
-       b=h>>1;
-
-       for (x = mx-a; x <= mx+a; x++) {
-               gdImageSetPixel(im, x, my, c);
-       }
-
-       mx1 = mx-a;my1 = my;
-       mx2 = mx+a;my2 = my;
-
-       aq = a * a;
-       bq = b * b;
-       dx = aq << 1;
-       dy = bq << 1;
-       r  = a * bq;
-       rx = r << 1;
-       ry = 0;
-       x = a;
-       old_y2=-2;
-       old_y1=-2;
-       while (x > 0){
-               if (r > 0) {
-                       my1++;my2--;
-                       ry +=dx;
-                       r  -=ry;
-               }
-               if (r <= 0){
-                       x--;
-                       mx1++;mx2--;
-                       rx -=dy;
-                       r  +=rx;
-               }
-               if(old_y2!=my2){
-                       for(i=mx1;i<=mx2;i++){
-                               gdImageSetPixel(im,i,my1,c);
-                       }
-               }
-               if(old_y2!=my2){
-                       for(i=mx1;i<=mx2;i++){
-                               gdImageSetPixel(im,i,my2,c);
-                       }
-               }
-               old_y2 = my2;
-               old_y1 = my1;
-       }
-}
-
 void gdImageFillToBorder (gdImagePtr im, int x, int y, int border, int color)
 {
        int lastBorder;
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd_compat.h?r1=1.3&r2=1.4&diff_format=u
Index: php-src/ext/gd/libgd/gd_compat.h
diff -u php-src/ext/gd/libgd/gd_compat.h:1.3 
php-src/ext/gd/libgd/gd_compat.h:1.4
--- php-src/ext/gd/libgd/gd_compat.h:1.3        Tue May 26 14:26:39 2009
+++ php-src/ext/gd/libgd/gd_compat.h    Tue May 26 19:34:18 2009
@@ -49,6 +49,10 @@
 
 int gdImagePixelate(gdImagePtr im, int block_size, const unsigned int mode);
 
+#if !HAVE_GD_IMAGEELLIPSE
+void gdImageEllipse(gdImagePtr im, int cx, int cy, int w, int h, int c);
+#endif
+
 
 #endif
 

http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd_arc.c?view=markup&rev=1.1
Index: php-src/ext/gd/libgd/gd_arc.c
+++ php-src/ext/gd/libgd/gd_arc.c
#if HAVE_GD_BUNDLED
# include "gd.h"
#else
# include <gd.h>
#endif

#include "gd_intern.h"


/**
 * Integer Ellipse functions (gdImageEllipse and gdImageFilledEllipse)
 * Function added by Pierre-Alain Joye 02/08/2003 (p...@pearfr.org)
 * See the ellipse function simplification for the equation
 * as well as the midpoint algorithm.
 */

void gdImageEllipse(gdImagePtr im, int mx, int my, int w, int h, int c)
{
        int x=0,mx1=0,mx2=0,my1=0,my2=0;
        long aq,bq,dx,dy,r,rx,ry,a,b;

        a=w>>1;
        b=h>>1;
        gdImageSetPixel(im,mx+a, my, c);
        gdImageSetPixel(im,mx-a, my, c);
        mx1 = mx-a;my1 = my;
        mx2 = mx+a;my2 = my;

        aq = a * a;
        bq = b * b;
        dx = aq << 1;
        dy = bq << 1;
        r  = a * bq;
        rx = r << 1;
        ry = 0;
        x = a;
        while (x > 0){
                if (r > 0) {
                        my1++;my2--;
                        ry +=dx;
                        r  -=ry;
                }
                if (r <= 0){
                        x--;
                        mx1++;mx2--;
                        rx -=dy;
                        r  +=rx;
                }
                gdImageSetPixel(im,mx1, my1, c);
                gdImageSetPixel(im,mx1, my2, c);
                gdImageSetPixel(im,mx2, my1, c);
                gdImageSetPixel(im,mx2, my2, c);
        }
}

void gdImageFilledEllipse (gdImagePtr im, int mx, int my, int w, int h, int c)
{
        int x=0,mx1=0,mx2=0,my1=0,my2=0;
        long aq,bq,dx,dy,r,rx,ry,a,b;
        int i;
        int old_y1,old_y2;

        a=w>>1;
        b=h>>1;

        for (x = mx-a; x <= mx+a; x++) {
                gdImageSetPixel(im, x, my, c);
        }

        mx1 = mx-a;my1 = my;
        mx2 = mx+a;my2 = my;

        aq = a * a;
        bq = b * b;
        dx = aq << 1;
        dy = bq << 1;
        r  = a * bq;
        rx = r << 1;
        ry = 0;
        x = a;
        old_y2=-2;
        old_y1=-2;
        while (x > 0){
                if (r > 0) {
                        my1++;my2--;
                        ry +=dx;
                        r  -=ry;
                }
                if (r <= 0){
                        x--;
                        mx1++;mx2--;
                        rx -=dy;
                        r  +=rx;
                }
                if(old_y2!=my2){
                        for(i=mx1;i<=mx2;i++){
                                gdImageSetPixel(im,i,my1,c);
                        }
                }
                if(old_y2!=my2){
                        for(i=mx1;i<=mx2;i++){
                                gdImageSetPixel(im,i,my2,c);
                        }
                }
                old_y2 = my2;
                old_y1 = my1;
        }
}



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

Reply via email to