+public:
+ gdcmFile( gdcmHeader *header );
+ gdcmFile( std::string const & filename );
+
+ virtual ~gdcmFile();
+
+ /// Accessor to \ref Header
+ gdcmHeader* GetHeader() { return Header; }
+
+ void SetPixelDataSizeFromHeader();
+
+
+/// \brief Returns the size (in bytes) of required memory to hold
+/// the pixel data represented in this file.
+ size_t GetImageDataSize(){ return ImageDataSize; };
+
+
+/// \brief Returns the size (in bytes) of required memory to hold
+/// the pixel data represented in this file, if user DOESN'T want
+/// to get RGB pixels image when it's stored as a PALETTE COLOR image
+/// -the (vtk) user is supposed to know how to deal with LUTs-
+ size_t GetImageDataSizeRaw(){ return ImageDataSizeRaw; };
+
+ void * GetImageData();
+ size_t GetImageDataIntoVector(void* destination, size_t maxSize);
+ void * GetImageDataRaw();
+ size_t GetImageDataIntoVectorRaw(void* destination, size_t maxSize);
+
+ // Allocates ExpectedSize bytes of memory at this->Data and copies the
+ // pointed data to it. Copying the image might look useless but
+ // the caller might destroy it's image (without knowing it: think
+ // of a complicated interface where display is done with a library
+ // e.g. VTK) before calling the Write
+
+ // see also gdcmHeader::SetImageDataSize ?!?
+ bool SetImageData (void * 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);
+