예제 #1
0
파일: funky_read.c 프로젝트: gregghz/funky
static thing_th *open_sub_cons(FILE *src, text_buffer *tb, char opener) {
    switch(opener) {
        case '{': 
            return Cons(Atom("grid"), read_expressions(src, tb));
        case '[': 
            return Cons(Atom("list"), read_expressions(src, tb));
        default: 
            return read_expressions(src, tb);
    }
}
예제 #2
0
/* ARGSUSED1 */
static void Key ( unsigned char key, int x, int y )
{
  char title[512];
  
    switch ( key ) {
      case 27 :
      case 'q' :
      case 'Q' :
	exit (0) ;

      case 'r' :
      case 'R' :
	printf ("Rereading expression file\n");
        read_expressions();
	e = 0; /* reset the expression count variable */
	glutPostRedisplay();
	break;

      case 'a' :
	printf ("increment muscle: %s\n", face->muscle[m]->name ) ;

	/* set the muscle activation */
	face->muscle[m]->mstat += 0.1 ;
	
	activate_muscle ( face, 
			 face->muscle[m]->head, 
			 face->muscle[m]->tail, 
			 face->muscle[m]->fs,
			 face->muscle[m]->fe,
			 face->muscle[m]->zone,
			 0.1 ) ;
	glutPostRedisplay();
	break;

      case 'A' :
	printf ("decrement muscle: %s\n", face->muscle[m]->name ) ;
	face->muscle[m]->mstat -= 0.1 ;

	activate_muscle ( face, 
			 face->muscle[m]->head, 
			 face->muscle[m]->tail, 
			 face->muscle[m]->fs,
			 face->muscle[m]->fe,
			 face->muscle[m]->zone,
			 -0.1 ) ;
	glutPostRedisplay();
	break;

      case 'b' :
	DRAW_MODE++ ;

	if ( DRAW_MODE >= 3 ) DRAW_MODE = 0 ;
	printf ("draw mode: %d\n", DRAW_MODE ) ;
	glutPostRedisplay();
	break;

      case 'c' :
	face_reset ( face ) ;
	glutPostRedisplay();
	break;
	
      case 'n' :
	m++ ;
	if ( m >= face->nmuscles ) m = 0 ;
        sprintf(title, "geoface (%s)", face->muscle[m]->name);
        glutSetWindowTitle(title);
	break;

      case 'e' :
	if (face->expression) {
	face_reset  ( face ) ;
	expressions ( face, e ) ;

	e++ ;
	if ( e >= face->nexpressions ) e = 0 ;
	glutPostRedisplay();
	}
	break;

      case 'h' :
	
	print_mesg();
	
    }
}
예제 #3
0
파일: funky_read.c 프로젝트: gregghz/funky
static thing_th *read_subcons(thing_th *first, 
                              FILE *src, 
                              text_buffer *tb) {
    return Cons(first, read_expressions(src, tb));
}
예제 #4
0
파일: funky_read.c 프로젝트: gregghz/funky
static thing_th *read_construct(FILE *src,
                                text_buffer *tb,
                                const char *constructor) {
    return Cons(lookup_txt(constructor), read_expressions(src, tb));
}
예제 #5
0
파일: funky_read.c 프로젝트: gregghz/funky
static thing_th *read_then_expand_if_necessary(FILE *src, text_buffer *tb) {
    return reg_to_parent(expand_if_necessary(read_expressions(src, tb)));
}