00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00042 #ifndef __vtkHierarchicalBoxDataSet_h
00043 #define __vtkHierarchicalBoxDataSet_h
00044
00045 #include "vtkCompositeDataSet.h"
00046
00047 class vtkAMRBox;
00048 class vtkInformationIdTypeKey;
00049 class vtkInformationIntegerKey;
00050 class vtkInformationIntegerVectorKey;
00051 class vtkUniformGrid;
00052
00053 class VTK_FILTERING_EXPORT vtkHierarchicalBoxDataSet : public vtkCompositeDataSet
00054 {
00055 public:
00056 static vtkHierarchicalBoxDataSet *New();
00057 vtkTypeMacro(vtkHierarchicalBoxDataSet,vtkCompositeDataSet);
00058 void PrintSelf(ostream& os, vtkIndent indent);
00059
00061 virtual vtkCompositeDataIterator* NewIterator();
00062
00064 virtual int GetDataObjectType() {return VTK_HIERARCHICAL_BOX_DATA_SET;}
00065
00068 void SetNumberOfLevels(unsigned int numLevels);
00069
00071 unsigned int GetNumberOfLevels();
00072
00074 void SetNumberOfDataSets(unsigned int level, unsigned int numdatasets);
00075
00077 unsigned int GetNumberOfDataSets(unsigned int level);
00078
00080
00084 virtual void SetDataSet(vtkCompositeDataIterator* iter, vtkDataObject* dataObj)
00085 { this->Superclass::SetDataSet(iter, dataObj); }
00087
00089
00092 void SetDataSet(unsigned int level, unsigned int id,
00093 int LoCorner[3], int HiCorner[3], vtkUniformGrid* dataSet);
00094
00095
00096
00097
00098
00099
00100
00101
00102 void SetDataSet(unsigned int level, unsigned int id,
00103 vtkAMRBox& box, vtkUniformGrid* dataSet);
00105
00107
00110 vtkUniformGrid* GetDataSet(unsigned int level,
00111 unsigned int id,
00112 vtkAMRBox& box);
00114
00116 vtkAMRBox GetAMRBox(vtkCompositeDataIterator* iter);
00117
00118
00119
00121
00124 vtkInformation* GetLevelMetaData(unsigned int level)
00125 { return this->GetChildMetaData(level); }
00127
00129
00130 int HasLevelMetaData(unsigned int level)
00131 { return this->HasChildMetaData(level); }
00133
00137 vtkInformation* GetMetaData(unsigned int level, unsigned int index);
00138
00140 int HasMetaData(unsigned int level, unsigned int index);
00141
00148 void SetRefinementRatio(unsigned int level, int refRatio);
00149
00151 int GetRefinementRatio(unsigned int level);
00152
00155 int GetRefinementRatio(vtkCompositeDataIterator* iter);
00156
00158 void GenerateVisibilityArrays();
00159
00160 static vtkInformationIntegerVectorKey* BOX();
00161 static vtkInformationIntegerKey* BOX_DIMENSIONALITY();
00162 static vtkInformationIntegerKey* REFINEMENT_RATIO();
00163 static vtkInformationIdTypeKey* NUMBER_OF_BLANKED_POINTS();
00164
00165
00167
00168 static vtkHierarchicalBoxDataSet* GetData(vtkInformation* info);
00169 static vtkHierarchicalBoxDataSet* GetData(vtkInformationVector* v, int i=0);
00170
00172
00174 virtual void GetScalarRange(double range[]);
00175
00177 virtual double *GetScalarRange();
00178
00180
00181 virtual vtkDataObject* GetDataSet(vtkCompositeDataIterator* iter)
00182 { return this->Superclass::GetDataSet(iter); }
00184
00186
00187 virtual vtkInformation* GetMetaData(vtkCompositeDataIterator* iter)
00188 { return this->Superclass::GetMetaData(iter); }
00190
00191
00193
00194 virtual int HasMetaData(vtkCompositeDataIterator* iter)
00195 { return this->Superclass::HasMetaData(iter); }
00197
00200 unsigned int GetFlatIndex(unsigned int level, unsigned int index);
00201
00202 protected:
00203 vtkHierarchicalBoxDataSet();
00204 ~vtkHierarchicalBoxDataSet();
00205
00208 virtual void ComputeScalarRange();
00209
00210
00211 double ScalarRange[2];
00212
00213 vtkTimeStamp ScalarRangeComputeTime;
00214
00215 private:
00216 vtkHierarchicalBoxDataSet(const vtkHierarchicalBoxDataSet&);
00217 void operator=(const vtkHierarchicalBoxDataSet&);
00218 };
00219
00220 #endif
00221