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;
  }
 }

}