win32
[censuslogo] / src / main_glut.c
1 #include <stdlib.h>
2 #include <assert.h>
3 #include <GL/glut.h>
4 #include "app.h"
5
6 static void display(void);
7 static void idle(void);
8 static void reshape(int x, int y);
9 static void keyb(unsigned char key, int x, int y);
10
11 static long start_time;
12
13 int main(int argc, char **argv)
14 {
15         unsigned int flags = GLUT_RGB | GLUT_DOUBLE;
16
17         glutInit(&argc, argv);
18         if(app_parse_args(argc, argv) == -1) {
19                 return 1;
20         }
21
22 #ifdef MSAA
23         if(msaa) {
24                 flags |= GLUT_MULTISAMPLE;
25         }
26 #endif
27
28         glutInitWindowSize(1280, 800);
29         glutInitDisplayMode(flags);
30         glutCreateWindow("census");
31
32         if(fullscr) {
33                 glutFullScreen();
34                 glutSetCursor(GLUT_CURSOR_NONE);
35         }
36
37         glutDisplayFunc(display);
38         glutIdleFunc(idle);
39         glutReshapeFunc(reshape);
40         glutKeyboardFunc(keyb);
41
42         if(app_init() == -1) {
43                 return 1;
44         }
45         start_time = glutGet(GLUT_ELAPSED_TIME);
46
47         glutMainLoop();
48         return 0;
49 }
50
51 static void display(void)
52 {
53         msec = glutGet(GLUT_ELAPSED_TIME) - start_time;
54
55         app_display();
56
57         glutSwapBuffers();
58         assert(glGetError() == GL_NO_ERROR);
59 }
60
61 static void idle(void)
62 {
63         glutPostRedisplay();
64 }
65
66 static void reshape(int x, int y)
67 {
68         app_reshape(x, y);
69         win_width = x;
70         win_height = y;
71 }
72
73 static void keyb(unsigned char key, int x, int y)
74 {
75         app_keyboard(key, 1);
76 }
77
78 void app_quit(void)
79 {
80         exit(0);
81 }
82
83 static int saved_width = 1280, saved_height = 800;
84
85 void app_fullscreen(void)
86 {
87         saved_width = win_width;
88         saved_height = win_height;
89         glutFullScreen();
90         glutSetCursor(GLUT_CURSOR_NONE);
91 }
92
93 void app_windowed(void)
94 {
95         glutReshapeWindow(saved_width, saved_height);
96         glutSetCursor(GLUT_CURSOR_INHERIT);
97 }