cvs: gd /libgd ISSUES gd.c /libgd/tests bug00010.c

[email protected] ("Pierre-Alain Joye")
Newsgroups php.gd.cvs
Message-ID <cvspajoye1160440841@cvsserver>
pajoye		Tue Oct 10 00:40:41 2006 UTC

  Added files:                 
    /gd/libgd/tests	bug00010.c 

  Modified files:              
    /gd/libgd	gd.c ISSUES 
  Log:
  - #10, gdImageFilledEllipse does not respect transparency (rewriten)
  
  
http://cvs.php.net/viewvc.cgi/gd/libgd/gd.c?r1=1.34&r2=1.35&diff_format=u
Index: gd/libgd/gd.c
diff -u gd/libgd/gd.c:1.34 gd/libgd/gd.c:1.35
--- gd/libgd/gd.c:1.34	Sun Oct  8 21:43:16 2006
+++ gd/libgd/gd.c	Tue Oct 10 00:40:41 2006
@@ -1,3 +1,4 @@
+/* $Id: gd.c,v 1.35 2006/10/10 00:40:41 pajoye Exp $ */
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
@@ -1576,9 +1577,56 @@
     }
 }
 
-BGD_DECLARE(void) gdImageFilledEllipse (gdImagePtr im, int cx, int cy, int w, int h, int color)
+BGD_DECLARE(void) gdImageFilledEllipse (gdImagePtr im, int mx, int my, int w, int h, int c)
 {
-  gdImageFilledArc (im, cx, cy, w, h, 0, 360, color, gdPie);
+	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;
+
+	gdImageLine(im, mx-a, my, 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;
+	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;
+	}
 }
 
 BGD_DECLARE(void) gdImageFillToBorder (gdImagePtr im, int x, int y, int border, int color)
http://cvs.php.net/viewvc.cgi/gd/libgd/ISSUES?r1=1.8&r2=1.9&diff_format=u
Index: gd/libgd/ISSUES
diff -u gd/libgd/ISSUES:1.8 gd/libgd/ISSUES:1.9
--- gd/libgd/ISSUES:1.8	Mon Oct  9 14:22:22 2006
+++ gd/libgd/ISSUES	Tue Oct 10 00:40:41 2006
@@ -26,3 +26,4 @@
 
 	RANLIB handling
 	configure.ac: AC_PROG_RANLIB is obsolete, now handled by AC_PROG_LIBTOO
+#10, gdImageFilledEllipse does not respect transparency

http://cvs.php.net/viewvc.cgi/gd/libgd/tests/bug00010.c?view=markup&rev=1.1
Index: gd/libgd/tests/bug00010.c
+++ gd/libgd/tests/bug00010.c
/* $Id: bug00010.c,v 1.1 2006/10/10 00:40:41 pajoye Exp $ */
#include "gd.h"

int main()
{
 	gdImagePtr im;
	FILE *fp;

	im = gdImageCreateTrueColor(100,100);
	
	gdImageFilledEllipse(im, 50,50, 70, 90, 0x50FFFFFF);

	fp = fopen("bug00010_out.png", "wb");
 	gdImagePng(im, fp);
	fclose(fp);

 	/* Destroy it */
 	gdImageDestroy(im);

 	return 0;
}
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.