thunderbrew/src/gx/Texture.hpp

97 lines
3.4 KiB
C++
Raw Normal View History

2023-01-02 13:17:18 -06:00
#ifndef GX_TEXTURE_HPP
#define GX_TEXTURE_HPP
#include "gx/Types.hpp"
#include "gx/texture/CGxTex.hpp"
#include "gx/texture/CTexture.hpp"
enum EImageFormat {
IMAGE_FORMAT_TGA = 0x0,
IMAGE_FORMAT_BLP = 0x1,
NUM_IMAGE_FORMATS = 0x2
};
2023-01-02 13:17:18 -06:00
typedef HOBJECT HTEXTURE;
typedef void (TEXTURE_CALLBACK)(EGxTexCommand, uint32_t, uint32_t, uint32_t, uint32_t, void*, uint32_t&, const void*&);
class CImVector;
void AsyncTextureWait(CTexture*);
uint32_t CalcLevelCount(uint32_t, uint32_t);
uint32_t CalcLevelOffset(uint32_t, uint32_t, uint32_t, uint32_t);
uint32_t CalcLevelSize(uint32_t, uint32_t, uint32_t, uint32_t);
uint32_t GetBitDepth(uint32_t);
uint32_t GxCalcTexelStrideInBytes(EGxTexFormat, uint32_t);
int32_t GxTexCreate(CGxTexParms const&, CGxTex*&);
int32_t GxTexCreate(EGxTexTarget, uint32_t, uint32_t, uint32_t, EGxTexFormat, EGxTexFormat, CGxTexFlags, void*, void (*)(EGxTexCommand, uint32_t, uint32_t, uint32_t, uint32_t, void*, uint32_t&, const void*&), const char*, CGxTex*&);
int32_t GxTexCreate(uint32_t, uint32_t, EGxTexFormat, CGxTexFlags, void*, void (*)(EGxTexCommand, uint32_t, uint32_t, uint32_t, uint32_t, void*, uint32_t&, const void*&), CGxTex*&);
2023-01-02 13:17:18 -06:00
void GxTexDestroy(CGxTex* texId);
void GxTexParameters(const CGxTex* texId, CGxTexParms& parms);
bool GxTexReusable(CGxTexParms&);
void GxTexSetWrap(CGxTex* texId, EGxTexWrapMode wrapU, EGxTexWrapMode wrapV);
void GxTexUpdate(CGxTex*, int32_t, int32_t, int32_t, int32_t, int32_t);
void GxTexUpdate(CGxTex*, CiRect&, int32_t);
TEXTURE_CALLBACK GxuUpdateSingleColorTexture;
MipBits* MippedImgAllocA(uint32_t, uint32_t, uint32_t, const char*, int32_t);
uint32_t MippedImgCalcSize(uint32_t, uint32_t, uint32_t);
void MippedImgSet(uint32_t fourCC, uint32_t width, uint32_t height, MipBits* bits);
2023-01-02 13:17:18 -06:00
CGxTex* TextureAllocGxTex(EGxTexTarget, uint32_t, uint32_t, uint32_t, EGxTexFormat, CGxTexFlags, void*, void (*userFunc)(EGxTexCommand, uint32_t, uint32_t, uint32_t, uint32_t, void*, uint32_t&, const void*&), EGxTexFormat);
HTEXTURE TextureCacheGetTexture(char*, char*, CGxTexFlags);
HTEXTURE TextureCacheGetTexture(const CImVector&);
void TextureCacheNewTexture(CTexture*, CGxTexFlags);
void TextureCacheNewTexture(CTexture*, const CImVector&);
HTEXTURE TextureCreate(const char*, CGxTexFlags, CStatus*, int32_t);
HTEXTURE TextureCreate(uint32_t, uint32_t, EGxTexFormat, EGxTexFormat, CGxTexFlags, void*, void (*)(EGxTexCommand, uint32_t, uint32_t, uint32_t, uint32_t, void*, uint32_t&, const void*&), const char*, int32_t);
HTEXTURE TextureCreate(EGxTexTarget, uint32_t, uint32_t, uint32_t, EGxTexFormat, EGxTexFormat, CGxTexFlags, void*, void (*)(EGxTexCommand, uint32_t, uint32_t, uint32_t, uint32_t, void*, uint32_t&, const void*&), const char*, int32_t);
HTEXTURE TextureCreateSolid(const CImVector&);
int32_t TextureGetDimensions(HTEXTURE, uint32_t*, uint32_t*, int32_t);
void TextureIncreasePriority(CTexture*);
void TextureInitialize(void);
int32_t TextureIsSame(HTEXTURE textureHandle, const char* fileName);
MipBits* TextureLoadImage(const char* filename, uint32_t* width, uint32_t* height, PIXEL_FORMAT* dataFormat, int32_t* isOpaque, CStatus* status, uint32_t* alphaBits, int32_t a8);
2023-01-02 13:17:18 -06:00
void TextureFreeGxTex(CGxTex* texId);
void TextureFreeMippedImg(MipBits* image, PIXEL_FORMAT format, uint32_t width, uint32_t height);
2023-01-02 13:17:18 -06:00
CGxTex* TextureGetGxTex(CTexture*, int32_t, CStatus*);
CGxTex* TextureGetGxTex(HTEXTURE, int32_t, CStatus*);
CTexture* TextureGetTexturePtr(HTEXTURE);
#endif