81 lines
2.2 KiB
C
81 lines
2.2 KiB
C
|
/*
|
||
|
*
|
||
|
* Copyright (C) 2002-2011, OFFIS e.V.
|
||
|
* All rights reserved. See COPYRIGHT file for details.
|
||
|
*
|
||
|
* This software and supporting documentation were developed by
|
||
|
*
|
||
|
* OFFIS e.V.
|
||
|
* R&D Division Health
|
||
|
* Escherweg 2
|
||
|
* D-26121 Oldenburg, Germany
|
||
|
*
|
||
|
*
|
||
|
* Module: dcmdata
|
||
|
*
|
||
|
* Author: Marco Eichelberg
|
||
|
*
|
||
|
* Purpose: singleton class that registers RLE decoder.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
#ifndef DCRLEDRG_H
|
||
|
#define DCRLEDRG_H
|
||
|
|
||
|
#include "dcmtk/config/osconfig.h"
|
||
|
#include "dcmtk/ofstd/oftypes.h" /* for OFBool */
|
||
|
#include "dcmtk/dcmdata/dcdefine.h"
|
||
|
|
||
|
class DcmRLECodecParameter;
|
||
|
class DcmRLECodecDecoder;
|
||
|
|
||
|
/** singleton class that registers an RLE decoder.
|
||
|
*/
|
||
|
class DCMTK_DCMDATA_EXPORT DcmRLEDecoderRegistration
|
||
|
{
|
||
|
public:
|
||
|
/** registers RLE decoder.
|
||
|
* If already registered, call is ignored unless cleanup() has
|
||
|
* been performed before.
|
||
|
* @param pCreateSOPInstanceUID flag indicating whether or not
|
||
|
* a new SOP Instance UID should be assigned upon decompression.
|
||
|
* @param pReverseDecompressionByteOrder flag indicating whether the byte order should
|
||
|
* be reversed upon decompression. Needed to correctly decode some incorrectly encoded
|
||
|
* images with more than one byte per sample.
|
||
|
*/
|
||
|
static void registerCodecs(
|
||
|
OFBool pCreateSOPInstanceUID = OFFalse,
|
||
|
OFBool pReverseDecompressionByteOrder = OFFalse);
|
||
|
|
||
|
/** deregisters decoder.
|
||
|
* Attention: Must not be called while other threads might still use
|
||
|
* the registered codecs, e.g. because they are currently decoding
|
||
|
* DICOM data sets through dcmdata.
|
||
|
*/
|
||
|
static void cleanup();
|
||
|
|
||
|
private:
|
||
|
|
||
|
/// private undefined copy constructor
|
||
|
DcmRLEDecoderRegistration(const DcmRLEDecoderRegistration&);
|
||
|
|
||
|
/// private undefined copy assignment operator
|
||
|
DcmRLEDecoderRegistration& operator=(const DcmRLEDecoderRegistration&);
|
||
|
|
||
|
/// flag indicating whether the decoder is already registered.
|
||
|
static OFBool registered;
|
||
|
|
||
|
/// pointer to codec parameter
|
||
|
static DcmRLECodecParameter *cp;
|
||
|
|
||
|
/// pointer to RLE decoder
|
||
|
static DcmRLECodecDecoder *codec;
|
||
|
|
||
|
// dummy friend declaration to prevent gcc from complaining
|
||
|
// that this class only defines private constructors and has no friends.
|
||
|
friend class DcmRLEDecoderRegistrationDummyFriend;
|
||
|
|
||
|
};
|
||
|
|
||
|
#endif
|