text: #define TRICE
  /*
   *
   *  Copyright (C) 1997-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:  dcmjpeg
   *
   *  Author:  Marco Eichelberg
   *
   *  Purpose: singleton class that registers decoders for all supported JPEG processes.
   *
   */
  
  #ifndef DJDECODE_H
  #define DJDECODE_H
  
  #include "dcmtk/config/osconfig.h"
  #include "dcmtk/ofstd/oftypes.h"  /* for OFBool */
  #include "dcmtk/dcmjpeg/djutils.h"
  
  class DJCodecParameter;
  class DJDecoderBaseline;
  class DJDecoderExtended;
  class DJDecoderLossless;
  class DJDecoderP14SV1;
  class DJDecoderProgressive;
  class DJDecoderSpectralSelection;
  #ifdef TRICE
  class DJDecoderJP2k;
  class DJDecoderJP2kLossLess;
  #endif
  
  /** singleton class that registers decoders for all supported JPEG processes.
   */
  class DCMTK_DCMJPEG_EXPORT DJDecoderRegistration
  {
  public:
    /** registers decoders for all supported JPEG processes.
     *  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 pPlanarConfiguration flag indicating how planar configuration
     *    of color images should be encoded upon decompression.
     *  @param predictor6WorkaroundEnable enable workaround for buggy lossless compressed images with
     *           overflow in predictor 6 for images with 16 bits/pixel
     */
    static void registerCodecs(
      E_DecompressionColorSpaceConversion pDecompressionCSConversion = EDC_photometricInterpretation,
      E_UIDCreation pCreateSOPInstanceUID = EUC_never,
      E_PlanarConfiguration pPlanarConfiguration = EPC_default,
      OFBool predictor6WorkaroundEnable = OFFalse);
  
    /** deregisters decoders.
     *  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:
  
    /// flag indicating whether the decoders are already registered.
    static OFBool registered;
  
    /// pointer to codec parameter shared by all decoders
    static DJCodecParameter *cp;
  
    /// pointer to decoder for baseline JPEG
    static DJDecoderBaseline *decbas;
  
    /// pointer to decoder for extended JPEG
    static DJDecoderExtended *decext;
  
    /// pointer to decoder for spectral selection JPEG
    static DJDecoderSpectralSelection *decsps;
  
    /// pointer to decoder for progressive JPEG
    static DJDecoderProgressive *decpro;
  
    /// pointer to decoder for lossless SV1 JPEG
    static DJDecoderP14SV1 *decsv1;
  
    /// pointer to decoder for lossless JPEG
    static DJDecoderLossless *declol;
  
  #ifdef TRICE
     /// pointer to decoder for JPEG 2K
    static DJDecoderJP2k *dec2k;
    
     /// pointer to decoder for JPEG 2K lossless
    static DJDecoderJP2kLossLess *dec2kLossLess;
  #endif
  };
  
  #endif
  