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