#include <gl\glut.h>
#include <iostream>
#include <ctime>
const int width = 800, height=600;
enum Mode {DRAW_RECT, IDLE};
Mode current_mode = IDLE;
int start_x=0;
int start_y=0;
int end_x=0, end_y=0;
int total_clicks=0;
int down=0;
void OnMouseMove(int x, int y) {
if(down) {
end_x = x;
end_y=height-y;
glutPostRedisplay();
}
}
void processMouse(int button, int state, int x, int y)
{
if(state == GLUT_DOWN && button == GLUT_LEFT_BUTTON)
{
if(current_mode==DRAW_RECT){
start_x = x;
start_y = height-y;
down = 1;
}
}
}
void Render()
{
glClear(GL_COLOR_BUFFER_BIT);
if(current_mode==DRAW_RECT)
glRectf(start_x, start_y, end_x, end_y);
}
void processMenuEvents(int option) {
switch (option) {
case 0 : current_mode = DRAW_RECT; break;
}
}
void initMenu() {
int menu;
menu = glutCreateMenu(processMenuEvents);
glutAddMenuEntry("Create Rectangle", 0);
glutAttachMenu(GLUT_RIGHT_BUTTON);
}
int main(int argc, char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGB|GLUT_SINGLE);
glutInitWindowSize(width,height);
glutCreateWindow("SIMPLE DISPLAY");
glShadeModel(GL_SMOOTH);
glutDisplayFunc(Render);
glutMouseFunc(processMouse);
glutMotionFunc(OnMouseMove);
glMatrixMode(GL_PROJECTION);
glOrtho(0,width,0,height,0,1);
initMenu();
glutMainLoop();
return 0;
}