void BBGrDriver2D::oval( int x1,int y1,int w,int h,bool solid ){ BBRect dest(x1,y1,x1+w,y1+h); if( !clipRect().clip( &dest ) ) return; float xr=w*.5f,yr=h*.5f,ar=(float)w/(float)h; float cx=x1+xr+.5f,cy=y1+yr-.5f,rsq=yr*yr,y; if( solid ){ y=dest.top-cy; for( int t=dest.top;t<dest.bottom;++y,++t ){ float x=(float)sqrt( rsq-y*y )*ar; int xa=(int)floor( cx-x ),xb=(int)floor( cx+x ); rect( xa,t,xb-xa,1,true ); } return; } int l,r,p_xa,p_xb,t,hh=(int)floor(cy); p_xa=p_xb=(int)cx; t=dest.top;y=t-cy; if( dest.top>y1 ){ --t;--y; } for( ;t<=hh;++y,++t ){ float x=(float)sqrt( rsq-y*y )*ar; int xa=(int)floor( cx-x ),xb=(int)floor( cx+x ); l=xa;r=p_xa;if(r<=l)r=l+1; rect( l,t,r-l,1,true ); l=p_xb;r=xb;if(l>=r)l=r-1; rect( l,t,r-l,1,true ); p_xa=xa;p_xb=xb; } p_xa=p_xb=(int)cx; t=dest.bottom-1;y=t-cy; if( dest.bottom<y1+h ){ ++t;++y; } for( ;t>hh;--y,--t ){ float x=(float)sqrt( rsq-y*y )*ar; int xa=(int)floor( cx-x ),xb=(int)floor( cx+x ); l=xa;r=p_xa;if(r<=l)r=l+1; rect( l,t,r-l,1,true ); l=p_xb;r=xb;if(l>=r)l=r-1; rect( l,t,r-l,1,true ); p_xa=xa;p_xb=xb; }}

So where is yours?

Function my_circle(x,y,r,col=222+(222 Shl 8)+(222 Shl 16))x2#=ry2#=0n=r*6.29 ; if gaps in circle then increase this number, but should be okFor i=0 To n WritePixel x+x2,y+y2,col x2=x2-y2/r y2=y2+x2/rNextEnd Function

function solid_circle(x,y,r)for i=1 to r my_circle(x,y,i)nextend function