00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00020 #ifndef __vtkHDF5RawImageReader_h
00021 #define __vtkHDF5RawImageReader_h
00022
00023 #include "vtkSource.h"
00024
00025
00026 class vtkCallbackCommand;
00027 class vtkDataArray;
00028 class vtkDataArraySelection;
00029 class vtkImageData;
00030 class vtkHDF5RawImageReaderDataSetsType;
00031 class vtkHDF5RawImageReaderDataSet;
00032 class vtkHDF5RawImageReader;
00033
00034 void vtkHDF5RawImageReaderAddDataSet(vtkHDF5RawImageReader* reader,
00035 vtkHDF5RawImageReaderDataSet* ds);
00036
00037
00038 class VTK_EXPORT vtkHDF5RawImageReader : public vtkSource
00039 {
00040 public:
00041 static vtkHDF5RawImageReader *New();
00042 vtkTypeRevisionMacro(vtkHDF5RawImageReader,vtkSource);
00043 void PrintSelf(ostream& os, vtkIndent indent);
00044
00046
00047 void SetOutput(vtkImageData *output);
00048 vtkImageData *GetOutput();
00049 vtkImageData *GetOutput(int idx);
00051
00053
00054 vtkSetStringMacro(FileName);
00055 vtkGetStringMacro(FileName);
00057
00059
00060 vtkSetVector3Macro(Stride, int);
00061 vtkGetVector3Macro(Stride, int);
00063
00065 virtual int CanReadFile(const char* name);
00066
00068
00070 vtkGetObjectMacro(PointDataArraySelection, vtkDataArraySelection);
00071 vtkGetObjectMacro(CellDataArraySelection, vtkDataArraySelection);
00073
00075
00076 int GetNumberOfPointArrays();
00077 int GetNumberOfCellArrays();
00079
00081
00083 const char* GetPointArrayName(int index);
00084 const char* GetCellArrayName(int index);
00086
00088
00090 int GetPointArrayStatus(const char* name);
00091 int GetCellArrayStatus(const char* name);
00092 void SetPointArrayStatus(const char* name, int status);
00093 void SetCellArrayStatus(const char* name, int status);
00095
00096 protected:
00097 vtkHDF5RawImageReader();
00098 ~vtkHDF5RawImageReader();
00099
00100 virtual void ExecuteInformation();
00101 virtual void Execute();
00102
00104
00105 char* FileName;
00106 int InformationError;
00108
00109
00110 int UpdateExtentIsWholeExtent();
00111
00112
00113 vtkHDF5RawImageReaderDataSetsType* AvailableDataSets;
00114
00115 void SetToEmptyExtent(int* extent);
00116 void ConvertDimsToExtent(int rank, const int* dims, int* extent);
00117
00118
00119 void AddDataSet(vtkHDF5RawImageReaderDataSet* ds);
00120
00121 friend void vtkHDF5RawImageReaderAddDataSet(vtkHDF5RawImageReader* reader,
00122 vtkHDF5RawImageReaderDataSet* ds);
00123
00124
00125
00126 vtkDataArraySelection* PointDataArraySelection;
00127 vtkDataArraySelection* CellDataArraySelection;
00128
00129
00130
00131 vtkCallbackCommand* SelectionObserver;
00132
00133 char** CreateStringArray(int numStrings);
00134 void DestroyStringArray(int numStrings, char** strings);
00135
00136
00137 int PointDataArrayIsEnabled(const vtkHDF5RawImageReaderDataSet* ds);
00138 int CellDataArrayIsEnabled(const vtkHDF5RawImageReaderDataSet* ds);
00139
00140
00141 void SetDataArraySelections(vtkDataArraySelection* sel);
00142
00143
00144 static void SelectionModifiedCallback(vtkObject* caller, unsigned long eid,
00145 void* clientdata, void* calldata);
00146
00147 private:
00148 int UpdateExtent[6];
00149 int WholeExtent[6];
00150 int Stride[3];
00151 int Rank;
00152 int Total[3];
00153
00154 vtkHDF5RawImageReader(const vtkHDF5RawImageReader&);
00155 void operator=(const vtkHDF5RawImageReader&);
00156 };
00157
00158 #endif