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