1 /*=========================================================================
4 Module: $RCSfile: gdcmPixelConvert.h,v $
6 Date: $Date: 2004/10/08 16:27:20 $
7 Version: $Revision: 1.3 $
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"
27 * \brief Utility container for gathering the various forms the pixel data
28 * migth take during the user demanded processes.
30 class GDCM_EXPORT gdcmPixelConvert {
31 friend class gdcmFile;
32 /// Pixel data represented as RGB after color interpretation
34 size_t RGBSize; //aka ImageDataSize
35 /// Pixel data after decompression and bit/byte rearrangement.
36 uint8_t* Uncompressed;
37 size_t UncompressedSize;
42 uint8_t* GetRGB() { return RGB; }
43 void SetRGBSize( size_t size ) { RGBSize = size; }
44 size_t GetRGBSize() { return RGBSize; }
47 uint8_t* GetUncompressed() { return Uncompressed; }
48 void SetUncompressedSize( size_t size ) { UncompressedSize = size; }
49 size_t GetUncompressedSize() { return UncompressedSize; }
50 void AllocateUncompressed();
53 //////////////////////////////////////////////////////////
55 bool ReadAndUncompress12Bits( FILE* filePointer,
56 size_t uncompressedSize,
58 bool ReadUncompressed( FILE* filePointer,
59 size_t uncompressedSize,
60 size_t expectedSize );
61 bool ConvertGrayAndLutToRGB( uint8_t *lutRGBA );
62 bool ReadAndUncompressRLE8Bits(FILE* fp, size_t uncompressedSize );
63 static bool UncompressRLE16BitsFromRLE8Bits(
67 uint8_t* fixMemUncompressed );
68 static bool ReadAndUncompressRLEFragment(
71 long uncompressedSegmentSize,
73 static bool gdcm_read_RLE_file ( void* image_buffer,
78 gdcmRLEFramesInfo* RLEInfo,
86 //-----------------------------------------------------------------------------