rev |
line source |
nuclear@0
|
1 #include <stdio.h>
|
nuclear@0
|
2 #include <stdlib.h>
|
nuclear@0
|
3 #ifndef __APPLE__
|
nuclear@0
|
4 #include <GL/glut.h>
|
nuclear@0
|
5 #else
|
nuclear@0
|
6 #include <GLUT/glut.h>
|
nuclear@0
|
7 #endif
|
nuclear@0
|
8 #include "imtk.h"
|
nuclear@0
|
9
|
nuclear@0
|
10 void disp(void);
|
nuclear@0
|
11 void reshape(int x, int y);
|
nuclear@0
|
12 void keyb(unsigned char key, int x, int y);
|
nuclear@0
|
13 void keyb_up(unsigned char key, int x, int y);
|
nuclear@0
|
14 void skeyb(int key, int x, int y);
|
nuclear@0
|
15 void skeyb_up(int key, int x, int y);
|
nuclear@0
|
16 void mouse(int bn, int state, int x, int y);
|
nuclear@0
|
17 void motion(int x, int y);
|
nuclear@0
|
18
|
nuclear@0
|
19
|
nuclear@0
|
20 int main(int argc, char **argv)
|
nuclear@0
|
21 {
|
nuclear@0
|
22 glutInitWindowSize(800, 600);
|
nuclear@0
|
23 glutInit(&argc, argv);
|
nuclear@0
|
24 glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE);
|
nuclear@0
|
25 glutCreateWindow("imgui test");
|
nuclear@0
|
26
|
nuclear@0
|
27 glutDisplayFunc(disp);
|
nuclear@0
|
28 glutReshapeFunc(reshape);
|
nuclear@0
|
29 glutKeyboardFunc(keyb);
|
nuclear@0
|
30 glutKeyboardUpFunc(keyb_up);
|
nuclear@0
|
31 glutSpecialFunc(skeyb);
|
nuclear@0
|
32 glutSpecialUpFunc(skeyb_up);
|
nuclear@0
|
33 glutMouseFunc(mouse);
|
nuclear@0
|
34 glutMotionFunc(motion);
|
nuclear@0
|
35 glutPassiveMotionFunc(motion);
|
nuclear@0
|
36
|
nuclear@0
|
37 glutMainLoop();
|
nuclear@0
|
38 return 0;
|
nuclear@0
|
39 }
|
nuclear@0
|
40
|
nuclear@0
|
41 void disp(void)
|
nuclear@0
|
42 {
|
nuclear@0
|
43 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
nuclear@0
|
44
|
nuclear@0
|
45 imtk_begin();
|
nuclear@0
|
46
|
nuclear@0
|
47 if(imtk_button(0, "foobar", 100, 100)) {
|
nuclear@0
|
48 printf("clicked button 0\n");
|
nuclear@0
|
49 }
|
nuclear@0
|
50 if(imtk_button(1, "xyzzy", 100, 200)) {
|
nuclear@0
|
51 printf("clicked button 1\n");
|
nuclear@0
|
52 }
|
nuclear@0
|
53
|
nuclear@0
|
54 imtk_end();
|
nuclear@0
|
55
|
nuclear@0
|
56 glutSwapBuffers();
|
nuclear@0
|
57 }
|
nuclear@0
|
58
|
nuclear@0
|
59 void reshape(int x, int y)
|
nuclear@0
|
60 {
|
nuclear@0
|
61 glViewport(0, 0, x, y);
|
nuclear@0
|
62 imtk_inp_reshape(x, y);
|
nuclear@0
|
63
|
nuclear@0
|
64 glMatrixMode(GL_PROJECTION);
|
nuclear@0
|
65 glLoadIdentity();
|
nuclear@0
|
66 glTranslatef(-1, -1, 0);
|
nuclear@0
|
67 glScalef(2.0 / x, 2.0 / y, 1.0);
|
nuclear@0
|
68 }
|
nuclear@0
|
69
|
nuclear@0
|
70 void keyb(unsigned char key, int x, int y)
|
nuclear@0
|
71 {
|
nuclear@0
|
72 switch(key) {
|
nuclear@0
|
73 case 27:
|
nuclear@0
|
74 exit(0);
|
nuclear@0
|
75
|
nuclear@0
|
76 default:
|
nuclear@0
|
77 break;
|
nuclear@0
|
78 }
|
nuclear@0
|
79
|
nuclear@0
|
80 imtk_inp_key(key, IMTK_DOWN);
|
nuclear@0
|
81 }
|
nuclear@0
|
82
|
nuclear@0
|
83 void keyb_up(unsigned char key, int x, int y)
|
nuclear@0
|
84 {
|
nuclear@0
|
85 imtk_inp_key(key, IMTK_UP);
|
nuclear@0
|
86 }
|
nuclear@0
|
87
|
nuclear@0
|
88 void skeyb(int key, int x, int y)
|
nuclear@0
|
89 {
|
nuclear@0
|
90 imtk_inp_key(key, IMTK_DOWN);
|
nuclear@0
|
91 }
|
nuclear@0
|
92
|
nuclear@0
|
93 void skeyb_up(int key, int x, int y)
|
nuclear@0
|
94 {
|
nuclear@0
|
95 imtk_inp_key(key, IMTK_UP);
|
nuclear@0
|
96 }
|
nuclear@0
|
97
|
nuclear@0
|
98 void mouse(int bn, int state, int x, int y)
|
nuclear@0
|
99 {
|
nuclear@0
|
100 imtk_inp_mouse(bn, state == GLUT_DOWN ? IMTK_DOWN : IMTK_UP);
|
nuclear@0
|
101 }
|
nuclear@0
|
102
|
nuclear@0
|
103 void motion(int x, int y)
|
nuclear@0
|
104 {
|
nuclear@0
|
105 imtk_inp_motion(x, y);
|
nuclear@0
|
106 }
|