#ifndef IMAGE_H
#define IMAGE_H
#include <cstdint>
#include <vector>
#include <cstdlib>
using ByteArray = std::vector<uint8_t>;
enum ImageType
{
RAW_RGB_24BPP = 0x8051,
RAW_RGBA_32BPP = 0x8058,
//PVR_Alpha_2BPP,
//PVR_Alpha_4BPP,
PVRTC_RGB_4BPPV1 = 0x8C00,
PVRTC_RGB_2BPPV1 = 0x8C01,
PVRTC_RGBA_4BPPV1 = 0x8C02,
PVRTC_RGBA_2BPPV1 = 0x8C03,
};
struct Image
{
ImageType m_type;
ByteArray m_data;
size_t m_width;
size_t m_height;
};
bool LoadFile(const char* filename, ByteArray& data);
bool SaveFile(const char* filename, const ByteArray& data);
bool DecodeTGA(const ByteArray& inData, Image& outImage);
bool EncodeTGA(const Image& inImage, ByteArray& outData);
bool DecodePNG(const ByteArray& inData, Image& outImage);
//bool EncodePNG(const Image& inImage, ByteArray& outData);
bool ConvertImage(const Image& inImage, Image& outImage, ImageType outputFormat = PVRTC_RGB_4BPPV1);
#endif // IMAGE_H