示例#1
0
// ClearRGBA()
//  Clear the buffer to the given color.  The inputs default to 0
//  (black, solid alpha, closest palette match).
//    Mode           Effect
//   RGB            all pixels become r,g,b
//   RGBA           all pixels become r,g,b; Alpha becomes a
//   GREY           all pixels become the value of r,g,b
//   INDEXED        all pixels become the closest palette match to r,g,b
void ImageClass::ClearRGBA( IMG_BYTE r, IMG_BYTE g, IMG_BYTE b, IMG_BYTE a ) {
  unsigned long i;
  unsigned long num_bytes = (width * height * pixel_size);

  switch( type ) {
  case IMAGE_INDEXED:
    ClearIndexed( FindPaletteIndex( r, g, b ) );
    break;

  case IMAGE_RGB:
    ClearRGB( r, g, b );
    break;

  case IMAGE_RGBA:
    IMG_BYTE * pixel;
    for( i=0; i < num_bytes; i += pixel_size ) {
      pixel = &(image[i]);
      pixel[0] = r;
      pixel[1] = g;
      pixel[2] = b;
      pixel[3] = a;
    }
    break;

  case IMAGE_GREY:
    ClearGrey( GetValueOfRGB( r, g, b ) );
    break;
  } 
}
示例#2
0
// Clear()
//  Clear the buffer to the given color.  The inputs default to 0
//  (black, solid alpha, closest palette match).
//    Mode           Effect
//   RGB            all pixels become r,g,b
//   RGBA           all pixels become r,g,b; Alpha becomes a
//   GREY           all pixels become the value of r,g,b
//   INDEXED        all pixels become the closest palette match to r,g,b
void ImageClass::Clear( IMG_BYTE r, IMG_BYTE g, IMG_BYTE b, IMG_BYTE a ) {
  switch( type ) {
  case IMAGE_INDEXED:
    ClearIndexed( FindPaletteIndex( r, g, b ) );
    break;
  case IMAGE_RGB:
    ClearRGB( r, g, b );
    break;
  case IMAGE_RGBA:
    ClearRGBA( r, g, b, a );
    break;
  case IMAGE_GREY:
    ClearGrey( ImageClass::GetValueOfRGB( r, g, b ) );
    break;
  }
}
示例#3
0
// ClearGrey()
//  Clears the alpha to the given value.  Defaults to 0
//  (black, or the closest palette index)
//    Mode           Effect
//   RGB            clears buffer to value
//   RGBA           clears buffer to value; Alpha is untouched
//   GREY           clears buffer to value
//   INDEXED        clears buffer to closest match to value
void ImageClass::ClearGrey( IMG_BYTE value ) {
  unsigned long i;
  unsigned long num_bytes = (width * height * pixel_size);

  switch( type ) {
  case IMAGE_INDEXED:
    ClearIndexed( FindPaletteIndex( value, value, value ) );
    break;

  case IMAGE_RGB:
  case IMAGE_RGBA:
    ClearRGB( value, value, value );
    break;

  case IMAGE_GREY:
    for( i=0; i < num_bytes; i += pixel_size )
      image[i] = value;
    break;
  } 
}
示例#4
0
// Constructor
//  Simple constructor.  Nothing is initialized until the Init()
//  function is called later on.
ImageClass::ImageClass( int _w, int _h, int _type, unsigned int _num_registers )
  : width(_w), height(_h), type(_type), error(IMAGE_NO_ERROR),
    pixel_size(0), zero_zero(IMAGE_TOPLEFT), num_registers(0),
    palette(NULL), image(NULL) {

  // Setup the image's stuff
  switch( type ) {
  case IMAGE_INDEXED:               // Palettized Image
    num_registers = _num_registers;
    if( num_registers < 1 ) {
      error = IMAGE_NOT_ENOUGH_REGISTERS;
      return;
    }

    palette = new IMG_BYTE[ num_registers  * sizeof(IMG_BYTE) * 3 ];
    pixel_size = 1;
    break;

  case IMAGE_GREY:                  // 8-bit Greyscale Image
    pixel_size = 1;
    break;

  case IMAGE_RGB:                   // 24-bit RGB Color Image
    pixel_size = 3;
    break;

  case IMAGE_RGBA:                  // 24-bit RGB Color Image with 8-bit Alpha Channel
    pixel_size = 4;
    break;

  default:                          // Invalid Image Type
    error = IMAGE_INVALID_TYPE;
    return;
  }

  image = new IMG_BYTE[ width * height * sizeof(IMG_BYTE) * pixel_size ];

  if( image == NULL ) {
    error = IMAGE_OUT_OF_RAM;
    return;
  }

  // Clear the image out to black (or index 0)
  switch( type ) {
  case IMAGE_INDEXED:
    ClearIndexed( 0 );
    break;

  case IMAGE_GREY:
    ClearGrey( 0 );
    break;

  case IMAGE_RGB:
    ClearRGB( 0, 0, 0 );
    break;

  case IMAGE_RGBA:
    ClearRGBA( 0, 0, 0, 0 );
    break;
  }

}
示例#5
0
void KeyHandle(void)
{
   switch(NEC[2])	     
   {
		case 0x0c: 
			Cube_MODE = 1;																//dft
			ClearALL();																	
			TIM_Cmd(TIM3,DISABLE);                                          		
			TIM_Cmd(TIM3,DISABLE);                                          	
			TIM_Cmd(TIM4,ENABLE);                                          		
			TIM_Cmd(TIM4,ENABLE);                                          				
			break;																
		case 0x18:  
			Cube_MODE = 2;																//Æôanimation
			SpeedSum = 0;
			NumCount = 0;
			pictrue_order = 0;											
			ClearALL();														
			TIM_Cmd(TIM3,ENABLE);                                          		
			TIM_Cmd(TIM3,ENABLE);                                          	
			TIM_Cmd(TIM4,DISABLE);                                          	
			TIM_Cmd(TIM4,DISABLE);                                          	
			break;																	
		case 0x5e:  
			Cube_MODE = 3;															
			TIM_Cmd(TIM3,DISABLE);                                          	
			TIM_Cmd(TIM3,DISABLE);                                          	
			TIM_Cmd(TIM4,DISABLE);                                          	
			TIM_Cmd(TIM4,DISABLE);                                          	
			ClearALL();																
			ClearRGB(0,1);															
			light_red = 1;
			light_green = 0;
			light_blue = 0;														
			break;															
		case 0x08:  
			if(3 == Cube_MODE)
			{
				if(light_red < 15)
					light_red++;
				ClearRGB(0,light_red);										
			}
			break;													
		case 0x1c:  
			if(3 == Cube_MODE)
			{
				if(light_green < 15)
					light_green++;
				ClearRGB(1,light_green);											
			}
			else if(4 == Cube_MODE)
			{
				Add_X = 0;
				Add_Y = 0;
				Add_Z = -1;            													
			}
			break;																
		case 0x5a:  
			if(3 == Cube_MODE)
			{
				if(light_blue < 15)
					light_blue++;
				ClearRGB(2,light_blue);									
			}
			break;																
		case 0x42:  
			if(3 == Cube_MODE)
			{
				if(light_red > 0)
					light_red--;
				ClearRGB(0,light_red);										
			}
			break;																	
		case 0x52:  
			if(3 == Cube_MODE)
			{
				if(light_green > 0)
					light_green--;
				ClearRGB(1,light_green);										
			}
			else if(4 == Cube_MODE)
			{
				Add_X = 0;
				Add_Y = 0;
				Add_Z = 1;            													
			}
			break;																
		case 0x4a:  
			if(3 == Cube_MODE)
			{
				if(light_blue > 0)
					light_blue--;
				ClearRGB(2,light_blue);											
			}
			break;																
		case 0x16:  
			Cube_MODE = 0;												
			W25QxxAddress = 0;													
			NowSection = 0;															
			ClearALL();															
			TIM_Cmd(TIM3,ENABLE);                                          		
			TIM_Cmd(TIM3,ENABLE);                                          			
			TIM_Cmd(TIM4,DISABLE);                                          		
			TIM_Cmd(TIM4,DISABLE);                                          			
			break;																	
		case 0x19:  
			if(4 == Cube_MODE)
			{
				Add_X = 0;
				Add_Y = -1;
				Add_Z = 0;            													
			}
			break;																	
		case 0x0d:  
			Cube_MODE = 4;															
			SpeedSum = 0;
			NumCount = 0;
			ClearALL();																
			TIM_Cmd(TIM3,ENABLE);                                          			
			TIM_Cmd(TIM3,ENABLE);                                          		
			TIM_Cmd(TIM4,DISABLE);                                          		
			TIM_Cmd(TIM4,DISABLE);                                          			
			Snake_Start();															
			Snake_Above();																
			Snake_Show(10,1,0,0,10,0);												
			break;																		
		case 0x07:  
			if(4 == Cube_MODE)
			{
				Add_X = -1;
				Add_Y = 0;
				Add_Z = 0;            										
			}
			break;																	
		case 0x15:  
			break;																
		case 0x09:
			if(4 == Cube_MODE)
			{
				Add_X = 1;
				Add_Y = 0;
				Add_Z = 0;            										
			}
			break;																	
		case 0x44:  
			break;																	
		case 0x40:  
			if(4 == Cube_MODE)
			{
				Add_X = 0;
				Add_Y = 1;
				Add_Z = 0;            												
			}
			break;																
		case 0x43:  
			break;																	
		case 0x45:  
			break;																	
		case 0x47:  
			break;																	
		default:
			break;
	}
}