Пример #1
0
//==============================================================================
static ANKI_USE_RESULT Error loadTga(ResourceFilePtr fs,
	U32& width,
	U32& height,
	U32& bpp,
	DynamicArray<U8>& data,
	GenericMemoryPoolAllocator<U8>& alloc)
{
	char myTgaHeader[12];

	ANKI_CHECK(fs->read(&myTgaHeader[0], sizeof(myTgaHeader)));

	if(memcmp(tgaHeaderUncompressed, &myTgaHeader[0], sizeof(myTgaHeader)) == 0)
	{
		ANKI_CHECK(loadUncompressedTga(fs, width, height, bpp, data, alloc));
	}
	else if(std::memcmp(
				tgaHeaderCompressed, &myTgaHeader[0], sizeof(myTgaHeader))
		== 0)
	{
		ANKI_CHECK(loadCompressedTga(fs, width, height, bpp, data, alloc));
	}
	else
	{
		ANKI_LOGE("Invalid image header");
		return ErrorCode::USER_DATA;
	}

	if(bpp != 32 && bpp != 24)
	{
		ANKI_LOGE("Invalid bpp");
		return ErrorCode::USER_DATA;
	}

	return ErrorCode::NONE;
}
Пример #2
0
//==============================================================================
static ANKI_USE_RESULT Error loadTga(const CString& filename, 
	U32& width, U32& height, U32& bpp, DArray<U8>& data,
	GenericMemoryPoolAllocator<U8>& alloc)
{
	File fs;
	char myTgaHeader[12];

	ANKI_CHECK(fs.open(filename, 
		File::OpenFlag::READ | File::OpenFlag::BINARY));

	ANKI_CHECK(fs.read(&myTgaHeader[0], sizeof(myTgaHeader)));

	if(std::memcmp(
		tgaHeaderUncompressed, &myTgaHeader[0], sizeof(myTgaHeader)) == 0)
	{
		ANKI_CHECK(loadUncompressedTga(fs, width, height, bpp, data, alloc));
	}
	else if(std::memcmp(tgaHeaderCompressed, &myTgaHeader[0],
		sizeof(myTgaHeader)) == 0)
	{
		ANKI_CHECK(loadCompressedTga(fs, width, height, bpp, data, alloc));
	}
	else
	{
		ANKI_LOGE("Invalid image header");
		return ErrorCode::USER_DATA;
	}

	if(bpp != 32 && bpp != 24)
	{
		ANKI_LOGE("Invalid bpp");
		return ErrorCode::USER_DATA;
	}

	return ErrorCode::NONE;
}