PROC Circle:
LOCAL lc6z&,lc7z%,lc2z&,lc3z&,lc4z&
LOCAL lc5z,lc8z%,lc1z%,Gmode%
Gmode%=2
dINIT "Draw Elipse/Circle"
dCHOICE lc1z%,"Type","Hollow,Filled,Patterned"
lc2z&=240
dLONG lc2z&,"Centre X position",0,gWIDTH
lc3z&=80
dLONG lc3z&,"Centre Y position",0,gHEIGHT
lc4z&=79
dLONG lc4z&,"Radius",1,gWIDTH/2
lc5z=1
dFLOAT lc5z,"Relative height",0,999
IF DIALOG=0
STOP
ENDIF
LOCK ON
lc6z&=1
lc7z%=2*lc4z&
gAT lc2z&-lc4z&,lc3z&
gLINEBY 0,0
WHILE lc6z&<=lc7z%
IF KEY
GET
gCLS
Circle:
ENDIF
lc8z%=-(SQR(lc4z&*lc6z&*2-lc6z&**2))*lc5z
gAT lc2z&-lc4z&+lc6z&,lc3z&-lc8z%
IF lc1z%=1
gLINEBY 0,0
gMOVE 0,2*lc8z%
gLINEBY 0,0
ELSEIF lc1z%=2
gLINEBY 0,2*lc8z%
ELSEIF lc1z%=3
gMOVE 0,2*lc8z%
gPATT -1,1,-2*lc8z%,Gmode%
ENDIF
lc6z&=lc6z&+1
ENDWH
LOCK OFF
GET
gCLS
Circle:
ENDP
|
|