X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fpc%2Fmain_glut.c;h=a21cbcaf159d967794ebc01741744d2410a8c0b2;hb=3b852038f69e28291498c05f115f498c4dd47657;hp=ce0a68d9213998a7d94592c83d213e1205eef376;hpb=aa9f7c423c8c4111b3e1d0a7bbe73e376533ed80;p=andemo diff --git a/src/pc/main_glut.c b/src/pc/main_glut.c index ce0a68d..a21cbca 100644 --- a/src/pc/main_glut.c +++ b/src/pc/main_glut.c @@ -1,12 +1,15 @@ #include #include #include +#include "opengl.h" #include "miniglut.h" #include "demo.h" static void display(void); static void keypress(unsigned char key, int x, int y); +static void skeypress(int key, int x, int y); static void mouse(int bn, int st, int x, int y); +static int translate_key(int key); static long start_time; @@ -22,6 +25,7 @@ int main(int argc, char **argv) glutIdleFunc(glutPostRedisplay); glutReshapeFunc(demo_reshape); glutKeyboardFunc(keypress); + glutSpecialFunc(skeypress); glutMouseFunc(mouse); glutMotionFunc(demo_motion); @@ -35,9 +39,14 @@ int main(int argc, char **argv) return 0; } +void swap_buffers(void) +{ + glutSwapBuffers(); +} + static void display(void) { - demo_time_msec = glutGet(GLUT_ELAPSED_TIME) - start_time; + time_msec = glutGet(GLUT_ELAPSED_TIME) - start_time; demo_display(); @@ -52,6 +61,13 @@ static void keypress(unsigned char key, int x, int y) demo_keyboard(key, 1); } +static void skeypress(int key, int x, int y) +{ + if((key = translate_key(key))) { + demo_keyboard(key, 1); + } +} + static void mouse(int bn, int st, int x, int y) { int bidx = bn - GLUT_LEFT_BUTTON; @@ -59,3 +75,27 @@ static void mouse(int bn, int st, int x, int y) demo_mouse(bidx, press, x, y); } + +static int translate_key(int key) +{ + if(key >= GLUT_KEY_F1 && key <= GLUT_KEY_F12) { + return key - GLUT_KEY_F1 + KEY_F1; + } + switch(key) { + case GLUT_KEY_LEFT: + return KEY_LEFT; + case GLUT_KEY_RIGHT: + return KEY_RIGHT; + case GLUT_KEY_UP: + return KEY_UP; + case GLUT_KEY_DOWN: + return KEY_DOWN; + case GLUT_KEY_PAGE_UP: + return KEY_PGUP; + case GLUT_KEY_PAGE_DOWN: + return KEY_PGDOWN; + default: + break; + } + return 0; +}