about summary refs log tree commit diff
path: root/converter/other/pngx.h
diff options
context:
space:
mode:
Diffstat (limited to 'converter/other/pngx.h')
-rw-r--r--converter/other/pngx.h274
1 files changed, 274 insertions, 0 deletions
diff --git a/converter/other/pngx.h b/converter/other/pngx.h
new file mode 100644
index 00000000..81e0dc55
--- /dev/null
+++ b/converter/other/pngx.h
@@ -0,0 +1,274 @@
+#ifndef PNGX_H_INCLUDED
+#define PNGX_H_INCLUDED
+
+#include <png.h>
+#include "pm_c_util.h"
+
+/* pngx is designed to be an extension of the PNG library to make using
+   the PNG library easier and cleaner.
+*/
+
+struct pngx_chroma {
+    float wx;
+    float wy;
+    float rx;
+    float ry;
+    float gx;
+    float gy;
+    float bx;
+    float by;
+};
+
+struct pngx_phys {
+    int x;
+    int y;
+    int unit;
+};
+
+struct pngx_text {
+    png_text *   line;
+    unsigned int size;
+};
+
+struct pngx_plte {
+    png_color *  palette;
+    unsigned int size;
+};
+
+struct pngx_trns {
+    png_byte *    trans;
+    unsigned int  numTrans;
+    png_color_16  transColor;
+};
+
+typedef enum {PNGX_READ, PNGX_WRITE} pngx_rw;
+
+struct pngx {
+    png_structp  png_ptr;
+    png_infop    info_ptr;
+    pngx_rw      rw;
+    png_uint_16  maxval;
+    unsigned int numPassesRequired;
+        /* The number of times we have write the complete image to the
+           compressor.  This is more than one when the compressor is set
+           up to do an interlaced format.
+        */
+};
+
+void
+pngx_create(struct pngx ** const pngxPP,
+            pngx_rw        const rw,
+            jmp_buf *      const jmpbufP);
+
+void
+pngx_destroy(struct pngx * const pngxP);
+
+bool
+pngx_chunkIsPresent(struct pngx * const pngxP,
+                    uint32_t      const chunkType);
+
+unsigned int
+pngx_bitDepth(struct pngx * const pngxP);
+
+png_color_16
+pngx_bkgd(struct pngx *  const pngxP);
+
+png_byte
+pngx_colorType(struct pngx * const pngxP);
+
+png_byte
+pngx_filterType(struct pngx * const pngxP);
+
+double
+pngx_gama(struct pngx * const pngxP);
+
+uint32_t
+pngx_imageHeight(struct pngx * const pngxP);
+
+uint32_t
+pngx_imageWidth(struct pngx * const pngxP);
+
+png_byte
+pngx_interlaceType(struct pngx * const pngxP);
+
+struct pngx_plte
+pngx_plte(struct pngx * const pngxP);
+
+png_color_8
+pngx_sbit(struct pngx * const pngxP);
+
+struct pngx_text
+pngx_text(struct pngx * const pngxP);
+
+png_time
+pngx_time(struct pngx * const pngxP);
+
+struct pngx_trns
+pngx_trns(struct pngx * const pngxP);
+
+uint32_t
+pngx_xPixelsPerMeter(struct pngx * const pngxP);
+
+uint32_t
+pngx_yPixelsPerMeter(struct pngx * const pngxP);
+
+float
+pngx_pixelAspectRatio(struct pngx * const pngxP);
+
+bool
+pngx_pixelAspectRatioIsKnown(struct pngx * const pngxP);
+
+void
+pngx_removeChunk(struct pngx * const pngxP,
+                 uint32_t      const chunkType);
+
+void
+pngx_setBkgdPalette(struct pngx * const pngxP,
+                    unsigned int  const backgroundIndex);
+
+void
+pngx_setBkgdRgb(struct pngx * const pngxP,
+                png_color_16  const backgroundArg);
+
+void
+pngx_setChrm(struct pngx *      const pngxP,
+             struct pngx_chroma const chroma);
+
+typedef enum {
+    PNGX_PERCEPTUAL,
+    PNGX_RELATIVE_COLORIMETRIC,
+    PNGX_SATURATION,
+    PNGX_ABSOLUTE_COLORIMETRIC
+} pngx_srgbIntent;
+
+const char *
+pngx_srgbIntentDesc(pngx_srgbIntent const srgbIntent);
+
+void
+pngx_setSrgb(struct pngx *   const pngxP,
+             pngx_srgbIntent const srgbIntent);
+
+void
+pngx_setCompressionSize(struct pngx * const pngxP,
+                        unsigned int  const bufferSize);
+
+void
+pngx_setFilter(struct pngx * const pngxP,
+               int           const filterSet);
+
+void
+pngx_setGama(struct pngx * const pngxP,
+             float         const fileGamma);
+
+void
+pngx_setGamma(struct pngx * const pngxP,
+              float         const displayGamma,
+              float         const imageGamma);
+
+void
+pngx_setHist(struct pngx * const pngxP,
+             png_uint_16 * const histogram);
+
+void
+pngx_setIhdr(struct pngx * const pngxP,
+             unsigned int  const width,
+             unsigned int  const height,
+             unsigned int  const bitDepth,
+             int           const colorType,
+             int           const interlaceMethod,
+             int           const compressionMethod,
+             int           const filterMethod);
+
+void
+pngx_setInterlaceHandling(struct pngx * const pngxP);
+
+void
+pngx_setInvalid(struct pngx * const pngxP);
+
+void
+pngx_setPacking(struct pngx * const pngxP);
+
+void
+pngx_setPhys(struct pngx *    const pngxP,
+             struct pngx_phys const phys);
+
+void
+pngx_setPlte(struct pngx * const pngxP,
+             png_color *   const palette,
+             unsigned int  const paletteSize);
+
+void
+pngx_setSbit(struct pngx * const pngxP,
+             png_color_8   const sbit);
+
+void
+pngx_setShift(struct pngx * const pngxP,
+              png_color_8   const sigBitArg);
+
+void
+pngx_setSigBytes(struct pngx * const pngxP,
+                 unsigned int  const sigByteCt);
+
+void
+pngx_setTextKey(png_text *   const textP,
+                const char * const key);
+
+void
+pngx_setTextLang(png_text *   const textP,
+                 const char * const language);
+
+void
+pngx_setTextLangKey(png_text *   const textP,
+                    const char * const key);
+
+void
+pngx_termText(png_text * const textP);
+
+void
+pngx_setText(struct pngx * const pngxP,
+             png_textp     const textP,
+             unsigned int  const count);
+
+void
+pngx_setTime(struct pngx * const pngxP,
+             time_t        const timeArg);
+
+void
+pngx_setTrnsPalette(struct pngx *    const pngxP,
+                    const png_byte * const transPalette,
+                    unsigned int     const paletteSize);
+
+void
+pngx_setTrnsValue(struct pngx * const pngxP,
+                  png_color_16  const transColorArg);
+
+void
+pngx_readInfo(struct pngx * const pngxP);
+
+void
+pngx_writeInfo(struct pngx * const pngxP);
+
+void
+pngx_readStart(struct pngx * const pngxP,
+               FILE *        const ifP);
+
+void
+pngx_readRow(struct pngx * const pngxP,
+             png_byte *    const rowBuf,
+             png_byte *    const displayRow);
+
+void
+pngx_readImage(struct pngx * const pngxP,
+               png_byte **   const image);
+
+void
+pngx_writeRow(struct pngx *    const pngxP,
+              const png_byte * const line);
+
+void
+pngx_readEnd(struct pngx * const pngxP);
+
+void
+pngx_writeEnd(struct pngx * const pngxP);
+
+#endif