+public:
+ gdcmFile(gdcmHeader *header);
+ gdcmFile(std::string const & filename,
+ bool exception_on_error = false,
+ bool enable_sequences = false,
+ bool skip_shadow = false);
+
+ virtual ~gdcmFile();
+
+ /// \brief returns the gdcmHeader *Header
+ inline gdcmHeader *GetHeader() { return Header;};
+
+ // For promotion (performs a deepcopy of pointed header object)
+ // TODO Swig gdcmFile(gdcmHeader* header);
+ // TODO Swig ~gdcmFile();
+
+ // On writing purposes. When instance was created through
+ // gdcmFile(std::string filename) then the filename argument MUST be
+ // different from the constructor's one (no overwriting allowed).
+ // TODO Swig int SetFileName(std::string filename);
+
+ void SetPixelDataSizeFromHeader();
+ size_t GetImageDataSize();
+ size_t GetImageDataSizeRaw();
+
+ 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
+
+ // voir gdcmHeader::SetImageDataSize ?!?
+ bool SetImageData (void * Data, size_t ExpectedSize);
+ // When the caller is aware we simply point to the data:
+ // TODO int SetImageDataNoCopy (void * Data, size_t ExpectedSize);
+
+ // Push to disk.
+ // TODO Swig int Write();
+
+ // 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();
+
+ inline virtual bool SetEntryByNumber(std::string const & content,
+ guint16 group, guint16 element)
+ {
+ GetHeader()->SetEntryByNumber(content,group,element);
+ return true; //default behavior ?
+ }
+
+
+protected:
+ bool WriteBase(std::string const & FileName, FileType type);
+