#include #include "vgl.h" using namespace std; bool UI_Verbose_G = false; extern GLenum Line_Mode_G; void ChangeState(int & state); void SpecialKeypress(int key, int x, int y) { if (UI_Verbose_G) { switch (key) { case GLUT_KEY_F1: cout << "F1 function key." << endl; break; case GLUT_KEY_F2: cout << "F2 function key." << endl; break; case GLUT_KEY_F3: cout << "F3 function key." << endl; break; case GLUT_KEY_F4: cout << "F4 function key." << endl; break; case GLUT_KEY_F5: cout << "F5 function key." << endl; break; case GLUT_KEY_F6: cout << "F6 function key." << endl; break; case GLUT_KEY_F7: cout << "F7 function key." << endl; break; case GLUT_KEY_F8: cout << "F8 function key." << endl; break; case GLUT_KEY_F9: cout << "F9 function key." << endl; break; case GLUT_KEY_F10: cout << "F10 function key." << endl; break; case GLUT_KEY_F11: cout << "F11 function key." << endl; break; case GLUT_KEY_F12: cout << "F12 function key." << endl; break; case GLUT_KEY_LEFT: cout << "Left directional key." << endl; break; case GLUT_KEY_UP: cout << "Up directional key." << endl; break; case GLUT_KEY_RIGHT: cout << "Right directional key." << endl; break; case GLUT_KEY_DOWN: cout << "Down directional key." << endl; break; case GLUT_KEY_PAGE_UP: cout << "Page up directional key." << endl; break; case GLUT_KEY_PAGE_DOWN: cout << "Page down directional key." << endl; break; case GLUT_KEY_HOME: cout << "Home directional key." << endl; break; case GLUT_KEY_END: cout << "End directional key." << endl; break; case GLUT_KEY_INSERT: cout << "Inset directional key." << endl; break; default: cout << "Unknown Key " << endl; } } return; } void KeyUp(unsigned char key, int x, int y) { if (UI_Verbose_G) { cout << "The " << key << " key was released" << endl; } return; } void SpecialUp(int key, int x, int y) { if (UI_Verbose_G) { cout << "A special was released " << endl; } return; } void KeyHelp() { cout << endl; cout << "Keys " << endl; cout << "\tq,Q\tQuit" << endl; cout << "\tc\tChange Mode" << endl; cout << "\tr,R\tRedisplay" << endl; cout << "\tv\tToggle Verbose" << endl; cout << "\th,?\tHelp" << endl; cout << endl; return; } void Keypress(unsigned char key, int x, int y) { static int state = 1; if (UI_Verbose_G) { cout << "The " << key << " key was pressed at (" << x << "," << y << ")" << endl; } bool redisplay = false; switch (key) { case 'h': case '?': KeyHelp(); break; case 'Q': case 'q': exit(0); case 'c': ChangeState(state); break; case 'r': case 'R': redisplay = true; break; case 'v': UI_Verbose_G = !UI_Verbose_G; break; default: cerr << "Unhandled keypress for key '" << key << "'" << endl; } if (redisplay) { glutPostRedisplay(); } return; } void ChangeState(int & state) { switch(state) { case 0: Line_Mode_G = GL_POINTS; cout << "Drawing Points " << endl; break; case 1: Line_Mode_G = GL_LINES; cout << "Drawing Lines " << endl; break; case 2: Line_Mode_G = GL_LINE_STRIP; cout << "Drawing Line Strip " << endl; break; case 3: Line_Mode_G = GL_LINE_LOOP; cout << "Drawing Line Loop " << endl; break; case 4: Line_Mode_G = GL_TRIANGLES; cout << "Drawing Triangles " << endl; break; case 5: Line_Mode_G = GL_TRIANGLE_STRIP; cout << "Drawing Triangle Strip " << endl; break; default: case 6: Line_Mode_G = GL_TRIANGLE_FAN; cout << "Drawing Triangle Fan " << endl; state = -1; break; } state++; return; }