1 /*=========================================================================
4 Module: $RCSfile: gdcmPixelConvert.h,v $
6 Date: $Date: 2004/10/08 17:02:53 $
7 Version: $Revision: 1.4 $
9 Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
10 l'Image). All rights reserved. See Doc/License.txt or
11 http://www.creatis.insa-lyon.fr/Public/Gdcm/License.html for details.
13 This software is distributed WITHOUT ANY WARRANTY; without even
14 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 PURPOSE. See the above copyright notices for more information.
17 =========================================================================*/
20 #ifndef GDCMPIXELCONVERT_H
21 #define GDCMPIXELCONVERTL_H
23 #include "gdcmCommon.h"
24 #include "gdcmRLEFramesInfo.h"
25 #include "gdcmException.h"
28 * \brief Utility container for gathering the various forms the pixel data
29 * migth take during the user demanded processes.
31 class GDCM_EXPORT gdcmPixelConvert {
32 friend class gdcmFile;
33 /// Pixel data represented as RGB after color interpretation
35 size_t RGBSize; //aka ImageDataSize
36 /// Pixel data after decompression and bit/byte rearrangement.
37 uint8_t* Uncompressed;
38 size_t UncompressedSize;
43 uint8_t* GetRGB() { return RGB; }
44 void SetRGBSize( size_t size ) { RGBSize = size; }
45 size_t GetRGBSize() { return RGBSize; }
48 uint8_t* GetUncompressed() { return Uncompressed; }
49 void SetUncompressedSize( size_t size ) { UncompressedSize = size; }
50 size_t GetUncompressedSize() { return UncompressedSize; }
51 void AllocateUncompressed();
54 //////////////////////////////////////////////////////////
56 bool ReadAndUncompress12Bits( FILE* filePointer,
57 size_t uncompressedSize,
59 bool ReadUncompressed( FILE* filePointer,
60 size_t uncompressedSize,
61 size_t expectedSize );
62 bool ConvertGrayAndLutToRGB( uint8_t *lutRGBA );
63 bool ReadAndUncompressRLE8Bits(FILE* fp, size_t uncompressedSize );
65 static bool UncompressRLE16BitsFromRLE8Bits(
69 uint8_t* fixMemUncompressed );
70 static bool ReadAndUncompressRLEFragment(
73 long uncompressedSegmentSize,
75 static bool gdcm_read_RLE_file(
81 gdcmRLEFramesInfo* RLEInfo,
83 static void ConvertDecompress12BitsTo16Bits(
87 FILE* filePtr) throw ( gdcmFormatError );
88 static void SwapZone(void* im, int swap, int lgr, int nb);
89 static void ConvertReorderEndianity(
93 int numberBitsAllocated,
98 //-----------------------------------------------------------------------------