dsys2
diff test.c @ 7:3258d163cfbc
hurray it seems like working for the most part
author | John Tsiombikas <nuclear@siggraph.org> |
---|---|
date | Fri, 02 Sep 2011 08:14:40 +0300 |
parents | 1705e550bd91 |
children | 4ad7a01c4ff5 |
line diff
1.1 --- a/test.c Fri Sep 02 04:49:18 2011 +0300 1.2 +++ b/test.c Fri Sep 02 08:14:40 2011 +0300 1.3 @@ -12,9 +12,11 @@ 1.4 #include "dsys2.h" 1.5 1.6 void disp(void); 1.7 +void draw_progress(float p); 1.8 void draw_teapot(float sec); 1.9 void reshape(int x, int y); 1.10 void keyb(unsigned char key, int x, int y); 1.11 +void skeyb(int key, int x, int y); 1.12 unsigned int get_ticks(void); 1.13 1.14 struct dsys_demo *demo; 1.15 @@ -26,11 +28,12 @@ 1.16 glutInit(&argc, argv); 1.17 glutInitWindowSize(800, 600); 1.18 glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); 1.19 - glutCreateWindow("foo"); 1.20 + glutCreateWindow("dsys test"); 1.21 1.22 glutDisplayFunc(disp); 1.23 glutReshapeFunc(reshape); 1.24 glutKeyboardFunc(keyb); 1.25 + glutSpecialFunc(skeyb); 1.26 glutIdleFunc(glutPostRedisplay); 1.27 1.28 glEnable(GL_LIGHTING); 1.29 @@ -40,7 +43,7 @@ 1.30 glEnable(GL_CULL_FACE); 1.31 glEnable(GL_DEPTH_TEST); 1.32 1.33 - if(!(demo = dsys_open("/dev/null"))) { 1.34 + if(!(demo = dsys_open("testscript.dsys"))) { 1.35 return 1; 1.36 } 1.37 1.38 @@ -65,9 +68,51 @@ 1.39 1.40 draw_teapot(sec); 1.41 1.42 + draw_progress(dsys_progress(demo)); 1.43 + 1.44 glutSwapBuffers(); 1.45 } 1.46 1.47 +void draw_progress(float p) 1.48 +{ 1.49 + glMatrixMode(GL_MODELVIEW); 1.50 + glPushMatrix(); 1.51 + glLoadIdentity(); 1.52 + glMatrixMode(GL_PROJECTION); 1.53 + glPushMatrix(); 1.54 + glLoadIdentity(); 1.55 + 1.56 + glPushAttrib(GL_ENABLE_BIT); 1.57 + glDisable(GL_LIGHTING); 1.58 + glDisable(GL_DEPTH_TEST); 1.59 + 1.60 + glBegin(GL_QUADS); 1.61 + glColor3f(1, 1, 1); 1.62 + glVertex2f(-0.5, 0.9); 1.63 + glVertex2f(0.5, 0.9); 1.64 + glVertex2f(0.5, 0.98); 1.65 + glVertex2f(-0.5, 0.98); 1.66 + 1.67 + glColor3f(0, 0, 0); 1.68 + glVertex2f(-0.49, 0.91); 1.69 + glVertex2f(0.49, 0.91); 1.70 + glVertex2f(0.49, 0.97); 1.71 + glVertex2f(-0.49, 0.97); 1.72 + 1.73 + glColor3f(1, 0, 0); 1.74 + glVertex2f(-0.48, 0.92); 1.75 + glVertex2f(-0.48 + 2.0 * 0.48 * p, 0.92); 1.76 + glVertex2f(-0.48 + 2.0 * 0.48 * p, 0.96); 1.77 + glVertex2f(-0.48, 0.96); 1.78 + glEnd(); 1.79 + 1.80 + glPopAttrib(); 1.81 + 1.82 + glPopMatrix(); 1.83 + glMatrixMode(GL_MODELVIEW); 1.84 + glPopMatrix(); 1.85 +} 1.86 + 1.87 void draw_teapot(float sec) 1.88 { 1.89 float dcol[] = {0.2, 0.4, 0.8, 1.0}; 1.90 @@ -111,6 +156,43 @@ 1.91 break; 1.92 1.93 default: 1.94 + if(key >= '1' && key <= '9') { 1.95 + float n = (float)(key - '0') / 10.0; 1.96 + printf("seek to: %f percent\n", n * 100.0); 1.97 + dsys_seek_norm(demo, n); 1.98 + } 1.99 + break; 1.100 + } 1.101 +} 1.102 + 1.103 +void skeyb(int key, int x, int y) 1.104 +{ 1.105 + switch(key) { 1.106 + case GLUT_KEY_LEFT: 1.107 + dsys_seek(demo, dsys_time(demo) - dsys_sec_to_dtime(5)); 1.108 + break; 1.109 + 1.110 + case GLUT_KEY_RIGHT: 1.111 + dsys_seek(demo, dsys_time(demo) + dsys_sec_to_dtime(5)); 1.112 + break; 1.113 + 1.114 + case GLUT_KEY_UP: 1.115 + dsys_seek(demo, dsys_time(demo) + dsys_sec_to_dtime(30)); 1.116 + break; 1.117 + 1.118 + case GLUT_KEY_DOWN: 1.119 + dsys_seek(demo, dsys_time(demo) - dsys_sec_to_dtime(30)); 1.120 + break; 1.121 + 1.122 + case GLUT_KEY_PAGE_UP: 1.123 + dsys_seek(demo, dsys_time(demo) + dsys_sec_to_dtime(5 * 60)); 1.124 + break; 1.125 + 1.126 + case GLUT_KEY_PAGE_DOWN: 1.127 + dsys_seek(demo, dsys_time(demo) - dsys_sec_to_dtime(5 * 60)); 1.128 + break; 1.129 + 1.130 + default: 1.131 break; 1.132 } 1.133 }