mirror of
https://github.com/ddnet/ddnet.git
synced 2024-10-19 23:38:19 +00:00
994324b059
This allows a larger range of PNGs to be loaded while still maintaining backward compatibility with older clients by annoying the user. This warning can be enabled by the `warn-pnglite-incompatible-images` key in the https://info2.ddnet.tw/info JSON, if the key is not there or the JSON hasn't been obtained yet, the warning is disabled. Since the JSON is cached across restarts, it'll be effective for initially loaded images from the second start.
38 lines
976 B
C++
38 lines
976 B
C++
#ifndef ENGINE_GFX_IMAGE_LOADER_H
|
|
#define ENGINE_GFX_IMAGE_LOADER_H
|
|
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
#include <vector>
|
|
|
|
enum EImageFormat
|
|
{
|
|
IMAGE_FORMAT_R = 0,
|
|
IMAGE_FORMAT_RGB,
|
|
IMAGE_FORMAT_RGBA,
|
|
};
|
|
|
|
typedef std::vector<uint8_t> TImageByteBuffer;
|
|
struct SImageByteBuffer
|
|
{
|
|
SImageByteBuffer(std::vector<uint8_t> *pvBuff) :
|
|
m_LoadOffset(0), m_pvLoadedImageBytes(pvBuff), m_Err(0) {}
|
|
size_t m_LoadOffset;
|
|
std::vector<uint8_t> *m_pvLoadedImageBytes;
|
|
int m_Err;
|
|
};
|
|
|
|
enum
|
|
{
|
|
PNGLITE_COLOR_TYPE = 1 << 0,
|
|
PNGLITE_BIT_DEPTH = 1 << 1,
|
|
PNGLITE_INTERLACE_TYPE = 1 << 2,
|
|
PNGLITE_COMPRESSION_TYPE = 1 << 3,
|
|
PNGLITE_FILTER_TYPE = 1 << 4,
|
|
};
|
|
|
|
bool LoadPNG(SImageByteBuffer &ByteLoader, const char *pFileName, int &PngliteIncompatible, int &Width, int &Height, uint8_t *&pImageBuff, EImageFormat &ImageFormat);
|
|
bool SavePNG(EImageFormat ImageFormat, const uint8_t *pRawBuffer, SImageByteBuffer &WrittenBytes, int Width, int Height);
|
|
|
|
#endif // ENGINE_GFX_IMAGE_LOADER_H
|