blob: 0597f58ac42f0ccade3fbae6f0481eb804d9bb08 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
/*
For general Scribus (>=1.3.2) copyright and licensing information please refer
to the COPYING file provided with the program. Following this notice may exist
a copyright and/or license notice that predates the release of Scribus 1.3.2
for which a new license (GPL+exception) is in place.
*/
#ifndef SCSTREAMFILTER_H
#define SCSTREAMFILTER_H
class QByteArray;
class QDataStream;
class ScStreamFilter
{
protected:
typedef enum
{
FilterToStream = 0,
FilterToFilter = 1
} FilterMode;
int m_writtenToStream;
FilterMode m_filterMode;
QDataStream* m_dataStream;
ScStreamFilter* m_filter;
bool writeDataInternal(const char* data, int dataLen);
public:
ScStreamFilter(QDataStream* stream);
ScStreamFilter(ScStreamFilter* filter);
virtual ~ScStreamFilter() {};
virtual bool openFilter (void);
virtual bool closeFilter(void);
virtual bool writeData(const QByteArray& data);
virtual bool writeData(const char* data, int dataLen) = 0;
int writtenToStream(void);
};
class ScNullEncodeFilter : public ScStreamFilter
{
public:
ScNullEncodeFilter(QDataStream* stream) : ScStreamFilter(stream) {};
ScNullEncodeFilter(ScStreamFilter* filter) : ScStreamFilter(filter) {};
virtual bool writeData(const char* data, int dataLen) { return writeDataInternal(data, dataLen); }
};
#endif
|