/*=========================================================================
Program: vv http://www.creatis.insa-lyon.fr/rio/vv
- Authors belong to:
+ Authors belong to:
- University of LYON http://www.universite-lyon.fr/
- Léon Bérard cancer center http://www.centreleonberard.fr
- CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr
#define CLITKGATEASCIIIMAGEIO_H
// itk include
-#include "itkImageIOBase.h"
+#include <itkImageIOBase.h>
+#include <itksys/RegularExpression.hxx>
#if defined (_MSC_VER) && (_MSC_VER < 1600)
//SR: taken from
#include <stdint.h>
#endif
-namespace clitk {
+namespace clitk
+{
- //====================================================================
- // Class for reading gate ascii Image file format
- class GateAsciiImageIO: public itk::ImageIOBase
- {
- public:
- /** Standard class typedefs. */
- typedef GateAsciiImageIO Self;
- typedef itk::ImageIOBase Superclass;
- typedef itk::SmartPointer<Self> Pointer;
- typedef signed short int PixelType;
+//====================================================================
+// Class for reading gate ascii Image file format
+class GateAsciiImageIO: public itk::ImageIOBase
+{
+public:
+ /** Standard class typedefs. */
+ typedef GateAsciiImageIO Self;
+ typedef itk::ImageIOBase Superclass;
+ typedef itk::SmartPointer<Self> Pointer;
- struct GateAsciiHeader {
- double matrix_size[3];
- int resolution[3];
- double voxel_size[3];
- int nb_value;
- };
+ struct GateAsciiHeader {
+ double matrix_size[3];
+ int resolution[3];
+ double voxel_size[3];
+ int nb_value;
+ };
- GateAsciiImageIO():Superclass() {;}
+ GateAsciiImageIO():Superclass() {}
- /** Method for creation through the object factory. */
- itkNewMacro(Self);
+ /** Method for creation through the object factory. */
+ itkNewMacro(Self);
- /** Run-time type information (and related methods). */
- itkTypeMacro(GateAsciiImageIO, ImageIOBase);
+ /** Run-time type information (and related methods). */
+ itkTypeMacro(GateAsciiImageIO, ImageIOBase);
- /*-------- This part of the interface deals with reading data. ------ */
- virtual void ReadImageInformation();
- virtual bool CanReadFile( const char* FileNameToRead );
- virtual void Read(void * buffer);
+ /*-------- This part of the interface deals with reading data. ------ */
+ virtual void ReadImageInformation();
+ virtual bool CanReadFile( const char* FileNameToRead );
+ virtual void Read(void * buffer);
- /*-------- This part of the interfaces deals with writing data. ----- */
- virtual void WriteImageInformation(bool keepOfStream) { ; }
- virtual void WriteImageInformation() { WriteImageInformation(false); }
- virtual bool CanWriteFile(const char* filename);
- virtual void Write(const void* buffer);
+ /*-------- This part of the interfaces deals with writing data. ----- */
+ virtual void WriteImageInformation();
+ virtual bool CanWriteFile(const char* filename);
+ virtual void Write(const void* buffer);
- protected:
+ virtual bool SupportsDimension(unsigned long dim);
- static bool ReadHeader(FILE* handle, GateAsciiHeader& header);
- static bool ReadLine(FILE* handle, std::string& line);
+protected:
+ static bool ReadHeader(FILE* handle, GateAsciiHeader& header);
+ static bool ReadLine(FILE* handle, std::string& line);
+ static bool FindRegularExpressionNextLine(itksys::RegularExpression ®, std::string &s, FILE* handle);
- }; // end class GateAsciiImageIO
+}; // end class GateAsciiImageIO
} // end namespace
// explicit template instantiation