void Line(U32 X1, U32 Y1, U32 X2, U32 Y2, U32 color)
{
U32 i;
U32 x1, y1, x2, y2;
U32 DX, DY;
U32 AX, AY;
U32 D; // D = DX/DY
int flag =0;
if(X1 > X2){
DX = X1 - X2;
x1 = X1;
x2 = X2;
if(Y1 > Y2){
DY = Y1 - Y2;
y1 = Y1;
y2 = Y2;
}else{
DY = Y2 - Y1;
y1 = Y2;
y2 = Y1;
flag = 1;
}
}else{
DX = X2 - X1;
x1 = X2;
x2 = X1;
if(Y1 > Y2){
DY = Y1 - Y2;
y1 = Y1;
y2 = Y2;
flag =1;
}else{
DY = Y2 - Y1;
y1 = Y2;
y2 = Y1;
}
}
if(DX >DY){
if(DY == 0) D = 0;
else D = (DY*100)/DX;
for(i = 1;i<= DX;i++){
AX = x2+i;
if(flag){
AY = y1-((D * i)/100);
}else{
AY = y2+((D * i)/100);
}
_PutTft16Bit_320240(AX, AY,color);
//uart_printf("DX :X = %d Y = %d color = %d\n",AX,AY,color);
}
}else{
if(DX == 0) D = 0;
else D = (DX*100)/DY;
for(i = 1;i<= DY;i++){
AY = y2+i;
if(flag){
AX = x1-((D * i)/100);
}else{
AX = x2+((D * i)/100);
}
_PutTft16Bit_320240(AX, AY,color);
//uart_printf("DY :X = %d Y = %d color = %d\n",AX,AY,color);
}
}
}
void Circle(X1, Y1, Radius,color)
{
U32 x, y;
int flag = 0;
U32 r2;
y=Radius;
r2 = Radius*Radius;
U32 j=0;
for(x=0; x<=Radius;x++){
if(((x*x)+((y-j)*(y-j)))> r2){
j++;
flag = 1;
}
//uart_printf("Radius X = %d Y = %d\n",x,y-j);
_PutTft16Bit_320240(X1+x, Y1+(y-j),color);
_PutTft16Bit_320240(X1-x, Y1+(y-j),color);
_PutTft16Bit_320240(X1+x, Y1-(y-j),color);
_PutTft16Bit_320240(X1-x, Y1-(y-j),color);
if(flag){
--x;
flag =0;
}
}
}

