libpgf
6.12.24
PGF - Progressive Graphics File
Main Page
Classes
Files
File List
File Members
All
Classes
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
PGFstream.h
Go to the documentation of this file.
1
/*
2
* The Progressive Graphics File; http://www.libpgf.org
3
*
4
* $Date: 2007-06-11 10:56:17 +0200 (Mo, 11 Jun 2007) $
5
* $Revision: 299 $
6
*
7
* This file Copyright (C) 2006 xeraina GmbH, Switzerland
8
*
9
* This program is free software; you can redistribute it and/or
10
* modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE
11
* as published by the Free Software Foundation; either version 2.1
12
* of the License, or (at your option) any later version.
13
*
14
* This program is distributed in the hope that it will be useful,
15
* but WITHOUT ANY WARRANTY; without even the implied warranty of
16
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
* GNU General Public License for more details.
18
*
19
* You should have received a copy of the GNU General Public License
20
* along with this program; if not, write to the Free Software
21
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22
*/
23
28
29
#ifndef PGF_STREAM_H
30
#define PGF_STREAM_H
31
32
#include "
PGFtypes.h
"
33
#include <new>
34
39
class
CPGFStream
{
40
public
:
43
CPGFStream
() {}
44
47
virtual
~CPGFStream
() {}
48
53
virtual
void
Write
(
int
*
count
,
void
*buffer)=0;
54
59
virtual
void
Read
(
int
*
count
,
void
*buffer)=0;
60
65
virtual
void
SetPos(
short
posMode, INT64
posOff
)=0;
66
70
virtual
UINT64
GetPos
()
const
=0;
71
75
virtual
bool
IsValid
()
const
=0;
76
};
77
82
class
CPGFFileStream
:
public
CPGFStream
{
83
protected
:
84
HANDLE
m_hFile
;
85
86
public
:
87
CPGFFileStream
() :
m_hFile
(0) {}
90
CPGFFileStream
(HANDLE hFile) :
m_hFile
(hFile) {}
92
HANDLE
GetHandle
() {
return
m_hFile
; }
93
94
virtual
~CPGFFileStream
() {
m_hFile
= 0; }
95
virtual
void
Write
(
int
*
count
,
void
*buffer)
THROW_
;
// throws IOException
96
virtual
void
Read
(
int
*
count
,
void
*buffer)
THROW_
;
// throws IOException
97
virtual
void
SetPos
(
short
posMode, INT64
posOff
)
THROW_
;
// throws IOException
98
virtual
UINT64
GetPos
() const
THROW_
;
// throws IOException
99
virtual
bool
IsValid
()
const
{
return
m_hFile
!= 0; }
100
};
101
106
class
CPGFMemoryStream
:
public
CPGFStream
{
107
protected
:
108
UINT8 *
m_buffer
, *
m_pos
;
109
UINT8 *
m_eos
;
110
size_t
m_size
;
111
bool
m_allocated
;
112
113
public
:
116
CPGFMemoryStream
(
size_t
size
)
THROW_
;
120
CPGFMemoryStream
(UINT8 *pBuffer,
size_t
size
)
THROW_
;
124
void
Reinitialize
(UINT8 *pBuffer,
size_t
size
)
THROW_
;
125
126
virtual
~CPGFMemoryStream
() {
127
m_pos
= 0;
128
if
(
m_allocated
) {
129
// the memory buffer has been allocated inside of CPMFmemoryStream constructor
130
delete
[]
m_buffer
;
m_buffer
= 0;
131
}
132
}
133
134
virtual
void
Write
(
int
*
count
,
void
*buffer)
THROW_
;
// throws IOException
135
virtual
void
Read
(
int
*
count
,
void
*buffer);
136
virtual
void
SetPos
(
short
posMode, INT64
posOff
)
THROW_
;
// throws IOException
137
virtual
UINT64
GetPos
()
const
{
ASSERT
(
IsValid
());
return
m_pos
-
m_buffer
; }
138
virtual
bool
IsValid
()
const
{
return
m_buffer
!= 0; }
139
141
size_t
GetSize
()
const
{
return
m_size
; }
143
const
UINT8*
GetBuffer
()
const
{
return
m_buffer
; }
145
UINT8*
GetBuffer
() {
return
m_buffer
; }
147
UINT64
GetEOS
()
const
{
ASSERT
(
IsValid
());
return
m_eos
-
m_buffer
; }
149
void
SetEOS
(UINT64 length) {
ASSERT
(
IsValid
());
m_eos
=
m_buffer
+ length; }
150
};
151
156
#ifdef _MFC_VER
157
class
CPGFMemFileStream :
public
CPGFStream
{
158
protected
:
159
CMemFile *m_memFile;
160
public
:
161
CPGFMemFileStream(CMemFile *memFile) : m_memFile(memFile) {}
162
virtual
bool
IsValid
()
const
{
return
m_memFile != NULL; }
163
virtual
~CPGFMemFileStream() {}
164
virtual
void
Write
(
int
*
count
,
void
*buffer)
THROW_
;
// throws IOException
165
virtual
void
Read
(
int
*
count
,
void
*buffer)
THROW_
;
// throws IOException
166
virtual
void
SetPos(
short
posMode, INT64 posOff)
THROW_
;
// throws IOException
167
virtual
UINT64
GetPos
() const
THROW_
;
// throws IOException
168
};
169
#endif
170
175
#if defined(WIN32) || defined(WINCE)
176
class
CPGFIStream :
public
CPGFStream
{
177
protected
:
178
IStream *m_stream;
179
public
:
180
CPGFIStream(IStream *stream) : m_stream(stream) {}
181
virtual
bool
IsValid()
const
{
return
m_stream != 0; }
182
virtual
~CPGFIStream() {}
183
virtual
void
Write
(
int
*
count
,
void
*buffer)
THROW_
;
// throws IOException
184
virtual
void
Read(
int
*
count
,
void
*buffer)
THROW_
;
// throws IOException
185
virtual
void
SetPos(
short
posMode, INT64 posOff)
THROW_
;
// throws IOException
186
virtual
UINT64 GetPos() const
THROW_
;
// throws IOException
187
IStream* GetIStream()
const
{
return
m_stream; }
188
};
189
#endif
190
191
#endif // PGF_STREAM_H
include
PGFstream.h
Generated on Sat Jan 12 2013 13:36:08 for libpgf by
1.8.3