nuclear@0: #include nuclear@0: #include nuclear@0: #ifndef __APPLE__ nuclear@0: #include nuclear@0: #else nuclear@0: #include nuclear@0: #endif nuclear@0: #include "imtk.h" nuclear@0: nuclear@0: void disp(void); nuclear@0: void reshape(int x, int y); nuclear@0: void keyb(unsigned char key, int x, int y); nuclear@0: void keyb_up(unsigned char key, int x, int y); nuclear@0: void skeyb(int key, int x, int y); nuclear@0: void skeyb_up(int key, int x, int y); nuclear@0: void mouse(int bn, int state, int x, int y); nuclear@0: void motion(int x, int y); nuclear@0: nuclear@0: nuclear@0: int main(int argc, char **argv) nuclear@0: { nuclear@0: glutInitWindowSize(800, 600); nuclear@0: glutInit(&argc, argv); nuclear@0: glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); nuclear@0: glutCreateWindow("imgui test"); nuclear@0: nuclear@0: glutDisplayFunc(disp); nuclear@0: glutReshapeFunc(reshape); nuclear@0: glutKeyboardFunc(keyb); nuclear@0: glutKeyboardUpFunc(keyb_up); nuclear@0: glutSpecialFunc(skeyb); nuclear@0: glutSpecialUpFunc(skeyb_up); nuclear@0: glutMouseFunc(mouse); nuclear@0: glutMotionFunc(motion); nuclear@0: glutPassiveMotionFunc(motion); nuclear@0: nuclear@0: glutMainLoop(); nuclear@0: return 0; nuclear@0: } nuclear@0: nuclear@0: void disp(void) nuclear@0: { nuclear@0: glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); nuclear@0: nuclear@0: imtk_begin(); nuclear@0: nuclear@0: if(imtk_button(0, "foobar", 100, 100)) { nuclear@0: printf("clicked button 0\n"); nuclear@0: } nuclear@0: if(imtk_button(1, "xyzzy", 100, 200)) { nuclear@0: printf("clicked button 1\n"); nuclear@0: } nuclear@0: nuclear@0: imtk_end(); nuclear@0: nuclear@0: glutSwapBuffers(); nuclear@0: } nuclear@0: nuclear@0: void reshape(int x, int y) nuclear@0: { nuclear@0: glViewport(0, 0, x, y); nuclear@0: imtk_inp_reshape(x, y); nuclear@0: nuclear@0: glMatrixMode(GL_PROJECTION); nuclear@0: glLoadIdentity(); nuclear@0: glTranslatef(-1, -1, 0); nuclear@0: glScalef(2.0 / x, 2.0 / y, 1.0); nuclear@0: } nuclear@0: nuclear@0: void keyb(unsigned char key, int x, int y) nuclear@0: { nuclear@0: switch(key) { nuclear@0: case 27: nuclear@0: exit(0); nuclear@0: nuclear@0: default: nuclear@0: break; nuclear@0: } nuclear@0: nuclear@0: imtk_inp_key(key, IMTK_DOWN); nuclear@0: } nuclear@0: nuclear@0: void keyb_up(unsigned char key, int x, int y) nuclear@0: { nuclear@0: imtk_inp_key(key, IMTK_UP); nuclear@0: } nuclear@0: nuclear@0: void skeyb(int key, int x, int y) nuclear@0: { nuclear@0: imtk_inp_key(key, IMTK_DOWN); nuclear@0: } nuclear@0: nuclear@0: void skeyb_up(int key, int x, int y) nuclear@0: { nuclear@0: imtk_inp_key(key, IMTK_UP); nuclear@0: } nuclear@0: nuclear@0: void mouse(int bn, int state, int x, int y) nuclear@0: { nuclear@0: imtk_inp_mouse(bn, state == GLUT_DOWN ? IMTK_DOWN : IMTK_UP); nuclear@0: } nuclear@0: nuclear@0: void motion(int x, int y) nuclear@0: { nuclear@0: imtk_inp_motion(x, y); nuclear@0: }