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 DJCODEC_H
00035
#define DJCODEC_H
00036
00037
#include "osconfig.h"
00038
#include "oftypes.h"
00039
#include "dccodec.h"
00040
#include "djutils.h"
00041
#include "oflist.h"
00042
#include "ofstring.h"
00043
00044
class DataInterface;
00045
class DJEncoder;
00046
class DcmDataset;
00047
class DJCodecParameter;
00048
class DJDecoder;
00049
class DcmItem;
00050
class DcmPixelItem;
00051
class DicomImage;
00052
class DcmTagKey;
00053
00054
00062 class DJCodecEncoder :
public DcmCodec
00063 {
00064
public:
00065
00067
DJCodecEncoder();
00068
00070
virtual ~DJCodecEncoder();
00071
00082
virtual OFCondition decode(
00083
const DcmRepresentationParameter * fromRepParam,
00084 DcmPixelSequence * pixSeq,
00085 DcmPolymorphOBOW& uncompressedPixelData,
00086
const DcmCodecParameter * cp,
00087
const DcmStack& objStack)
const;
00088
00103
virtual OFCondition encode(
00104
const Uint16 * pixelData,
00105
const Uint32 length,
00106
const DcmRepresentationParameter * toRepParam,
00107 DcmPixelSequence * & pixSeq,
00108
const DcmCodecParameter *cp,
00109
DcmStack & objStack)
const;
00110
00125
virtual OFCondition encode(
00126
const E_TransferSyntax fromRepType,
00127
const DcmRepresentationParameter * fromRepParam,
00128 DcmPixelSequence * fromPixSeq,
00129
const DcmRepresentationParameter * toRepParam,
00130 DcmPixelSequence * & toPixSeq,
00131
const DcmCodecParameter * cp,
00132
DcmStack & objStack)
const;
00133
00141
virtual OFBool
canChangeCoding(
00142
const E_TransferSyntax oldRepType,
00143
const E_TransferSyntax newRepType)
const;
00144
00149
virtual E_TransferSyntax
supportedTransferSyntax()
const = 0;
00150
00151
protected:
00152
00157
static void appendCompressionRatio(
OFString& arg,
double ratio);
00158
00159
private:
00160
00177
virtual OFCondition encodeColorImage(
00178 OFBool YBRmode,
00179
DcmItem *dataset,
00180
const DcmRepresentationParameter * toRepParam,
00181 DcmPixelSequence * & pixSeq,
00182
const DJCodecParameter *cp,
00183
double& compressionRatio)
const;
00184
00198
virtual OFCondition encodeMonochromeImage(
00199
DcmItem *dataset,
00200
const DcmRepresentationParameter * toRepParam,
00201 DcmPixelSequence * & pixSeq,
00202
const DJCodecParameter *cp,
00203
double& compressionRatio)
const;
00204
00212
virtual OFCondition updateLossyCompressionRatio(
DcmItem *dataset,
double ratio)
const;
00213
00224
virtual OFCondition updateDerivationDescription(
00225
DcmItem *dataset,
00226
const DcmRepresentationParameter * toRepParam,
00227
const DJCodecParameter *cp,
00228 Uint8 bitsPerSample,
00229
double ratio)
const;
00230
00236
virtual OFCondition adjustOverlays(
DcmItem *dataset,
DicomImage& image)
const;
00237
00242
virtual OFBool
isLosslessProcess()
const = 0;
00243
00254
virtual void createDerivationDescription(
00255
const DcmRepresentationParameter * toRepParam,
00256
const DJCodecParameter *cp,
00257 Uint8 bitsPerSample,
00258
double ratio,
00259
OFString& derivationDescription)
const = 0;
00260
00268
virtual DJEncoder *
createEncoderInstance(
00269
const DcmRepresentationParameter * toRepParam,
00270
const DJCodecParameter *cp,
00271 Uint8 bitsPerSample)
const = 0;
00272
00281
static OFCondition correctVOIWindows(
DcmItem *dataset,
double voiOffset,
double voiFactor);
00282
00283 };
00284
00285
#endif
00286
00287
00288
00289
00290
00291
00292
00293
00294
00295
00296
00297
00298
00299
00300
00301
00302