#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <alloc.h>
#include <dos.h>
void file_menu()
{

   setcolor(3);
   rectangle(18,28,92,120);
   floodfill(60,60,3);
   setcolor(15);
   rectangle(17,27,93,121);
   setcolor(8);
   outtextxy(28,38,"New");
   outtextxy(27,44,"-");
   outtextxy(28,57,"Open");
   outtextxy(27,63,"-");
   outtextxy(28,76,"Save");
   outtextxy(27,82,"-");
   setcolor(0);
   outtextxy(28,101,"Exit");
   outtextxy(36,107,"-");
}
void edit_menu()
{
   setcolor(3);
   rectangle(65,28,141,120);
   floodfill(100,100,3);
   setcolor(15);
   rectangle(64,27,142,121);
   setcolor(8);
   outtextxy(74,38,"Cut");
   outtextxy(73,46,"-");
   outtextxy(74,57,"Copy");
   outtextxy(81,63,"-");
   outtextxy(74,76,"Paste");
   outtextxy(73,82,"-");
   outtextxy(74,101,"Delete");
   outtextxy(73,107,"-");
}
void draw_menu()
{
   setcolor(3);
   rectangle(120,28,216,120);
   floodfill(122,100,3);
   setcolor(15);
   rectangle(119,27,217,121);
   setcolor(0);
   outtextxy(129,38,"Line      >");
   outtextxy(128,46,"-");
   setcolor(8);
   outtextxy(129,57,"Circle    >");
   outtextxy(128,63,"-");
   outtextxy(129,76,"Rectangle >");
   outtextxy(128,82,"-");
   outtextxy(129,101,"Square    >");
   outtextxy(128,107,"-");


}
void fill_menu()
{
   setcolor(3);
   rectangle(173,28,269,120);
   floodfill(176,100,3);
   setcolor(15);
   rectangle(172,27,270,121);
	 setcolor(8);
	 outtextxy(182,38,"Solid ");
	 outtextxy(181,46,"-");
	 outtextxy(182,57,"Empty");
	 outtextxy(181,63,"-");
	 outtextxy(182,74,"Slash");
	 outtextxy(181,80,"-");
	 outtextxy(182,101,"Line ");
	 outtextxy(181,107,"-");


}
void line_menu()
{
	setcolor(3);
	rectangle(214,36,310,130);
	floodfill(220,100,3);
	setcolor(15);
	rectangle(213,35,311,131);
	setcolor(0);
	outtextxy(223,46,"Single");
	outtextxy(222,52,"-");
	setcolor(8);
	outtextxy(223,65,"Double");
	outtextxy(222,71,"-");
	outtextxy(223,84,"Dotted");
	outtextxy(230,90,"-");
	outtextxy(223,103,"Dashed");
	outtextxy(230,109,"-");
}
void main(void)
{
	 unsigned int size,size1;
	 void far *ptr,*ptr1;


	 int gdriver = DETECT, gmode;
	 initgraph(&gdriver, &gmode, "f:\\tc\\bgi");

	//getimage(int left, int top, int right, int bottom, *bitmap);
	 setcolor(3);
	 rectangle(1,2,getmaxx()-1,25);
	 setfillstyle(SOLID_FILL,3);
	 floodfill(5,5,3);
	 setcolor(0);
	 outtextxy(20,10,"File");
	 outtextxy(19,16,"-");
	 outtextxy(70,10,"Edit");
	 outtextxy(69,16,"-");
	 outtextxy(120,10,"Draw");
	 outtextxy(119,16,"-");
	 outtextxy(174,10,"Fill");
	 outtextxy(182,16,"-");
	 setcolor(15);
	 rectangle(0,27,getmaxx(),getmaxy());
	 rectangle(0,1,getmaxx(),26);
	 while(1)
	 {
		 switch(getch())
		 {
			case 'F':case 'f':
				 size= imagesize(17,27,93,121);
				 ptr= malloc(size);
				 getimage(17,27,93,121,ptr);
				 file_menu();
				switch(getch())
				{
					case 'X':case 'x':
					closegraph();
					exit(0);
				}
				putimage(17,27,ptr,0);
				break;
			case 'E':case 'e':
				 size= imagesize(64,27,142,121);
				 ptr= malloc(size);
				 getimage(64,27,142,121,ptr);
					edit_menu();
				/* switch(getch())
				{
					case 'C':case 'c':
					case 'O':case 'o':
					case 'P':case 'p':
				} */
				getch();
				putimage(64,27,ptr,0);
				break;
			case 'D':case 'd':
				 size= imagesize(119,27,217,121);
				 ptr= malloc(size);
				 getimage(119,27,217,121,ptr);
					draw_menu();
				 switch(getch())
				{
					case 'L':case 'l':
						 size1= imagesize(213,35,311,131);
						 ptr1= malloc(size1);
						 getimage(213,35,311,131,ptr1);
						 line_menu();
						 getch();
						putimage(213,35,ptr1,0);
						break;
				}
				getch();
				putimage(119,27,ptr,0);
				break;
				case 'I':case 'i':
				 size= imagesize(172,27,270,121);
				 ptr= malloc(size);
				 getimage(172,27,270,121,ptr);
					fill_menu();
				/* switch(getch())
				{
					case 'C':case 'c':
					case 'O':case 'o':
					case 'P':case 'p':
				} */
				getch();
				putimage(172,27,ptr,0);
				break;

	}}


}

