00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00067 #ifndef __vtkMNITagPointReader_h
00068 #define __vtkMNITagPointReader_h
00069
00070 #include "vtkPolyDataAlgorithm.h"
00071 #include "vtkStdString.h"
00072
00073 class vtkPolyData;
00074 class vtkPoints;
00075 class vtkStringArray;
00076 class vtkDoubleArray;
00077 class vtkIntArray;
00078
00079 class VTK_HYBRID_EXPORT vtkMNITagPointReader : public vtkPolyDataAlgorithm
00080 {
00081 public:
00082 vtkTypeMacro(vtkMNITagPointReader,vtkPolyDataAlgorithm);
00083
00084 static vtkMNITagPointReader *New();
00085 virtual void PrintSelf(ostream& os, vtkIndent indent);
00086
00088
00089 vtkSetStringMacro(FileName);
00090 vtkGetStringMacro(FileName);
00092
00094
00095 virtual const char* GetFileExtensions() {
00096 return ".tag"; }
00098
00100
00101 virtual const char* GetDescriptiveName() {
00102 return "MNI tags"; }
00104
00106 virtual int CanReadFile(const char* name);
00107
00112 virtual int GetNumberOfVolumes();
00113
00115
00118 virtual vtkPoints *GetPoints(int port);
00119 virtual vtkPoints *GetPoints() { return this->GetPoints(0); }
00121
00125 virtual vtkStringArray *GetLabelText();
00126
00130 virtual vtkDoubleArray *GetWeights();
00131
00135 virtual vtkIntArray *GetStructureIds();
00136
00140 virtual vtkIntArray *GetPatientIds();
00141
00143 virtual const char *GetComments();
00144
00145 protected:
00146 vtkMNITagPointReader();
00147 ~vtkMNITagPointReader();
00148
00149 char *FileName;
00150 int NumberOfVolumes;
00151
00152 int LineNumber;
00153 char *Comments;
00154
00155 int ReadLine(istream &infile, vtkstd::string &linetext,
00156 vtkstd::string::iterator &pos);
00157 int ReadLineAfterComments(istream &infile, vtkstd::string &linetext,
00158 vtkstd::string::iterator &pos);
00159 int SkipWhitespace(istream &infile, vtkstd::string &linetext,
00160 vtkstd::string::iterator &pos, int nl);
00161 int ParseLeftHandSide(istream &infile, vtkstd::string &linetext,
00162 vtkstd::string::iterator &pos,
00163 vtkstd::string &identifier);
00164 int ParseStringValue(istream &infile, vtkstd::string &linetext,
00165 vtkstd::string::iterator &pos,
00166 vtkstd::string &data);
00167 int ParseIntValues(istream &infile, vtkstd::string &linetext,
00168 vtkstd::string::iterator &pos,
00169 int *values, int count);
00170 int ParseFloatValues(istream &infile, vtkstd::string &linetext,
00171 vtkstd::string::iterator &pos,
00172 double *values, int count);
00173
00174 virtual int ReadFile(vtkPolyData *output1, vtkPolyData *output2);
00175
00176 virtual int RequestData(vtkInformation* request,
00177 vtkInformationVector** inInfo,
00178 vtkInformationVector* outInfo);
00179
00180 private:
00181 vtkMNITagPointReader(const vtkMNITagPointReader&);
00182 void operator=(const vtkMNITagPointReader&);
00183
00184 };
00185
00186 #endif