TexConv/TextureFileCreater.h

67 lines
1.6 KiB
C
Raw Normal View History

2019-12-02 22:10:49 +08:00
#pragma once
#include"ILImage.h"
#include"pixel_format.h"
#include<hgl/io/FileOutputStream.h>
#include<hgl/io/DataOutputStream.h>
using namespace hgl;
bool ToILType(ILuint &type,const uint8 bits,const ColorDataType cdt);
2021-12-06 10:47:34 +08:00
enum class TextureFileType
{
Tex1D=0,
Tex2D,
Tex3D,
TexCubemap,
Tex1DArray,
Tex2DArray,
TexCubemapArray,
ENUM_CLASS_RANGE(Tex1D,TexCubemapArray)
};//
2019-12-02 22:10:49 +08:00
class TextureFileCreater
{
protected:
2020-10-25 21:22:18 +08:00
const PixelFormat *pixel_format;
2019-12-02 22:10:49 +08:00
ILImage *image;
protected:
OSString filename;
io::FileOutputStream fos;
io::DataOutputStream *dos;
2020-10-25 21:22:18 +08:00
uint32 Write(void *,const uint);
2019-12-02 22:10:49 +08:00
public:
TextureFileCreater(const PixelFormat *pf,ILImage *);
virtual ~TextureFileCreater();
2021-12-06 10:47:34 +08:00
virtual bool WriteFileHeader(const OSString &,const TextureFileType &,const uint);
2019-12-02 22:10:49 +08:00
2020-10-25 21:22:18 +08:00
virtual bool InitFormat()=0;
virtual uint32 Write()=0;
2019-12-02 22:10:49 +08:00
virtual void Close();
virtual void Delete();
2020-10-25 21:22:18 +08:00
};//class TextureFileCreater
TextureFileCreater *CreateTextureFileCreaterR(const PixelFormat *,ILImage *);
TextureFileCreater *CreateTextureFileCreaterRG(const PixelFormat *,ILImage *);
TextureFileCreater *CreateTextureFileCreaterRGB(const PixelFormat *,ILImage *);
TextureFileCreater *CreateTextureFileCreaterRGBA(const PixelFormat *,ILImage *);
TextureFileCreater *CreateTextureFileCreaterCompress(const PixelFormat *,ILImage *);
using CTFC_FUNC=TextureFileCreater *(*)(const PixelFormat *,ILImage *);
static CTFC_FUNC CreateTFC[4]={CreateTextureFileCreaterR,CreateTextureFileCreaterRG,CreateTextureFileCreaterRGB,CreateTextureFileCreaterRGBA};