aboutsummaryrefslogtreecommitdiff
path: root/smelt/glfw/CxImage/xmemfile.h
diff options
context:
space:
mode:
authorGravatar Chris Xiong <chirs241097@gmail.com> 2016-10-28 16:35:21 +0800
committerGravatar Chris Xiong <chirs241097@gmail.com> 2016-10-28 16:35:21 +0800
commit0900cc583cc5e51b7c6b378de93cca29e11cb0e9 (patch)
tree47625b45ad1d4d63eaa59b2414f89fbfda33d035 /smelt/glfw/CxImage/xmemfile.h
parent6206029f2d0af3ef76a0a61ef024ca758307ba19 (diff)
downloadSMELT-0900cc583cc5e51b7c6b378de93cca29e11cb0e9.tar.xz
Add the GLFW port, still using OpenGL 2.1 though.
And a more detailed readme.
Diffstat (limited to 'smelt/glfw/CxImage/xmemfile.h')
-rw-r--r--smelt/glfw/CxImage/xmemfile.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/smelt/glfw/CxImage/xmemfile.h b/smelt/glfw/CxImage/xmemfile.h
new file mode 100644
index 0000000..e132db3
--- /dev/null
+++ b/smelt/glfw/CxImage/xmemfile.h
@@ -0,0 +1,42 @@
+#if !defined(__xmemfile_h)
+#define __xmemfile_h
+
+#include "xfile.h"
+
+//////////////////////////////////////////////////////////
+class DLL_EXP CxMemFile : public CxFile
+{
+public:
+ CxMemFile(uint8_t* pBuffer = NULL, uint32_t size = 0);
+ ~CxMemFile();
+
+ bool Open();
+ uint8_t* GetBuffer(bool bDetachBuffer = true);
+
+ virtual bool Close();
+ virtual size_t Read(void *buffer, size_t size, size_t count);
+ virtual size_t Write(const void *buffer, size_t size, size_t count);
+ virtual bool Seek(int32_t offset, int32_t origin);
+ virtual int32_t Tell();
+ virtual int32_t Size();
+ virtual bool Flush();
+ virtual bool Eof();
+ virtual int32_t Error();
+ virtual bool PutC(uint8_t c);
+ virtual int32_t GetC();
+ virtual char * GetS(char *string, int32_t n);
+ virtual int32_t Scanf(const char *format, void* output);
+
+protected:
+ bool Alloc(uint32_t nBytes);
+ void Free();
+
+ uint8_t* m_pBuffer;
+ uint32_t m_Size;
+ bool m_bFreeOnClose;
+ int32_t m_Position; //current position
+ int32_t m_Edge; //buffer size
+ bool m_bEOF;
+};
+
+#endif