Ejemplo n.º 1
0
ENTRYPOINT void 
init_pinion (ModeInfo *mi)
{
  pinion_configuration *pp;
  int wire = MI_IS_WIREFRAME(mi);

  if (!pps) {
    pps = (pinion_configuration *)
      calloc (MI_NUM_SCREENS(mi), sizeof (pinion_configuration));
    if (!pps) {
      fprintf(stderr, "%s: out of memory\n", progname);
      exit(1);
    }

    pp = &pps[MI_SCREEN(mi)];
  }

  pp = &pps[MI_SCREEN(mi)];

  pp->glx_context = init_GL(mi);

  load_fonts (mi);
  reshape_pinion (mi, MI_WIDTH(mi), MI_HEIGHT(mi));

  pp->title_list  = glGenLists (1);

  pp->ngears = 0;
  pp->gears_size = 0;
  pp->gears = 0;

  pp->plane_displacement = gear_size * 0.1;

  if (!wire)
    {
      GLfloat pos[4] = {-3.0, 1.0, 1.0, 0.0};
      GLfloat amb[4] = { 0.0, 0.0, 0.0, 1.0};
      GLfloat dif[4] = { 1.0, 1.0, 1.0, 1.0};
      GLfloat spc[4] = { 1.0, 1.0, 1.0, 1.0};

      glEnable(GL_LIGHTING);
      glEnable(GL_LIGHT0);
      glEnable(GL_DEPTH_TEST);
      glEnable(GL_CULL_FACE);

      glLightfv(GL_LIGHT0, GL_POSITION, pos);
      glLightfv(GL_LIGHT0, GL_AMBIENT,  amb);
      glLightfv(GL_LIGHT0, GL_DIFFUSE,  dif);
      glLightfv(GL_LIGHT0, GL_SPECULAR, spc);
    }

  pp->trackball = gltrackball_init ();

  ffwd (mi);
}
Ejemplo n.º 2
0
int main(){
  ex_mem_addr_t i = 0;
  char result;
  stack_t data;
  stack_t flow;

  stack_init(&data);
  stack_init(&flow);

  do{
    //get the next word, return the index
    i = get_word(get_ch, buffer, WORD_LENGTH, i);

    //if statement handling
    if( strncmp(buffer, "if{", WORD_LENGTH) == 0 ){
      //push the conditional to the flow stack
      stack_push(&flow, stack_pop(&data));
      //if the data at the top of the stack is false
      if( !stack_peek(&flow) ){
        //fast-forward to the matching else or curly brace
        i = ffwd(i);
      }
    //else statement handling
    } else if( strncmp(buffer, "}else{", WORD_LENGTH) == 0 ){
      //if the data at the top of the stack is true
      if( stack_peek(&flow) ){
        //fast forward to the matching curly brace
        i = ffwd(i);
      }
    //end curly brace handling
    } else if( strncmp(buffer, "}", WORD_LENGTH) == 0 ){
      //burn the top element of the flow stack
      stack_pop(&flow);
    } else if( strncmp(buffer, "do{", WORD_LENGTH) == 0 ){
      stack_push(&flow, i);
    } else if( strncmp(buffer, "}while", WORD_LENGTH) == 0 ){
      //if the top of the stack is true, loop and don't pop
      if( stack_pop(&data) ){
        i = stack_peek(&flow);
      //otherwise, pop and don't loop
      } else {
        stack_pop(&flow);
      }
    } else {
      //printf("Executing \"%s\"... ", buffer);
      result = exec(buffer, &data);
      //printf("\n");
    }
  } while( (i != 0) &&
           (data.error == STACK_GOOD) &&
           (flow.error == STACK_GOOD) &&
           (result == EXEC_GOOD) );

  if( data.error == STACK_OVERFLOW ){
    printf("STACK OVERFLOW AT %d\n", i);
  }
  if( data.error == STACK_UNDERFLOW ){
    printf("STACK UNDERFLOW AT %d\n", i);
  }
  if( flow.error == STACK_OVERFLOW ){
    printf("FLOW STACK OVERFLOW AT %d\n", i);
  }
  if( flow.error == STACK_UNDERFLOW ){
    printf("FLOW STACK UNDERFLOW AT %d\n", i);
  }
  if( result == EXEC_WORD_NOT_FOUND ){
    printf("UNKNOWN WORD \"%s\" AT %d\n", buffer, i);
  }

  printf("\nHALTED");
  printf(" flow: ");
  stack_print(&flow);
  printf(" data: ");
  stack_print(&data);
  printf("\n");

  return 0;
}
Ejemplo n.º 3
0
int parse_msg(PControlMsg msg, struct AUDIO_HEADER *header, int cnt)
{
  switch(msg->type)   {
  case MSG_BUFFER:
/*     fprintf(stderr, "MSG_BUFFER %d\n", msg->data);     */
    break;
  case MSG_BUFAHEAD:
/*     fprintf(stderr, "MSG_PLAYAHEAD %d\n", msg->data); */
    break;
  case MSG_SEEK:
    break;
  case MSG_RELEASE:
    break;
  case MSG_PRIORITY:
    break;
  case MSG_QUERY:
/*     fprintf(stderr,"MSG_QUERY\n"); */
    {
      TControlMsg rmsg;
      rmsg.type = MSG_RESPONSE;
      switch(msg->data)
	{
	case QUERY_PLAYING:
	  rmsg.data = GUI_PLAYING; /* No need to synch. */
/* 	  fprintf(stderr, "Reply to query playing\n"); */
	  send_msg(&rmsg, TRUE);
	  break;
	case QUERY_PAUSED:
/* 	  fprintf(stderr, "Reply to QUERY_PAUSED\n"); */
	  rmsg.data = GUI_PAUSE;
	  send_msg(&rmsg, TRUE);
	  break;
	}
    }
  break;
  case MSG_CTRL:
    switch(msg->data)
      {
      case PLAY_PAUSE:
/* 	fprintf(stderr, "MSG_CTRL - PLAY_PAUSE\n"); */
	if(GUI_PAUSE)
	  GUI_PAUSE= FALSE;
	else {
	  GUI_PAUSE=TRUE ;
	  /*
          if (GUI_PLAYING) audioBufferFlush();
	  */
	}
	break;
      case PLAY_STOP:
/* 	fprintf(stderr, "MSG_CTRL - PLAY_STOP\n"); */
	GUI_STOP = TRUE;
        if (GUI_PLAYING) audioBufferFlush();
	break;
      case FORWARD_BEGIN:
/* 	fprintf(stderr, "FORWARD_BEGIN\n"); */
 	/*	forward(8); */
	{
	  TControlMsg rmsg;
	  
	  rmsg.type = MSG_RESPONSE;
	  rmsg.data = FORWARD_BEGIN;
	  
	  send_msg(&rmsg, TRUE);
	}
	break;
      case FORWARD_STEP:
	{
/*	  fprintf(stderr, "FORWARD_STEP\n"); */
	  if(ffwd(header, 10)==10) cnt+=10;
	  {
	    TControlMsg rmsg;
	    
	    rmsg.type = MSG_RESPONSE;
	    rmsg.data = FORWARD_STEP;
	    
	    send_msg(&rmsg, TRUE);
	  }

          if (GUI_PLAYING) audioBufferFlush();
	}
	break;
      case FORWARD_END:
/*  	fprintf(stderr, "FORWARD_END\n"); */
	break;
      case REWIND_BEGIN:
/* 	fprintf(stderr, "REWIND_BEGIN\n"); */
	{
	  TControlMsg rmsg;
	  
	  rmsg.type = MSG_RESPONSE;
	  rmsg.data = REWIND_BEGIN;
	  
	  send_msg(&rmsg, TRUE);
	}
	break;
      case REWIND_STEP:
	{
	  int result;
	  /*	  fprintf(stderr, "REWIND_STEP\n"); */
	  if (cnt>10){
	    if ((result = rew(header, 10))!= -1) {
	      cnt-=result;
	    }
	  }
	  {
	    TControlMsg rmsg;
	    
	    rmsg.type = MSG_RESPONSE;
	    rmsg.data = REWIND_STEP;
	    
	    send_msg(&rmsg, TRUE);
	  }

          if (GUI_PLAYING) audioBufferFlush();
	}
	break;
      case REWIND_END:
/* 	fprintf(stderr, "REWIND_END\n"); */
	break;
      }
     break;
  case MSG_QUIT:
    fprintf(stderr, "MSG_QUIT\n");
    if (GUI_PLAYING) audioBufferFlush();
    break;
  case MSG_SONG:
#if 0
      {
         int fd;

	 struct msghdr hdr;
         struct m_cmsghdr fdhdr;
         struct iovec iov[1];
         char data[2];

         iov[0].iov_base = data;
         iov[0].iov_len = 2;

/*          fprintf(stderr, "MSG_SONG\n"); */

         hdr.msg_iov = iov;
         hdr.msg_iovlen = 1; 
         hdr.msg_name = NULL;
         hdr.msg_namelen = 0;

         fdhdr.cmsg_len = sizeof(struct m_cmsghdr);
         fdhdr.cmsg_level = SOL_SOCKET;
         fdhdr.cmsg_type = SCM_RIGHTS;
         fdhdr.fd = 0;

         hdr.msg_control = &fdhdr;
         hdr.msg_controllen = sizeof(struct m_cmsghdr);

         if(recvmsg(receive_fd, &hdr, 0) < 0)
	   perror("recvmsg");
	 
         fd = fdhdr.fd;
	 
/*          fprintf(stderr, "FILEFD READ=%d\n", fd); */
	 
	 GUI_FD_TO_PLAY = fd;
	if (GUI_PLAYING) audioBufferFlush();
      }
#endif
      break;
  }
  return cnt;
}