/**************************************************

 Program     : Drawing using mouse in C
----------------------------------------------------
 Author      : Navtez S. Benipal.
 Email       : be00078@bbsbec.org
               navtezsingh@hotmail.com
 URL         : www.geocities.com/desireofstars
----------------------------------------------------
 Description : Left click hides the mouse button
               Right button show and changes color
                of drawing
               Press both button to exit

**************************************************/
#include<stdio.h>
#include<dos.h>
#include<conio.h>
#include<graphics.h>
#include<stdlib.h>
void minitgraph();
void theend();
main()
{
union REGS iregs,oregs,regs;
int gdriver=DETECT,gmode=0;
int nx=-1,ny=-1,xprev=-1,yprev=-1;
/* show mouse cursor */
int x,y,buttons;
iregs.x.ax=1;
int86(0x33,&iregs,&oregs);
/*intialize mouse and get intial status */
if(oregs.x.ax==0)
{
 printf("no mouse available\n");
 exit(1);
}
//clrscr();
//minitgraph();
initgraph(&gdriver,&gmode,"..\\");
gotoxy(20,1);
printf("press both button to exit");
//iregs.x.ax=2;
//int86(0x33,&iregs,&oregs);
do
{
 iregs.x.ax=3;// mouse move
 int86(0x33,&iregs,&oregs);
 buttons=oregs.x.bx & 3;

 x=oregs.x.cx;
 y=oregs.x.dx;
 gotoxy(1,1);
 //printf("x=%3d,y=%3d",x,y);
 nx=x;
 ny=y;
 if(buttons==1)
 { regs.x.ax=2; int86(0x33,&regs,&regs);
   setcolor(random(15));
   xprev=yprev=-1;
  }
 if(buttons==2)
 { regs.x.ax=1; int86(0x33,&regs,&regs);
   if(xprev<0 ||yprev<0)
   {
   xprev=nx;
   yprev=ny;
   }
   else
   {
   line(nx,ny,xprev,yprev);
   xprev=nx;
   yprev=ny;
   }
  }

}while(buttons!=3);
//clrscr();
gotoxy(20,1);
cleardevice();
printf("have a mice day");
getch();
theend();
return 1;
}

void minitgraph()
{
 union REGS iregs,oregs;
 iregs.h.ah=0;
 iregs.h.al=0X10;
 int86(0X10,&iregs,&oregs);
}

void theend()
{
 union REGS iregs,oregs;
 iregs.h.ah=0;
 iregs.h.al=3;
 int86(0x10,&iregs,&oregs);
}
