//============================================================================== 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; }
//============================================================================== 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; }