Annotation of embedaddon/php/ext/gd/libgd/gd_arc.c, revision 1.1
1.1 ! misho 1: #if HAVE_GD_BUNDLED
! 2: # include "gd.h"
! 3: #else
! 4: # include <gd.h>
! 5: #endif
! 6:
! 7: #include "gd_intern.h"
! 8:
! 9:
! 10: /**
! 11: * Integer Ellipse functions (gdImageEllipse and gdImageFilledEllipse)
! 12: * Function added by Pierre-Alain Joye 02/08/2003 (paj@pearfr.org)
! 13: * See the ellipse function simplification for the equation
! 14: * as well as the midpoint algorithm.
! 15: */
! 16:
! 17: void gdImageEllipse(gdImagePtr im, int mx, int my, int w, int h, int c)
! 18: {
! 19: int x=0,mx1=0,mx2=0,my1=0,my2=0;
! 20: long aq,bq,dx,dy,r,rx,ry,a,b;
! 21:
! 22: a=w>>1;
! 23: b=h>>1;
! 24: gdImageSetPixel(im,mx+a, my, c);
! 25: gdImageSetPixel(im,mx-a, my, c);
! 26: mx1 = mx-a;my1 = my;
! 27: mx2 = mx+a;my2 = my;
! 28:
! 29: aq = a * a;
! 30: bq = b * b;
! 31: dx = aq << 1;
! 32: dy = bq << 1;
! 33: r = a * bq;
! 34: rx = r << 1;
! 35: ry = 0;
! 36: x = a;
! 37: while (x > 0){
! 38: if (r > 0) {
! 39: my1++;my2--;
! 40: ry +=dx;
! 41: r -=ry;
! 42: }
! 43: if (r <= 0){
! 44: x--;
! 45: mx1++;mx2--;
! 46: rx -=dy;
! 47: r +=rx;
! 48: }
! 49: gdImageSetPixel(im,mx1, my1, c);
! 50: gdImageSetPixel(im,mx1, my2, c);
! 51: gdImageSetPixel(im,mx2, my1, c);
! 52: gdImageSetPixel(im,mx2, my2, c);
! 53: }
! 54: }
! 55:
! 56: void gdImageFilledEllipse (gdImagePtr im, int mx, int my, int w, int h, int c)
! 57: {
! 58: int x=0,mx1=0,mx2=0,my1=0,my2=0;
! 59: long aq,bq,dx,dy,r,rx,ry,a,b;
! 60: int i;
! 61: int old_y1,old_y2;
! 62:
! 63: a=w>>1;
! 64: b=h>>1;
! 65:
! 66: for (x = mx-a; x <= mx+a; x++) {
! 67: gdImageSetPixel(im, x, my, c);
! 68: }
! 69:
! 70: mx1 = mx-a;my1 = my;
! 71: mx2 = mx+a;my2 = my;
! 72:
! 73: aq = a * a;
! 74: bq = b * b;
! 75: dx = aq << 1;
! 76: dy = bq << 1;
! 77: r = a * bq;
! 78: rx = r << 1;
! 79: ry = 0;
! 80: x = a;
! 81: old_y2=-2;
! 82: old_y1=-2;
! 83: while (x > 0){
! 84: if (r > 0) {
! 85: my1++;my2--;
! 86: ry +=dx;
! 87: r -=ry;
! 88: }
! 89: if (r <= 0){
! 90: x--;
! 91: mx1++;mx2--;
! 92: rx -=dy;
! 93: r +=rx;
! 94: }
! 95: if(old_y2!=my2){
! 96: for(i=mx1;i<=mx2;i++){
! 97: gdImageSetPixel(im,i,my1,c);
! 98: }
! 99: }
! 100: if(old_y2!=my2){
! 101: for(i=mx1;i<=mx2;i++){
! 102: gdImageSetPixel(im,i,my2,c);
! 103: }
! 104: }
! 105: old_y2 = my2;
! 106: old_y1 = my1;
! 107: }
! 108: }
! 109:
! 110:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>