+public:
+ gdcmFile( gdcmHeader *header );
+ gdcmFile( std::string const& filename );
+
+ virtual ~gdcmFile();
+
+ /// Accessor to \ref Header
+ gdcmHeader* GetHeader() { return Header; }
+
+ int ComputeDecompressedPixelDataSizeFromHeader();
+
+ void ConvertRGBPlanesToRGBPixels( uint8_t* source, uint8_t* destination );
+ void ConvertYcBcRPlanesToRGBPixels( uint8_t* source, uint8_t* destination );
+ void ConvertReArrangeBits(
+ uint8_t* pixelZone,
+ size_t imageDataSize,
+ int numberBitsStored,
+ int numberBitsAllocated,
+ int highBitPosition ) throw ( gdcmFormatError );
+ void ConvertReorderEndianity(
+ uint8_t* pixelZone,
+ size_t imageDataSize,
+ int numberBitsStored,
+ int numberBitsAllocated,
+ bool signedPixel );
+ void ConvertDecompress12BitsTo16Bits(
+ uint8_t* pixelZone,
+ int sizeX,
+ int sizeY,
+ FILE* filePtr) throw ( gdcmFormatError);
+
+ /// Accessor to \ref ImageDataSize
+ size_t GetImageDataSize(){ return ImageDataSize; };
+
+ /// Accessor to \ref ImageDataSizeRaw
+ size_t GetImageDataSizeRaw(){ return ImageDataSizeRaw; };
+
+ uint8_t* GetImageData();
+ size_t GetImageDataIntoVector(void* destination, size_t maxSize);
+ uint8_t* GetImageDataRaw();
+ size_t GetImageDataIntoVectorRaw(void* destination, size_t maxSize);
+
+ // see also gdcmHeader::SetImageDataSize ?!?
+ bool SetImageData (uint8_t* data, size_t expectedSize);
+
+ /// \todo When the caller is aware we simply point to the data:
+ /// int SetImageDataNoCopy (void* Data, size_t ExpectedSize);
+
+ // Write pixels of ONE image on hard drive
+ // No test is made on processor "endianity"
+ // The user must call his reader correctly
+ bool WriteRawData (std::string const& fileName);
+ bool WriteDcmImplVR(std::string const& fileName);
+ bool WriteDcmExplVR(std::string const& fileName);
+ bool WriteAcr (std::string const& fileName);
+
+ // Don't look any longer for the code :
+ // It's in file gdcmParsePixels.cxx
+ bool ParsePixelData();
+
+ virtual bool SetEntryByNumber(std::string const& content,
+ uint16_t group, uint16_t element)
+ {
+ Header->SetEntryByNumber(content,group,element);
+ return true;
+ }
+
+protected:
+ bool WriteBase(std::string const& fileName, FileType type);
+