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  }