summaryrefslogtreecommitdiff
path: root/Examples/Generic/FIIO_Mem.h
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/Generic/FIIO_Mem.h')
-rw-r--r--Examples/Generic/FIIO_Mem.h74
1 files changed, 74 insertions, 0 deletions
diff --git a/Examples/Generic/FIIO_Mem.h b/Examples/Generic/FIIO_Mem.h
new file mode 100644
index 0000000..e686b1c
--- /dev/null
+++ b/Examples/Generic/FIIO_Mem.h
@@ -0,0 +1,74 @@
+/*--------------------------------------------------------------------------*\
+|| fiio_mem.h by Ryan Rubley <ryan@lostreality.org> ||
+|| ||
+|| (v1.02) 4-28-2004 ||
+|| FreeImageIO to memory ||
+|| ||
+\*--------------------------------------------------------------------------*/
+
+#ifndef _FIIO_MEM_H_
+#define _FIIO_MEM_H_
+
+#include "freeimage.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct fiio_mem_handle_s {
+ long filelen,datalen,curpos;
+ void *data;
+} fiio_mem_handle;
+
+/* it is up to the user to create a fiio_mem_handle and init datalen and data
+ * filelen will be pre-set to 0 by SaveToMem
+ * curpos will be pre-set to 0 by SaveToMem and LoadFromMem
+ * IMPORTANT: data should be set to NULL and datalen to 0,
+ * unless the user wants to manually malloc a larger buffer
+ */
+FIBITMAP *FreeImage_LoadFromMem(FREE_IMAGE_FORMAT fif, fiio_mem_handle *handle, int flags);
+BOOL FreeImage_SaveToMem(FREE_IMAGE_FORMAT fif, FIBITMAP *dib, fiio_mem_handle *handle, int flags);
+
+void SetMemIO(FreeImageIO *io);
+unsigned fiio_mem_ReadProc(void *buffer, unsigned size, unsigned count, fi_handle handle);
+unsigned fiio_mem_WriteProc(void *buffer, unsigned size, unsigned count, fi_handle handle);
+int fiio_mem_SeekProc(fi_handle handle, long offset, int origin);
+long fiio_mem_TellProc(fi_handle handle);
+
+/*** Example Usage ***
+
+//variables
+FIBITMAP *bitmap, *bitmap2;
+fiio_mem_handle fmh;
+
+//important initialization
+fmh.data = NULL;
+fmh.datalen = 0;
+
+//load a regular file
+bitmap = FreeImage_Load(FIF_PNG, "sample.png");
+
+//save the file to memory
+FreeImage_SaveToMem(FIF_PNG, bitmap, &fmh, 0);
+
+//at this point, fmh.data contains the entire PNG data in memory
+//fmh.datalen is the amount of space malloc'd for the image in memory,
+//but only fmh.filelen amount of that space is actually used.
+
+//its easy load an image from memory as well
+bitmap2 = FreeImage_LoadFromMem(FIF_PNG, &fmh, 0);
+//you could also have image data in memory via some other method, and just set
+//fmh.data to point to it, and set both fmh.datalen and fmh.filelen to the
+//size of that data, then FreeImage_LoadFromMem could load the image from that
+//memory
+
+//make sure to free the data since SaveToMem will cause it to be malloc'd
+free(fmh.data);
+
+*/
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif