/*========================================================================= Program: Insight Segmentation & Registration Toolkit Module: $RCSfile: itkInterfileImageIO.h,v $ Language: C++ Date: $Date: 2006/08/10 17:38:46 $ Version: $Revision: 1.1.1.1 $ Copyright (c) Insight Software Consortium. All rights reserved. See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notices for more information. =========================================================================*/ #ifndef __itkInterfileImageIO_h #define __itkInterfileImageIO_h #ifdef _MSC_VER #pragma warning ( disable : 4786 ) #endif #include "itkImageIOBase.h" namespace itk { /**\class InterfileImageIO \brief ImageIO object for reading and writing Interfile images * as defined in http://www.keston.com/Interfile/interfile.htm * */ class ITK_EXPORT InterfileImageIO : public ImageIOBase { public: /** Standard class typedefs. */ typedef InterfileImageIO Self; typedef ImageIOBase Superclass; typedef SmartPointer Pointer; /** Method for creation through the object factory. */ itkNewMacro(Self); /** Run-time type information (and related methods). */ itkTypeMacro(InterfileImageIO, ImageIOBase); /*-------- This part of the interface deals with reading data. ------ */ /** Determine the file type. Returns true if this ImageIO can read the * file specified. */ virtual bool CanReadFile(const char*); /** Set the spacing and diemention information for the set filename. */ virtual void ReadImageInformation(); /** Reads the data from disk into the memory buffer provided. */ virtual void Read(void* buffer); /*-------- This part of the interfaces deals with writing data. ----- */ /** Determine the file type. Returns true if this ImageIO can read the * file specified. */ virtual bool CanWriteFile(const char*); /** Writes the spacing and dimentions of the image. * Assumes SetFileName has been called with a valid file name. */ virtual void WriteImageInformation(); /** Writes the data to disk from the memory buffer provided. Make sure * that the IORegion has been set properly. */ virtual void Write(const void* buffer); protected: InterfileImageIO(); ~InterfileImageIO(); void PrintSelf(std::ostream& os, Indent indent) const; // Path to where the image data is stored. m_FileName is the path to the // Interfile header. std::string m_imageFileName; // Writes data type header tags void WriteDataType(std::ofstream& outfile); private: InterfileImageIO(const Self&); //purposely not implemented void operator=(const Self&); //purposely not implemented }; } // end namespace itk #endif // __itkInterfileImageIO_h