CanvasRenderer: Separates Commit() method
[platform/core/uifw/dali-adaptor.git] / third-party / windows-platform / Win32File / MemFile.cpp
1 #include <string>
2
3 using namespace std;
4
5 typedef unsigned char BYTE;
6 typedef unsigned int UINT;
7
8 #define SEEK_CUR    1
9 #define SEEK_END    2
10 #define SEEK_SET    0
11
12 class CBufferFile
13 {
14 public:
15   CBufferFile( BYTE* lpBuffer, UINT nBufferSize )
16   {
17     mFlag = 0xFF;
18     mCurIndex = 0;
19     mLength = nBufferSize;
20
21     mBuffer = lpBuffer;
22   }
23
24   virtual ~CBufferFile()
25   {
26     Close();
27   }
28
29   int Read( void *buf, int size )
30   {
31     int realReadSize = mLength - mCurIndex;
32
33     if( realReadSize > size )
34     {
35       realReadSize = size;
36     }
37
38     if( 0 < realReadSize )
39     {
40       memcpy( buf, mBuffer + mCurIndex, realReadSize );
41       mCurIndex += realReadSize;
42     }
43
44     return realReadSize;
45   }
46
47   void Write( void *buf, int size )
48   {
49     memcpy( mBuffer + mCurIndex, buf, size );
50     mCurIndex += size;
51   }
52
53   int Seek( long offset, int origin )
54   {
55     int nextIndex = -1;
56
57     switch( origin )
58     {
59     case SEEK_SET:
60       nextIndex = offset;
61       break;
62
63     case SEEK_CUR:
64       nextIndex = mCurIndex + offset;
65       break;
66
67     case SEEK_END:
68       nextIndex = mLength - 1 - offset;
69       break;
70     }
71
72     if( nextIndex >= mLength )
73     {
74       nextIndex = -1;
75     }
76
77     if( 0 > nextIndex )
78     {
79       return 1;
80     }
81     else
82     {
83       mCurIndex = nextIndex;
84       return 0;
85     }
86   }
87
88   int GetPosition()
89   {
90     return mCurIndex;
91   }
92
93   bool IsEnd()
94   {
95     return ( mLength - 1 == mCurIndex );
96   }
97
98   void Close()
99   {
100     mBuffer = NULL;
101
102     mCurIndex = 0;
103     mLength = -1;
104     mFlag = 0;
105   }
106
107 protected:
108
109 private:
110   char mFlag;
111   BYTE *mBuffer;
112
113   UINT mLength;
114   UINT mCurIndex;
115 };
116
117 void* MemFOpen( uint8_t* buffer, size_t dataSize, const char * const mode )
118 {
119   CBufferFile *pBufferFile = new CBufferFile( buffer, dataSize );
120   return pBufferFile;
121 }
122
123 void MemFClose( const void *fp )
124 {
125   CBufferFile *file = (CBufferFile*)fp;
126   printf("MemFClose file 0x%x\n", file);
127   file->Close();
128   delete file;
129 }
130
131 int MemFRead( void* buf, int eleSize, int count, const void *fp )
132 {
133   CBufferFile *file = (CBufferFile*)fp;
134   return file->Read( buf, eleSize * count );
135 }
136
137 void MemFWrite( void *buf, int size, const void *fp )
138 {
139   CBufferFile *file = (CBufferFile*)fp;
140   file->Write( buf, size );
141 }
142
143 int MemFSeek( const void *fp, int offset, int origin )
144 {
145   CBufferFile *file = (CBufferFile*)fp;
146   return file->Seek( offset, origin );
147 }
148
149 int MemFTell( const void *fp )
150 {
151   CBufferFile *file = (CBufferFile*)fp;
152   return file->GetPosition();
153 }
154
155 bool MemFEof( const void *fp )
156 {
157   CBufferFile *file = (CBufferFile*)fp;
158   return file->IsEnd();
159 }