6 static void display(void);
7 static void idle(void);
8 static void keydown(unsigned char key, int x, int y);
9 static void keyup(unsigned char key, int x, int y);
10 static void mouse(int bn, int st, int x, int y);
12 static long time_start;
14 int main(int argc, char **argv)
16 unsigned int glut_flags = GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH;
18 glutInit(&argc, argv);
21 if(parse_args(argc, argv) == -1) {
24 if(opt.srgb) glut_flags |= GLUT_SRGB;
25 if(opt.msaa) glut_flags |= GLUT_MULTISAMPLE;
27 glutInitWindowSize(opt.width, opt.height);
28 glutInitDisplayMode(glut_flags);
29 glutCreateWindow("Prior Art / Mindlapse");
31 glutDisplayFunc(display);
33 glutReshapeFunc(demo_reshape);
34 glutKeyboardFunc(keydown);
35 glutKeyboardUpFunc(keyup);
37 glutMotionFunc(demo_mmotion);
38 glutSpaceballMotionFunc(demo_sball_motion);
39 glutSpaceballRotateFunc(demo_sball_rotate);
40 glutSpaceballButtonFunc(demo_sball_button);
46 if(demo_init() == -1) {
51 time_start = glutGet(GLUT_ELAPSED_TIME);
62 static void display(void)
64 time_msec = glutGet(GLUT_ELAPSED_TIME) - time_start;
71 static void idle(void)
77 ((key == '\r' || key == '\n') && (glutGetModifiers() & GLUT_ACTIVE_ALT))
80 static void keydown(unsigned char key, int x, int y)
82 static int fullscr = -1, prev_x, prev_y;
85 if(fullscr == -1) fullscr = opt.fullscr;
88 prev_x = glutGet(GLUT_WINDOW_X);
89 prev_y = glutGet(GLUT_WINDOW_Y);
92 glutPositionWindow(prev_x, prev_y);
96 demo_keyboard(key, 1);
99 static void keyup(unsigned char key, int x, int y)
101 demo_keyboard(key, 0);
104 static void mouse(int bn, int st, int x, int y)
106 demo_mbutton(bn - GLUT_LEFT_BUTTON, st == GLUT_DOWN, x, y);