#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 #pragma pack(push) #pragma pack(4) 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 */ }HGPngLoadInfo; typedef struct { HGByte physUnitType; /* 分辨率单位, 见HGIMGFMT_PNGPHYSUNIT_* */ HGUInt xPixelsPerUnit; /* 分辨率x */ HGUInt yPixelsPerUnit; /* 分辨率y */ }HGPngSaveInfo; #pragma pack(pop) 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__ */