libpgf
7.21.2
PGF - Progressive Graphics File
Toggle main menu visibility
Loading...
Searching...
No Matches
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);
// throws IOException
96
virtual
void
Read
(
int
*count,
void
*buffer);
// throws IOException
97
virtual
void
SetPos
(
short
posMode, INT64 posOff);
// throws IOException
98
virtual
UINT64
GetPos
()
const
;
// 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);
117
121
CPGFMemoryStream
(UINT8 *pBuffer,
size_t
size);
122
126
void
Reinitialize
(UINT8 *pBuffer,
size_t
size);
127
128
virtual
~CPGFMemoryStream
() {
129
m_pos
= 0;
130
if
(
m_allocated
) {
131
// the memory buffer has been allocated inside of CPMFmemoryStream constructor
132
delete
[]
m_buffer
;
m_buffer
= 0;
133
}
134
}
135
136
virtual
void
Write
(
int
*count,
void
*buffer);
// throws IOException
137
virtual
void
Read
(
int
*count,
void
*buffer);
138
virtual
void
SetPos
(
short
posMode, INT64 posOff);
// throws IOException
139
virtual
UINT64
GetPos
()
const
{ ASSERT(
IsValid
());
return
m_pos
-
m_buffer
; }
140
virtual
bool
IsValid
()
const
{
return
m_buffer
!= 0; }
141
143
size_t
GetSize
()
const
{
return
m_size
; }
145
const
UINT8*
GetBuffer
()
const
{
return
m_buffer
; }
147
UINT8*
GetBuffer
() {
return
m_buffer
; }
149
UINT64
GetEOS
()
const
{ ASSERT(
IsValid
());
return
m_eos
-
m_buffer
; }
151
void
SetEOS
(UINT64 length) { ASSERT(
IsValid
());
m_eos
=
m_buffer
+ length; }
152
};
153
158
#ifdef _MFC_VER
159
class
CPGFMemFileStream :
public
CPGFStream
{
160
protected
:
161
CMemFile *m_memFile;
162
public
:
163
CPGFMemFileStream(CMemFile *memFile) : m_memFile(memFile) {}
164
virtual
bool
IsValid
()
const
{
return
m_memFile !=
nullptr
; }
165
virtual
~CPGFMemFileStream() {}
166
virtual
void
Write
(
int
*count,
void
*buffer);
// throws IOException
167
virtual
void
Read
(
int
*count,
void
*buffer);
// throws IOException
168
virtual
void
SetPos
(
short
posMode, INT64 posOff);
// throws IOException
169
virtual
UINT64
GetPos
()
const
;
// throws IOException
170
};
171
#endif
172
177
#if defined(WIN32) || defined(WINCE)
178
class
CPGFIStream :
public
CPGFStream
{
179
protected
:
180
IStream *m_stream;
181
public
:
182
CPGFIStream(IStream *stream) : m_stream(stream) { m_stream->AddRef(); }
183
virtual
bool
IsValid
()
const
{
return
m_stream != 0; }
184
virtual
~CPGFIStream() { m_stream->Release(); }
185
virtual
void
Write
(
int
*count,
void
*buffer);
// throws IOException
186
virtual
void
Read
(
int
*count,
void
*buffer);
// throws IOException
187
virtual
void
SetPos
(
short
posMode, INT64 posOff);
// throws IOException
188
virtual
UINT64
GetPos
()
const
;
// throws IOException
189
IStream* GetIStream()
const
{
return
m_stream; }
190
};
191
#endif
192
193
#endif
// PGF_STREAM_H
PGFtypes.h
PGF definitions.
CPGFFileStream::SetPos
virtual void SetPos(short posMode, INT64 posOff)
Definition
PGFstream.cpp:57
CPGFFileStream::Write
virtual void Write(int *count, void *buffer)
Definition
PGFstream.cpp:38
CPGFFileStream::m_hFile
HANDLE m_hFile
file handle
Definition
PGFstream.h:84
CPGFFileStream::Read
virtual void Read(int *count, void *buffer)
Definition
PGFstream.cpp:48
CPGFFileStream::GetHandle
HANDLE GetHandle()
Definition
PGFstream.h:92
CPGFFileStream::IsValid
virtual bool IsValid() const
Definition
PGFstream.h:99
CPGFFileStream::GetPos
virtual UINT64 GetPos() const
Definition
PGFstream.cpp:64
CPGFFileStream::CPGFFileStream
CPGFFileStream(HANDLE hFile)
Definition
PGFstream.h:90
CPGFFileStream::~CPGFFileStream
virtual ~CPGFFileStream()
Definition
PGFstream.h:94
CPGFFileStream::CPGFFileStream
CPGFFileStream()
Definition
PGFstream.h:87
CPGFMemoryStream::CPGFMemoryStream
CPGFMemoryStream(size_t size)
Definition
PGFstream.cpp:78
CPGFMemoryStream::SetEOS
void SetEOS(UINT64 length)
Definition
PGFstream.h:151
CPGFMemoryStream::SetPos
virtual void SetPos(short posMode, INT64 posOff)
Definition
PGFstream.cpp:168
CPGFMemoryStream::GetPos
virtual UINT64 GetPos() const
Definition
PGFstream.h:139
CPGFMemoryStream::GetSize
size_t GetSize() const
Definition
PGFstream.h:143
CPGFMemoryStream::Read
virtual void Read(int *count, void *buffer)
Definition
PGFstream.cpp:148
CPGFMemoryStream::IsValid
virtual bool IsValid() const
Definition
PGFstream.h:140
CPGFMemoryStream::Write
virtual void Write(int *count, void *buffer)
Definition
PGFstream.cpp:111
CPGFMemoryStream::m_size
size_t m_size
buffer size
Definition
PGFstream.h:110
CPGFMemoryStream::m_eos
UINT8 * m_eos
end of stream (first address beyond written area)
Definition
PGFstream.h:109
CPGFMemoryStream::m_pos
UINT8 * m_pos
buffer start address and current buffer address
Definition
PGFstream.h:108
CPGFMemoryStream::m_buffer
UINT8 * m_buffer
Definition
PGFstream.h:108
CPGFMemoryStream::GetBuffer
UINT8 * GetBuffer()
Definition
PGFstream.h:147
CPGFMemoryStream::GetBuffer
const UINT8 * GetBuffer() const
Definition
PGFstream.h:145
CPGFMemoryStream::~CPGFMemoryStream
virtual ~CPGFMemoryStream()
Definition
PGFstream.h:128
CPGFMemoryStream::m_allocated
bool m_allocated
indicates a new allocated buffer
Definition
PGFstream.h:111
CPGFMemoryStream::GetEOS
UINT64 GetEOS() const
Definition
PGFstream.h:149
CPGFMemoryStream::Reinitialize
void Reinitialize(UINT8 *pBuffer, size_t size)
Definition
PGFstream.cpp:102
CPGFStream
Abstract stream base class.
Definition
PGFstream.h:39
CPGFStream::Write
virtual void Write(int *count, void *buffer)=0
CPGFStream::CPGFStream
CPGFStream()
Standard constructor.
Definition
PGFstream.h:43
CPGFStream::~CPGFStream
virtual ~CPGFStream()
Standard destructor.
Definition
PGFstream.h:47
CPGFStream::SetPos
virtual void SetPos(short posMode, INT64 posOff)=0
CPGFStream::GetPos
virtual UINT64 GetPos() const =0
CPGFStream::IsValid
virtual bool IsValid() const =0
CPGFStream::Read
virtual void Read(int *count, void *buffer)=0
include
PGFstream.h
Generated by
1.17.0