00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
#ifndef DCOSTRMA_H
00035
#define DCOSTRMA_H
00036
00037
#include "osconfig.h"
00038
#include "oftypes.h"
00039
#include "ofcond.h"
00040
#include "dcxfer.h"
00041
00042
00046 class DcmConsumer
00047 {
00048
public:
00049
00051 virtual ~DcmConsumer()
00052 {
00053 }
00054
00059
virtual OFBool
good() const = 0;
00060
00065 virtual
OFCondition status() const = 0;
00066
00072 virtual OFBool isFlushed() const = 0;
00073
00081 virtual Uint32 avail() const = 0;
00082
00088 virtual Uint32 write(const
void *buf, Uint32 buflen) = 0;
00089
00095 virtual
void flush() = 0;
00096 };
00097
00098
00102 class
DcmOutputFilter: public
DcmConsumer
00103 {
00104
public:
00105
00107 virtual ~
DcmOutputFilter()
00108 {
00109 }
00110
00117
virtual void append(DcmConsumer& consumer) = 0;
00118 };
00119
00120
00124 class DcmOutputStream
00125 {
00126
public:
00127
00129
virtual ~
DcmOutputStream();
00130
00135
virtual OFBool
good()
const;
00136
00141
virtual OFCondition status()
const;
00142
00148
virtual OFBool
isFlushed()
const;
00149
00157
virtual Uint32
avail()
const;
00158
00164
virtual Uint32
write(
const void *buf, Uint32 buflen);
00165
00171
virtual void flush();
00172
00176
virtual Uint32 tell()
const;
00177
00185
virtual OFCondition installCompressionFilter(E_StreamCompression filterType);
00186
00187
protected:
00188
00195
DcmOutputStream(
DcmConsumer *initial);
00196
00197
private:
00198
00200
DcmOutputStream(
const DcmOutputStream&);
00201
00203
DcmOutputStream& operator=(
const DcmOutputStream&);
00204
00206 DcmConsumer *current_;
00207
00209 DcmOutputFilter *compressionFilter_;
00210
00212 Uint32 tell_;
00213 };
00214
00215
00216
00217
#endif
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228