|
|
|
/*
|
|
|
|
img_png.h - png format reference
|
|
|
|
Copyright (C) 2019 Andrey Akhmichin
|
|
|
|
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
|
|
it under the terms of the GNU General Public License as published by
|
|
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
|
|
(at your option) any later version.
|
|
|
|
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
GNU General Public License for more details.
|
|
|
|
*/
|
|
|
|
#ifndef IMG_PNG_H
|
|
|
|
#define IMG_PNG_H
|
|
|
|
/*
|
|
|
|
========================================================================
|
|
|
|
|
|
|
|
.PNG image format (Portable Network Graphics)
|
|
|
|
|
|
|
|
========================================================================
|
|
|
|
*/
|
|
|
|
|
|
|
|
enum png_colortype
|
|
|
|
{
|
|
|
|
PNG_CT_GREY,
|
|
|
|
PNG_CT_RGB = BIT(1),
|
|
|
|
PNG_CT_PALLETE = (PNG_CT_RGB|BIT(0)),
|
|
|
|
PNG_CT_ALPHA = BIT(2),
|
|
|
|
PNG_CT_RGBA = (PNG_CT_RGB|PNG_CT_ALPHA)
|
|
|
|
};
|
|
|
|
|
|
|
|
enum png_filter
|
|
|
|
{
|
|
|
|
PNG_F_NONE,
|
|
|
|
PNG_F_SUB,
|
|
|
|
PNG_F_UP,
|
|
|
|
PNG_F_AVERAGE,
|
|
|
|
PNG_F_PAETH
|
|
|
|
};
|
|
|
|
|
|
|
|
#pragma pack( push, 1 )
|
|
|
|
typedef struct png_ihdr_s
|
|
|
|
{
|
|
|
|
uint32_t width;
|
|
|
|
uint32_t height;
|
|
|
|
uint8_t bitdepth;
|
|
|
|
uint8_t colortype;
|
|
|
|
uint8_t compression;
|
|
|
|
uint8_t filter;
|
|
|
|
uint8_t interlace;
|
|
|
|
} png_ihdr_t;
|
|
|
|
|
|
|
|
typedef struct png_s
|
|
|
|
{
|
|
|
|
uint8_t sign[8];
|
|
|
|
uint32_t ihdr_len;
|
|
|
|
uint8_t ihdr_sign[4];
|
|
|
|
png_ihdr_t ihdr_chunk;
|
|
|
|
uint32_t ihdr_crc32;
|
|
|
|
} png_t;
|
|
|
|
|
|
|
|
typedef struct png_footer_s
|
|
|
|
{
|
|
|
|
uint32_t idat_crc32;
|
|
|
|
uint32_t iend_len;
|
|
|
|
uint8_t iend_sign[4];
|
|
|
|
uint32_t iend_crc32;
|
|
|
|
} png_footer_t;
|
|
|
|
#pragma pack( pop )
|
|
|
|
#endif // IMG_PNG_H
|
|
|
|
|