code_app/modules/imgfmt/HGPng.h

60 lines
1.9 KiB
C
Raw Normal View History

2022-05-03 10:25:52 +00:00
#ifndef __HGPNG_H__
#define __HGPNG_H__
#include "../base/HGDef.h"
#include "../base/HGBaseErr.h"
#include "HGImgFmtErr.h"
#include "../base/HGImage.h"
/* */
#define HGIMGFMT_PNGCLRTYPE_GRAY 0L
#define HGIMGFMT_PNGCLRTYPE_PALETTE (1L | 2L)
#define HGIMGFMT_PNGCLRTYPE_RGB 2L
#define HGIMGFMT_PNGCLRTYPE_RGB_ALPHA (2L | 4L)
#define HGIMGFMT_PNGCLRTYPE_GRAY_ALPHA 4L
/* */
#define HGIMGFMT_PNGFILTERTYPE_BASE 0L
/* */
#define HGIMGFMT_PNGINTERLACE_NONE 0L
#define HGIMGFMT_PNGINTERLACE_ADAM7 1L
#define HGIMGFMT_PNGINTERLACE_LAST 2L
/* */
#define HGIMGFMT_PNGCOMPTYPE_BASE 0L
/* 分辨率单位 */
#define HGIMGFMT_PNGPHYSUNIT_UNKNOWN 0L
#define HGIMGFMT_PNGPHYSUNIT_METER 1L
#define HGIMGFMT_PNGPHYSUNIT_LAST 2L
2022-05-03 10:25:52 +00:00
typedef struct
{
HGUInt width; /* 图像宽 */
HGUInt height; /* 图像高 */
HGByte bitDepth; /* 每通道的比特数 */
HGByte colorType; /* 色彩类型, 见HGIMGFMT_PNGCLRTYPE_* */
HGByte channels; /* 通道数 */
HGByte filterType; /* 见HGIMGFMT_PNGFILTERTYPE_* */
HGByte InterlaceType; /* 见HGIMGFMT_PNGINTERLACE_* */
HGByte compressionType; /* 见HGIMGFMT_PNGCOMPTYPE_* */
HGByte pixelDepth; /* 每像素的比特数 */
HGByte physUnitType; /* 分辨率单位, 见HGIMGFMT_PNGPHYSUNIT_* */
HGUInt xPixelsPerUnit; /* 分辨率x */
HGUInt yPixelsPerUnit; /* 分辨率y */
2022-05-03 10:25:52 +00:00
}HGPngLoadInfo;
typedef struct
{
HGByte physUnitType; /* 分辨率单位, 见HGIMGFMT_PNGPHYSUNIT_* */
HGUInt xPixelsPerUnit; /* 分辨率x */
HGUInt yPixelsPerUnit; /* 分辨率y */
2022-05-03 10:25:52 +00:00
}HGPngSaveInfo;
HGEXPORT HGResult HGAPI HGImgFmt_CheckPngFile(const HGChar* fileName, HGBool* isPng);
HGEXPORT HGResult HGAPI HGImgFmt_LoadPngImage(const HGChar* fileName, HGPngLoadInfo* info,
HGUInt imgType, HGUInt imgOrigin, HGImage* image);
HGEXPORT HGResult HGAPI HGImgFmt_SavePngImage(HGImage image, const HGPngSaveInfo* info, const HGChar* fileName);
#endif /* __HGPNG_H__ */