cvs: gd /libgd/src gd.c
[email protected] ("Pierre-Alain Joye") Wed, 12 Dec 2007 16:30:33 -0000
| Newsgroups | php.gd.cvs |
|---|---|
| Message-ID | <cvspajoye1197477033@cvsserver> |
pajoye Wed Dec 12 16:30:33 2007 UTC
Modified files:
/gd/libgd/src gd.c
Log:
- #50, add gdImageEllipse (test to come)
http://cvs.php.net/viewvc.cgi/gd/libgd/src/gd.c?r1=1.73&r2=1.74&diff_format=u
Index: gd/libgd/src/gd.c
diff -u gd/libgd/src/gd.c:1.73 gd/libgd/src/gd.c:1.74
--- gd/libgd/src/gd.c:1.73 Tue Nov 20 13:43:35 2007
+++ gd/libgd/src/gd.c Wed Dec 12 16:30:33 2007
@@ -1,4 +1,4 @@
-/* $Id: gd.c,v 1.73 2007/11/20 13:43:35 pajoye Exp $ */
+/* $Id: gd.c,v 1.74 2007/12/12 16:30:33 pajoye Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
@@ -1704,6 +1704,46 @@
}
}
+BGD_DECLARE(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);
+ }
+}
+
+
BGD_DECLARE(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;