whoa/src/component/Texture.hpp
2025-10-22 22:47:41 -05:00

56 lines
1.2 KiB
C++

#ifndef COMPONENT_TEXTURE_HPP
#define COMPONENT_TEXTURE_HPP
#include <storm/Hash.hpp>
class CAsyncObject;
struct BlpPalPixel;
struct TCTEXTUREINFO {
uint16_t width;
uint16_t height;
uint32_t mipCount : 8;
uint32_t alphaSize : 8;
uint32_t opaque : 1;
uint32_t pad : 15;
TCTEXTUREINFO();
};
class CACHEENTRY : public TSHashObject<CACHEENTRY, HASHKEY_NONE> {
public:
// Member variables
CAsyncObject* m_asyncObject;
TCTEXTUREINFO m_info;
char m_fileName[128];
uint32_t m_refCount;
uint32_t m_memHandle;
void* m_data;
uint32_t m_size : 20;
uint32_t m_missing : 1;
// Member functions
CACHEENTRY();
void AddRef();
TCTEXTUREINFO& Info();
bool IsLoading();
bool IsMissing();
int32_t LoadTexture();
bool NeedsLoad();
};
void* TextureCacheCreateTexture(const char* fileName);
void TextureCacheDestroyTexture(void* texture);
int32_t TextureCacheGetInfo(void* handle, TCTEXTUREINFO& info, int32_t a3);
uint8_t* TextureCacheGetMip(void* handle, uint32_t mipLevel);
BlpPalPixel* TextureCacheGetPal(void* handle);
int32_t TextureCacheHasMips(void* handle);
#endif