Exemplo n.º 1
0
static void *thread_func(ALLEGRO_THREAD *thr, void *arg)
{
   ThreadInfo *info = (ThreadInfo *) arg;
   Viewport viewport;
   unsigned char palette[256][3];
   int y, w, h;

   y = 0;
   w = al_get_bitmap_width(info->bitmap);
   h = al_get_bitmap_height(info->bitmap);

   viewport.centre_x = info->target_x;
   viewport.centre_y = info->target_y;
   viewport.x_extent = 3.0;
   viewport.y_extent = 3.0;
   viewport.zoom = 1.0;
   info->target_x = 0;
   info->target_y = 0;

   while (!al_get_thread_should_stop(thr)) {
      al_lock_mutex(info->mutex);

      while (info->is_paused) {
         al_wait_cond(info->cond, info->mutex);

         /* We might be awoken because the program is terminating. */
         if (al_get_thread_should_stop(thr)) {
            break;
         }
      }

      if (!info->is_paused) {
         if (y == 0) {
            random_palette(palette, &info->random_seed);
         }

         draw_mandel_line(info->bitmap, &viewport, palette, y);

         y++;
         if (y >= h) {
            double z = viewport.zoom;
            y = 0;
            viewport.centre_x += z * viewport.x_extent * info->target_x;
            viewport.centre_y += z * viewport.y_extent * info->target_y;
            info->target_x = 0;
            info->target_y = 0;
            viewport.zoom *= 0.99;
         }
      }

      al_unlock_mutex(info->mutex);
      al_rest(0);
   }

   return NULL;
}
Exemplo n.º 2
0
Arquivo: jess.c Projeto: kunaldeo/JESS
void init_video_8(void)
{


  /***************** DISPLAY INITIALISATION ******************/
  if (SDL_Init (SDL_INIT_VIDEO) < 0)
    {
      fprintf (stderr, "SDL Init failed : %s\n", SDL_GetError ());
      exit (1);
    }
  printf("SDL init Ok\n");

  screen = SDL_SetVideoMode (resx, resy, 8, SCREENFLAG);
  if (screen == NULL)
    {
      fprintf (stderr, "Graphic mode is not available: %s\n",
	       SDL_GetError ());
      exit (1);
    }

 

  printf("SDL Setvideo mode Ok\n");

  SDL_ShowCursor(0);
  SDL_EventState (SDL_ACTIVEEVENT, SDL_IGNORE);
  SDL_EventState (SDL_MOUSEMOTION, SDL_IGNORE);

  printf("SDL Event State Ok\n");
  /***************************************************************/

  /******************* COLOR COMPUTATION  ********************/

  random_palette();

  printf("SDL set color Ok\n");

  /****************** INDEX *************************************/
  pitch = screen->pitch;
  printf ("Pitch : %i\n", pitch);
  pixel = ((unsigned char *) screen->pixels);
  bpp = screen->format->BytesPerPixel;
  printf ("Bytes per pixels: %i\n", bpp);
}
Exemplo n.º 3
0
void on_reprise(void)
{
  unsigned int j;
  unsigned char *pix = pixel;

  if (lys.reprise == OUI ) 
    {
   
	  	    
      if (conteur.last_flash > 5 * conteur.fps) /* si y  pas eu de flash depuis longtemps: flash */
	{
	   if(conteur.draw_mode == 5)
	stars_manage(pixel, NEW_SESSION, conteur.angle2 / 400, 0,
		   conteur.angle2 / 60, 200, 130);	

	  /* FLASH */
#ifdef DEBUG
	  printf("Flash\n");
#endif
	  pix = pixel;
	  for (j = 0; j < resy * pitch; j++)
	      *(pix++) = 250;  
      
	  if (conteur.freeze_mode == NON) /* si c pas freeze_mode on change tout */
	    {      
	      conteur.burn_mode = rand() % 4;      
	      
	      conteur.draw_mode = rand () % 7;    
	   
	      conteur.blur_mode = rand () % 5 ; 
	      if(conteur.draw_mode==2)
		conteur.blur_mode=0;
	  
	      random_palette();  
	    }
	  conteur.last_flash = 0;
	}


      else /* il y a eu un flash y a pas longtemps, donc on fait juste des etoiles */
	{



	  /* on change de mode blur */
	  if ((conteur.freeze_mode == 0) && (conteur.mix_reprise >5) && (conteur.draw_mode!=2) ) /* si c pas freeze_mode on change tout */
	    {
	      conteur.blur_mode = rand () % 5 ; 
	    }
	}

#ifdef DEBUG
      if (conteur.term_display == OUI)
	printf("Blur m %i | Draw m %i | Burn m %i\n",conteur.blur_mode, conteur.draw_mode, conteur.burn_mode);
#endif
      
      /*   conteur.mix_reprise = 0; */
    }
  
  /*  if (conteur.mix_reprise < 2 * conteur.fps) */
  /*       conteur.mix_reprise++; */
}
Exemplo n.º 4
0
Arquivo: misc.c Projeto: kunaldeo/JESS
void keyboard(void)
{
  SDL_Event event;

  while(SDL_PollEvent(&event)); /* on prend le dernier event */
    
  switch(event.type)
    {  
    case SDL_KEYDOWN:         
      switch(event.key.keysym.sym) 
	{

/* 	case SDLK_q: */
/* 	  disable_plugin(get_vplugin_info()); */
/* 	  break; */
/* 	case SDLK_k: */
/* 	  printf("Killed (use XMMS plug-in option to quit instead)\n"); */
/* 	  exit (1); */
/* 	  break; */
/* 	case SDLK_RETURN: */
/* 	  printf("Fading palette mode toggled\n"); */
/* 	  conteur.fade_on_off=1-conteur.fade_on_off; */
/* 	  for(i=0;i<256;i++){ */
/* 	    colors_used[i].r=i; */
/* 	    colors_used[i].g=(gint) ( (float) (i*i*i)/(256*256) ); */
/* 	    colors_used[i].b=0; */
/* 	  } */
/* 	  SDL_SetColors(screen, colors_used, 0, 256);       */
/* 	  break; */
	case SDLK_ESCAPE:
	case SDLK_SPACE:
	  printf("Full Screen mode toggled\n");
	  conteur.fullscreen = 1-conteur.fullscreen ;
	  SDL_WM_ToggleFullScreen(screen);     
	  break;
	case SDLK_c:
	  printf("Resolution key 320*180\n");
	  quit_renderer = 1;
	  resolution_change = 1;
	  resx = 320;
	  resy = 180;
	  break;
	case SDLK_v:
	  printf("Resolution key 512*200\n");
	  quit_renderer = 1;
	  resolution_change = 1;
	  resx = 512;
	  resy = 200;
	  break;
	case SDLK_b:
	  printf("Resolution key 640*480\n");
	  quit_renderer = 1;
	  resolution_change = 1;
	  resx = 640;
	  resy = 480;
	  break; 
	case SDLK_n:
	  printf("Resolution key 800*400\n");
	  quit_renderer = 1;
	  resolution_change = 1;
	  resx = 800;
	  resy = 400;
	  break; 
        case SDLK_COMMA:
	  printf("Resolution key 1024x768\n");
	  quit_renderer = 1;
	  resolution_change = 1;
	  resx = 1024;
	  resy = 768;
	  break;
	case SDLK_o:
	  printf("Toggle 32/8bits mode\n");
	  quit_renderer = 1;
	  resolution_change = 1;
	  if (video == 8)
	    video = 32;
	  else
	    video = 8;
	  break; 
	  
	      
	case SDLK_d: 
	  printf("Freeze Image\n"); 
	  conteur.freeze = 1-conteur.freeze; 
	  break; 


	case SDLK_f:
	  printf("Freeze mode\n");
	  conteur.freeze_mode = 1-conteur.freeze_mode;
	  break;
	case SDLK_p:
	  printf("Random palette\n");
	  random_palette();
	  break;
	case SDLK_e:
	  printf("Enable/disable new colors\n");
	  conteur.psy = 1-conteur.psy;
	  break;
	case SDLK_a:
	  printf("Enable/disable Energie analyser\n");
	  conteur.analyser = 1-conteur.analyser;
	  break;

	  /************ Blur mode *************/
	case SDLK_F1:
	  printf("Blur mode 0\n");
	  conteur.blur_mode = 0;
	  break;
	case SDLK_F2:
	  printf("Blur mode 1\n");
	  conteur.blur_mode = 1;
	  break;
	case SDLK_F3:
	  printf("Blur mode 2\n");
	  conteur.blur_mode = 2;
	  break;
	case SDLK_F4:
	  printf("Blur mode 3\n");
	  conteur.blur_mode = 3;
	  break;
	case SDLK_F5:
	  printf("Blur mode 4\n");
	  conteur.blur_mode = 4;
	  break;

	  /************ Draw mode *************/
	case SDLK_F6: /* lignes */
	  printf("Draw mode 5\n");
	  conteur.draw_mode = 6;
	  break;
	case SDLK_F7: /* lignes */
	  printf("Draw mode 5\n");
	  conteur.draw_mode = 5;
	  break;
	case SDLK_F8: /* lignes */
	  printf("Draw mode 4\n");
	  conteur.draw_mode = 4;
	  break;
	case SDLK_F9:
	  printf("Draw mode 0\n");
	  conteur.draw_mode = 0;
	  break;
	case SDLK_F10:
	  printf("Draw mode 1\n");
	  conteur.draw_mode = 1;
	  break;
	case SDLK_F11:
	  printf("Draw mode 2\n");
	  conteur.draw_mode = 2;
	  break;
	case SDLK_F12:
	  printf("Draw mode 3\n");
	  conteur.draw_mode = 3;
	  break;

	  /************* Key binding ************/
	case SDLK_UP:
	  printf("Prev\n");
	  xmms_remote_playlist_prev(0);
	  break;
	case SDLK_DOWN:
	  printf("Next\n");
	  xmms_remote_playlist_next(0);
	  break;
	case SDLK_LEFT:
	  printf("Jump to time -\n");
	  xmms_remote_jump_to_time(0, xmms_remote_get_output_time(0) - 10000);
	  break;
	case SDLK_RIGHT:
	  printf("Jump to time +\n");
	  xmms_remote_jump_to_time(0, xmms_remote_get_output_time(0) + 10000);
	  break;
	  
	case SDLK_u:
	  printf("Color mode : %i\n",conteur.triplet);
	  break;

	//default:
	}   
      break;
   // default:
    }

}