Exemplo n.º 1
0
ImageFormat_PNG::ImageFormat_PNG(const Asset& asset):
	png_ptr_(0),
	info_ptr_(0)
	{
	if (asset.Open())
		{

		png_ptr_ = png_create_read_struct(PNG_LIBPNG_VER_STRING, 0, 0, 0);
		Assert(png_ptr_,"Couldn't create png read struct");
		if (!png_ptr_)
			{
			return;
			}

		info_ptr_ = png_create_info_struct((png_structp)png_ptr_);
		Assert(info_ptr_,"Couldn't create png info struct");
		if (!info_ptr_)
			{
			png_destroy_read_struct((png_structpp)&png_ptr_, 0,0);
			return;
			}

		png_set_read_fn(static_cast<png_structp>(png_ptr_), const_cast<Asset*>(&asset), png_user_read_fn);

		png_read_png(static_cast<png_structp>(png_ptr_), static_cast<png_infop>(info_ptr_), /*PNG_TRANSFORM_STRIP_16|*/PNG_TRANSFORM_EXPAND|PNG_TRANSFORM_BGR, 0);

		asset.Close();
 		}

   }
Exemplo n.º 2
0
bool ImageFormat_TGA::TestAsset(const Asset& asset)
	{
	// Check if the footer says that this is a TGA file
	if (asset.Open())
		{
		asset.Seek(-18,Asset::SEEK_FROM_END);
		char buffer[16];
		asset.Read(buffer,16);
		asset.Close();
		if (StrNCmp(buffer,"TRUEVISION-XFILE",16)==0)
			{
			return true;
			}
		}

	// If the footer doesn't match, this might still be a tga file (version < 2)
	// so try and load it as a tga and see if it works...
	int size=asset.GetSize();
	char* buffer=new char[size];
	asset.Open();
	asset.Read(buffer,size);
    asset.Close();

	tga_image image;
	tga_read_from_Buffer(&image,buffer);

	delete[] buffer;

	// Check to see if the header data makes sense...
	if (image.width<32767 && image.height<32767 && image.image_data && (image.pixel_depth==8 || image.pixel_depth==24 || image.pixel_depth==16 || image.pixel_depth==32))
		{
		// Yeah, sure, this looks like proper data, so give thumbs up and hope for the best
		return true;
		}

	tga_free_buffers(&image);

	// Nope, not likely to be a TGA
	return false;
	}
Exemplo n.º 3
0
ImageFormat_TGA::ImageFormat_TGA(const Asset& asset):
	image_(0)
	{
	int size=asset.GetSize();
	char* buffer=new char[size];
	asset.Open();
	asset.Read(buffer,size);
    asset.Close();

	image_=new tga_image;
	tga_read_from_Buffer(static_cast<tga_image*>(image_),buffer);

	delete[] buffer;
    }
Exemplo n.º 4
0
bool AudioFormat_YM::TestAsset(const Asset& asset)
	{
	if (asset.Open())
		{
		char buffer[7];
		asset.Read(buffer,7);
		asset.Close();
		if (StrNCmp(&buffer[2],"-lh5-",5)==0 || StrNCmp(buffer,"YM3!",4)==0)
			{
			return true;
			}
		}

	return false;
	}
Exemplo n.º 5
0
bool ImageFormat_GIF::TestAsset(const Asset& asset)
	{
	if (asset.Open())
		{
		char buffer[3];
		asset.Read(buffer,3);
		asset.Close();
		if (StrNCmp(buffer,"GIF",3)==0)
			{
			return true;
			}
		}

	return false;
	}
Exemplo n.º 6
0
bool ImageFormat_PNG::TestAsset(const Asset& asset)
	{
	// Check if the header matches PNG files
	if (asset.Open())
		{
		unsigned char pngheader[]={137,80,78,71,13,10,26,10};
		unsigned char buffer[8];
		asset.Read(buffer,8);
		asset.Close();
		if (MemCmp(buffer,pngheader,8)==0)
			{
			return true;
			}
		}

	return false;
	}
Exemplo n.º 7
0
AudioFormat_YM::AudioFormat_YM(const Asset& asset):
	ymFile_(0),
	chunkStart_(0),
	chunkEnd_(0)
	{
	if (asset.Open())
		{
		int size=asset.GetSize();
		unsigned char* buffer=static_cast<unsigned char*>(Malloc(size));
		asset.Read(buffer,size);
		asset.Close();

		ymFile_=new CYmMusic();
		ymFile_->loadMemory(buffer,size);
		ymFile_->setLoopMode(true);
		ymFile_->play();
		Free(buffer);
		}
	// Report missing file
	#ifdef _DEBUG
	else
		{
		const char* filename=asset.GetFilename().GetString();
		if (filename)
			{
			char errorMessage[1024];
			SNPrintF(errorMessage,1024,"File not found: %s",filename);
			Assert(false,errorMessage);
			}
		else
			{
			Assert(false,"An asset could not be accessed.");
			}
		}
	#endif
	}
Exemplo n.º 8
0
void Bitmap_RLE8::Load(const Asset& asset)
	{
	if (asset.Open())
		{
		char header[8];
		asset.Read(header,8);

		if (StrNCmp(header,"PIXRLE8B",8)==0)
			{
			int version=0;
			asset.Read(&version);
			if (version==0)
				{
				int celCount=0;
				asset.Read(&celCount);
				if (celCount>=1)
					{
					ReadFromAsset(&asset);
					}
				}
			}

		else if (StrNCmp(header,"PIXIE_RL",8)==0)
			{
			char c;
			asset.Read(&c);
			int version=0;
			asset.Read(&version);
			if (version==0)
				{
				int celCount=0;
				asset.Read(&celCount);
				if (celCount>=1)
					{
					ReadFromAsset(&asset);
					}
				}
			}
		else
			{
			Assert(false,"Invalid RLE header");
			}
		}
	// Report missing file
	#ifdef _DEBUG
	else
		{
		const char* filename=asset.GetFilename().GetString();
		if (filename)
			{
			char errorMessage[1024];
			SNPrintF(errorMessage,1024,"File not found: %s",filename);
			Assert(false,errorMessage);
			}
		else
			{
			Assert(false,"An asset could not be accessed.");
			}
		}
	#endif
	}