Esempio n. 1
0
GDI_RESULT gdi_image_sequence_draw_handler(U32 flag,U32 frame_pos,S32 x,S32 y,S32 w,S32 h,U8* data_ptr,U32 img_size)
{
	U8 img_type = GDI_IMAGE_TYPE_INVALID;
	U8* header;
	int frame_sum;
	int index = frame_pos;
	int offset;
	int size;
	
    data_ptr-=8;
	header = data_ptr;
    frame_sum = header[1];
	if(index <0 ||	index >= frame_sum)
		return GDI_FAILED;
	
	header +=8 + index*12;
	offset = (header[3]<<24) | (header[2]<<16) |(header[1]<<8)|(header[0]);
	header+=4;
	size   = (header[3]<<24) | (header[2]<<16) |(header[1]<<8)|(header[0]);
	header+=4;
	gdi_anim_set_delay((header[3]<<24) | (header[2]<<16) |(header[1]<<8)|(header[0]));
	
	offset += 12 * frame_sum;

	switch(data_ptr[0])
	{
	case GDI_IMAGE_TYPE_BMP_SEQUENCE:
		img_type = GDI_IMAGE_TYPE_BMP;
		break;
	case GDI_IMAGE_TYPE_JPG_SEQUENCE:
		img_type = GDI_IMAGE_TYPE_JPG;
		break;
	case GDI_IMAGE_TYPE_PNG_SEQUENCE:
		img_type = GDI_IMAGE_TYPE_PNG;
		break;
	case GDI_IMAGE_TYPE_DEVICE_BITMAP_SEQUENCE:
		img_type = GDI_IMAGE_TYPE_DEVICE_BITMAP;
		break;
    case GDI_IMAGE_TYPE_ABM_SEQUENCE:        
        img_type = GDI_IMAGE_TYPE_ABM;
        break;
	}

	return gdi_image_codec_draw(
				GDI_IMAGE_SRC_FROM_RESOURCE_WITHOUT_HEADER,
				(U8*)data_ptr+offset,img_type,size,
				x,y,w,h,flag,frame_pos);
}
Esempio n. 2
0
GDI_RESULT gdi_image_sequence_get_dimension_handler(U32 flag,U8* data_ptr,U32 img_size,S32 *width,S32 *height)
{
	U8 img_type=GDI_IMAGE_TYPE_INVALID;
	U8* header;
	int frame_sum;
	int index = 0;
	int offset;
	int size;
	
    data_ptr-=8;
	header = data_ptr;
    frame_sum = header[1];
	if(index <0 ||	index >= frame_sum)
		return GDI_FAILED;
	
	header +=8 + index*12;
	offset = (header[3]<<24) | (header[2]<<16) |(header[1]<<8)|(header[0]);
	header+=4;
	size   = (header[3]<<24) | (header[2]<<16) |(header[1]<<8)|(header[0]);
	header+=4;
	gdi_anim_set_delay((header[3]<<24) | (header[2]<<16) |(header[1]<<8)|(header[0]));
	
	offset += 12 * frame_sum;

	switch(data_ptr[0])
	{
	case GDI_IMAGE_TYPE_BMP_SEQUENCE:
		img_type = GDI_IMAGE_TYPE_BMP;
		break;
	case GDI_IMAGE_TYPE_JPG_SEQUENCE:
		img_type = GDI_IMAGE_TYPE_JPG;
		break;
	case GDI_IMAGE_TYPE_PNG_SEQUENCE:
		img_type = GDI_IMAGE_TYPE_PNG;
		break;
	case GDI_IMAGE_TYPE_DEVICE_BITMAP_SEQUENCE:
		img_type = GDI_IMAGE_TYPE_DEVICE_BITMAP;
		break;
	}

	return gdi_image_codec_get_dimension(
				GDI_IMAGE_SRC_FROM_MEMORY,
				(U8*)data_ptr+offset,img_type,size,
				width,height,flag);
}