00001 /* 00002 * 00003 * Copyright (C) 2002-2010, OFFIS e.V. 00004 * All rights reserved. See COPYRIGHT file for details. 00005 * 00006 * This software and supporting documentation were developed by 00007 * 00008 * OFFIS e.V. 00009 * R&D Division Health 00010 * Escherweg 2 00011 * D-26121 Oldenburg, Germany 00012 * 00013 * 00014 * Module: dcmdata 00015 * 00016 * Author: Marco Eichelberg 00017 * 00018 * Purpose: decoder codec class for RLE 00019 * 00020 * Last Update: $Author: joergr $ 00021 * Update Date: $Date: 2010-10-14 13:15:41 $ 00022 * CVS/RCS Revision: $Revision: 1.8 $ 00023 * Status: $State: Exp $ 00024 * 00025 * CVS/RCS Log at end of file 00026 * 00027 */ 00028 00029 #ifndef DCRLECCD_H 00030 #define DCRLECCD_H 00031 00032 #include "dcmtk/config/osconfig.h" 00033 #include "dcmtk/dcmdata/dccodec.h" /* for class DcmCodec */ 00034 00039 class DcmRLECodecDecoder: public DcmCodec 00040 { 00041 public: 00042 00044 DcmRLECodecDecoder(); 00045 00047 virtual ~DcmRLECodecDecoder(); 00048 00059 virtual OFCondition decode( 00060 const DcmRepresentationParameter * fromRepParam, 00061 DcmPixelSequence * pixSeq, 00062 DcmPolymorphOBOW& uncompressedPixelData, 00063 const DcmCodecParameter * cp, 00064 const DcmStack& objStack) const; 00065 00091 virtual OFCondition decodeFrame( 00092 const DcmRepresentationParameter * fromParam, 00093 DcmPixelSequence * fromPixSeq, 00094 const DcmCodecParameter * cp, 00095 DcmItem *dataset, 00096 Uint32 frameNo, 00097 Uint32& startFragment, 00098 void *buffer, 00099 Uint32 bufSize, 00100 OFString& decompressedColorModel) const; 00101 00116 virtual OFCondition encode( 00117 const Uint16 * pixelData, 00118 const Uint32 length, 00119 const DcmRepresentationParameter * toRepParam, 00120 DcmPixelSequence * & pixSeq, 00121 const DcmCodecParameter *cp, 00122 DcmStack & objStack) const; 00123 00138 virtual OFCondition encode( 00139 const E_TransferSyntax fromRepType, 00140 const DcmRepresentationParameter * fromRepParam, 00141 DcmPixelSequence * fromPixSeq, 00142 const DcmRepresentationParameter * toRepParam, 00143 DcmPixelSequence * & toPixSeq, 00144 const DcmCodecParameter * cp, 00145 DcmStack & objStack) const; 00146 00154 virtual OFBool canChangeCoding( 00155 const E_TransferSyntax oldRepType, 00156 const E_TransferSyntax newRepType) const; 00157 00171 virtual OFCondition determineDecompressedColorModel( 00172 const DcmRepresentationParameter *fromParam, 00173 DcmPixelSequence *fromPixSeq, 00174 const DcmCodecParameter *cp, 00175 DcmItem *dataset, 00176 OFString &decompressedColorModel) const; 00177 00178 private: 00179 00181 DcmRLECodecDecoder(const DcmRLECodecDecoder&); 00182 00184 DcmRLECodecDecoder& operator=(const DcmRLECodecDecoder&); 00185 }; 00186 00187 #endif 00188 00189 /* 00190 * CVS/RCS Log 00191 * $Log: dcrleccd.h,v $ 00192 * Revision 1.8 2010-10-14 13:15:41 joergr 00193 * Updated copyright header. Added reference to COPYRIGHT file. 00194 * 00195 * Revision 1.7 2010-03-01 09:08:44 uli 00196 * Removed some unnecessary include directives in the headers. 00197 * 00198 * Revision 1.6 2009-11-17 16:36:51 joergr 00199 * Added new method that allows for determining the color model of the 00200 * decompressed image. 00201 * 00202 * Revision 1.5 2009-11-04 09:58:07 uli 00203 * Switched to logging mechanism provided by the "new" oflog module 00204 * 00205 * Revision 1.4 2008-05-29 10:46:13 meichel 00206 * Implemented new method DcmPixelData::getUncompressedFrame 00207 * that permits frame-wise access to compressed and uncompressed 00208 * objects without ever loading the complete object into main memory. 00209 * For this new method to work with compressed images, all classes derived from 00210 * DcmCodec need to implement a new method decodeFrame(). For now, only 00211 * dummy implementations returning an error code have been defined. 00212 * 00213 * Revision 1.3 2005/12/08 16:28:33 meichel 00214 * Changed include path schema for all DCMTK header files 00215 * 00216 * Revision 1.2 2003/03/21 13:06:46 meichel 00217 * Minor code purifications for warnings reported by MSVC in Level 4 00218 * 00219 * Revision 1.1 2002/06/06 14:52:34 meichel 00220 * Initial release of the new RLE codec classes 00221 * and the dcmcrle/dcmdrle tools in module dcmdata 00222 * 00223 * 00224 */