Mercurial > hg > dmlib
diff libgfx.h @ 435:e4a3f183e463
Modularize some more.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Sat, 03 Nov 2012 16:08:30 +0200 |
parents | |
children | f7c9d1619c74 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libgfx.h Sat Nov 03 16:08:30 2012 +0200 @@ -0,0 +1,117 @@ +/* + * Functions for loading and saving bitmap images + * Programmed and designed by Matti 'ccr' Hamalainen + * (C) Copyright 2012 Tecnic Software productions (TNSP) + * + * Please read file 'COPYING' for information on license and distribution. + */ +#ifndef LIBMGFX_H +#define LIBMGFX_H 1 + +#include "dmlib.h" +#include "dmfile.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +enum +{ + IMGFMT_PNG, + IMGFMT_PPM, + IMGFMT_PCX, + IMGFMT_ARAW, + + IMGFMT_LAST +}; + + +enum +{ + DM_IFMT_PALETTE, + DM_IFMT_RGB, + DM_IFMT_RGBA, + DM_IFMT_RGB_PLANE, +}; + + +// RGBx color struct +typedef struct +{ + Uint8 r, g, b, x; +} DMColor; + + +// Bitmapped image struct (can be one of types specified by DM_IFMT_*) +typedef struct +{ + int width, height, pitch; + BOOL constpal; + int ncolors, ctrans; + DMColor *pal; + Uint8 *data; +} DMImage; + + +typedef struct +{ + int scale, nplanes, format; + BOOL interleave, paletted; +} DMImageSpec; + + +typedef struct +{ + char *fext; + char *desc; + int (*probe)(const Uint8 *buf, const size_t len); + int (*read)(const char *filename, DMImage **pimg); + int (*readFILE)(FILE *fp, DMImage **pimg); + int (*write)(const char *filename, DMImage *pimg, DMImageSpec *spec); + int (*writeFILE)(FILE *fp, DMImage *pimg, DMImageSpec *spec); +} DMImageFormat; + + +// Probe scores +#define DM_PROBE_SCORE_MAX 1000 +#define DM_PROBE_SCORE_GOOD 750 +#define DM_PROBE_SCORE_AVG 500 +#define DM_PROBE_SCORE_MAYBE 250 +#define DM_PROBE_SCORE_FALSE 0 + + +extern DMImageFormat dmImageFormatList[IMGFMT_LAST]; + + +DMImage * dmImageAlloc(int width, int height); +void dmImageFree(DMImage *img); +int dmImageGetBytesPerPixel(int format); +int dmImageProbeGeneric(const Uint8 *buf, const size_t len, DMImageFormat **fmt, int *index); + + +int dmWriteImageData(DMImage *img, void *cbdata, BOOL (*writeRowCB)(void *, Uint8 *, size_t), const DMImageSpec *spec); + +int dmWriteIFFMasterRAWPalette(const char *filename, DMImage *img, int ncolors); +int dmWriteIFFMasterRAWImageFILE(FILE *fp, DMImage *img, DMImageSpec *spec); +int dmWriteIFFMasterRAWImage(const char *filename, DMImage *img, DMImageSpec *spec); + +int dmWritePPMImageFILE(FILE *fp, DMImage *img, DMImageSpec *spec); +int dmWritePPMImage(const char *filename, DMImage *img, DMImageSpec *spec); + +#ifdef DM_USE_LIBPNG +int dmWritePNGImageFILE(FILE *fp, DMImage *img, DMImageSpec *spec); +int dmWritePNGImage(const char *filename, DMImage *img, DMImageSpec *spec); +#endif + +int dmWritePCXImageFILE(FILE *fp, DMImage *img, DMImageSpec *spec); +int dmWritePCXImage(const char *filename, DMImage *img, DMImageSpec *spec); +int dmReadPCXImageFILE(FILE *fp, DMImage **pimg); +int dmReadPCXImage(const char *filename, DMImage **pimg); + + +#ifdef __cplusplus +} +#endif + +#endif // LIBMGFX_H