void create_menus() { int menu, anim, j; /* anim = glutCreateMenu(anim_menu); glutAddMenuEntry("Play forward (a)", MENU_ANIM_FORWARD); glutAddMenuEntry("Play reverse (b)", MENU_ANIM_REVERSE); glutAddMenuEntry("Advance frame (>)", MENU_ANIM_PLUS); glutAddMenuEntry("Backstep frame (<)", MENU_ANIM_MINUS); glutAddMenuEntry("Re(w)ind", MENU_ANIM_REWIND); glutAddMenuEntry("(S)top", MENU_ANIM_STOP);*/ menu = glutCreateMenu(menu_func); for(j = 0; j < sizeof(menu_choices)/sizeof(*menu_choices); j++) glutAddMenuEntry(menu_choices[j], MENU_TEXTURE + j); /* glutAddSubMenu("Animate...", anim);*/ glutAddMenuEntry("Quit", MENU_EXIT); glutSetMenu(menu); glutAttachMenu(GLUT_RIGHT_BUTTON); /* Turn off some menu items */ menu_func(MENU_WIREFRAME); menu_func(MENU_AXES); /* menu_func(MENU_GRIDLINES);*/ menu_func(MENU_SNAPSHOT); }
void textMenuLoop () { char command[MAX_LINE]; while (true) { if (!quietMode) cerr << endl << "selection > " << flush; cin >> command; switch (command[0]) { case '\n': case '\0': //printMenu(); break; case 'Q': case 'q': menu_func(M_QUIT); break; case 'H': case 'h': menu_func(M_HELP); break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': menu_func(atoi(command)); break; default: //printMenu(); break; } } }
// A handler for key events. Note that once again the parameter type is // wrong. In this case, all normal ASCII keys do map properly, but some // special characters are also available for our use. See the SDL // documentation for more details. void keyfunc(unsigned char key) { switch(tolower(key)) { case 't': menu_func(MENU_TEXTURE); break; case 'l': menu_func(MENU_LIGHTING); break; case 'x': menu_func(MENU_AXES); break; case 'w': menu_func(MENU_WEAPON); break; case 'r': menu_func(MENU_WIREFRAME); break; case 'f': menu_func(MENU_LINEAR); break; case 'a': menu_func(MENU_ANIM_FORWARD); break; case 'b': menu_func(MENU_ANIM_REVERSE); break; case 's': menu_func(MENU_ANIM_STOP); break; case '<': case ',': menu_func(MENU_ANIM_MINUS); break; case '>': case '.': menu_func(MENU_ANIM_PLUS); break; case 'e': menu_func(MENU_ANIM_REWIND); break; case '+': z += ZOOM_INC; eye[2] = z; display(); break; case '-': z -= ZOOM_INC; eye[2] = z; display(); break; case '8': phi += ROTATE_INC; display(); break; case '2': phi -= ROTATE_INC; display(); break; case '4': theta -= ROTATE_INC; display(); break; case '6': theta += ROTATE_INC; display(); break; case 'q': exit(0); break; } }
/* the function for the "Menu" command */ void CMD_Menu(F_CMD_ARGS) { menu_func(F_PASS_ARGS, True); return; }
/* the function for the "Popup" command */ void CMD_Popup(F_CMD_ARGS) { menu_func(F_PASS_ARGS, False); return; }
void keyfunc(unsigned char key, int x, int y) { switch(tolower(key)) { case 't': menu_func(MENU_TEXTURE); break; case 'l': menu_func(MENU_LIGHTING); break; case 'x': menu_func(MENU_AXES); break; case 'w': menu_func(MENU_WIREFRAME); break; case 'f': menu_func(MENU_LINEAR); break; case 'e': menu_func(MENU_TERRAIN); break; case 'a': menu_func(MENU_ANIM_FORWARD); break; case 'b': menu_func(MENU_ANIM_REVERSE); break; case 'g': menu_func(MENU_GRIDLINES); break; case 'c': menu_func(MENU_CRATERS); break; case '\\': menu_func(MENU_LOCK); break; case 's': menu_func(MENU_SMOOTH); break; case '+': eye[2] += ZOOM_INC; glutPostRedisplay(); break; case '-': eye[2] -= ZOOM_INC; glutPostRedisplay(); break; case 'q': exit(0); break; case 'k': menu_func(MENU_LOCK); break; } }
void anim_menu(int choice) { menu_func(choice); }