#include<stdio.h>
#include<dos.h>
#include<conio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<graphics.h>



struct REGPACK reg;
void showmouse()
{
reg.r_ax=0x001;
intr(0x0033,&reg);
}
void hidemouse()
{
reg.r_ax=0x002;
intr(0x0033,&reg);
}
void main()
{
int gd=DETECT,gm,i,x,y;
initgraph(&gd,&gm,"..\\bgi");
setcolor(15);
line(10,10,630,10);
line(630,10,630,470);
line(630,470,10,470);
line(10,470,10,10);
setcolor(5);
rectangle(12,12,628,468);
line(30,12,30,468);
settextstyle(2,0,4);
setcolor(15);
outtextxy(19,80,"N");
delay(550);
outtextxy(19,90,"Y");
delay(450);
outtextxy(20,100,"I");
delay(350);
outtextxy(19,110,"T");
delay(250);
outtextxy(19,120," ");
delay(150);
outtextxy(19,130,"H");
delay(150);
outtextxy(19,140,"a");
delay(150);
outtextxy(19,150,"n");
delay(150);
outtextxy(19,160,"d");
delay(150);
outtextxy(19,170,"w");
delay(150);
outtextxy(20,180,"r");
delay(150);
outtextxy(20,190,"i");
delay(150);
outtextxy(19,200,"t");
delay(150);
outtextxy(20,210,"i");
delay(150);
outtextxy(19,220,"n");
delay(150);
outtextxy(19,230,"g");
delay(150);
outtextxy(19,240, " ");
delay(150);
outtextxy(19,250,"R");
delay(150);
outtextxy(19,260,"e");
delay(150);
outtextxy(19,270,"c");
delay(150);
outtextxy(19,280,"o");
delay(150);
outtextxy(19,290,"g");
delay(150);
outtextxy(19,300,"n");
delay(150);
outtextxy(20,310,"i");
delay(150);
outtextxy(19,320,"z");
delay(150);
outtextxy(19,330,"e");
delay(150);
outtextxy(20,340,"r");
line(12,430,28,430);
outtextxy(18,435,"-");
delay(550);
line(12,450,28,450);
outtextxy(18,455,"x");
delay(550);
rectangle(10,10,350,470);
line(350,130,626,130);
delay(350);
line(350,250,626,250);
delay(350);
line(350,370,626,370);
delay(350);
setcolor(7);
for(i=0;i<50;i++)
{
line(30,10+i*10,350,10+i*10);
delay(20);
}
for(i=0;i<33;i++)
{
line(30+i*10,10,30+i*10,466);
delay(20);
}
setcolor(15);       /*histograms*/
line(370,70,470,70);
delay(350);
line(420,20,420,120);
delay(350);
line(370,140,370,240);
delay(350);
line(370,240,470,240);
delay(350);
line(500,12,500,370);
delay(350);
setcolor(7);
for(i=0;i<19;i++)
line(418,25+i*5,422,25+i*5);
for(i=0;i<19;i++)
line(375+5*i,68,375+5*i,72);
for(i=0;i<19;i++)
line(368,145+i*5,372,145+i*5);
for(i=0;i<19;i++)
line(375+5*i,238,375+5*i,242);
setfillstyle(1,7);
setcolor(7);
bar3d(440,400,550,440,0,0);
setcolor(15);
line(438,398,552,398);
line(439,399,551,399);
line(438,398,438,442);
line(439,399,439,441);
setcolor(8);
line(552,398,552,442);
line(551,399,551,441);
line(438,442,552,442);
line(439,441,551,441);
setcolor(0);
settextstyle(2.5,0,4);
outtextxy(468,413,"Recognizer");
showmouse();


reg.r_ax=0x003;
reg.r_bx=0x001;

while(1)
{
intr(0x033,&reg);
if(reg.r_bx==1) {x=reg.r_cx;
		 y=reg.r_dx;
		 gotoxy(65,4);
		 printf(" %d %d ", x , y);
		 /*********** Exit *************/
		 if ((x>=10) && (x<=30)&&
		     (y>=450) && (y<=470)) exit(1);
		 /*********** FreeHand **********/
		 if((x>30) && (x<=350)&& (y>=12) && (y<=468))
		 {
		 
		 setfillstyle (1,1);
		 setcolor(1);
		 hidemouse();
		 //bar3d(x-3,y-3,x+3,y+3,1,1);
    	 x -= x % 10;
		 y -= y % 10;		 
		 bar3d(x+1,y+1,x+8,y+9,1,1);
		 // bar3d(x+1,y+1,x+9,y+9,1,1);
		 showmouse();
		 reg.r_ax=0x003;
		 }
		 }
		 }
		 }