dcmjpeg/include/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 4 Nov 2004 for OFFIS DCMTK Version 3.5.3 by Doxygen 1.3.8