Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | Related Pages

djcodece.h

00001 /*
00002  *
00003  *  Copyright (C) 1997-2003, OFFIS
00004  *
00005  *  This software and supporting documentation were developed by
00006  *
00007  *    Kuratorium OFFIS e.V.
00008  *    Healthcare Information and Communication Systems
00009  *    Escherweg 2
00010  *    D-26121 Oldenburg, Germany
00011  *
00012  *  THIS SOFTWARE IS MADE AVAILABLE,  AS IS,  AND OFFIS MAKES NO  WARRANTY
00013  *  REGARDING  THE  SOFTWARE,  ITS  PERFORMANCE,  ITS  MERCHANTABILITY  OR
00014  *  FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES  OR
00015  *  ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY AND
00016  *  PERFORMANCE OF THE SOFTWARE IS WITH THE USER.
00017  *
00018  *  Module:  dcmjpeg
00019  *
00020  *  Author:  Marco Eichelberg, Norbert Olges
00021  *
00022  *  Purpose: abstract codec class for JPEG encoders.
00023  *
00024  *  Last Update:      $Author: meichel $
00025  *  Update Date:      $Date: 2003/07/04 13:26:22 $
00026  *  Source File:      $Source: /share/dicom/cvs-depot/dcmtk/dcmjpeg/include/djcodece.h,v $
00027  *  CVS/RCS Revision: $Revision: 1.3 $
00028  *  Status:           $State: Exp $
00029  *
00030  *  CVS/RCS Log at end of file
00031  *
00032  */
00033 
00034 #ifndef DJCODEC_H
00035 #define DJCODEC_H
00036 
00037 #include "osconfig.h"
00038 #include "oftypes.h"
00039 #include "dccodec.h"    /* for class DcmCodec */
00040 #include "djutils.h"    /* for enums */
00041 #include "oflist.h"
00042 #include "ofstring.h"   /* for class OFString */
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  * CVS/RCS Log
00289  * $Log: djcodece.h,v $
00290  * Revision 1.3  2003/07/04 13:26:22  meichel
00291  * Replaced forward declarations for OFString with explicit includes,
00292  *   needed when compiling with HAVE_STD_STRING
00293  *
00294  * Revision 1.2  2002/05/24 14:58:04  meichel
00295  * Moved helper methods that are useful for different compression techniques
00296  *   from module dcmjpeg to module dcmdata
00297  *
00298  * Revision 1.1  2001/11/13 15:56:16  meichel
00299  * Initial release of module dcmjpeg
00300  *
00301  *
00302  */


Generated on 26 Apr 2005 for OFFIS DCMTK Version 3.5.3 by Doxygen 1.4.2