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);
00095
00097
00103 void SetDataSet(unsigned int level, unsigned int id,
00104 vtkAMRBox& box, vtkUniformGrid* dataSet);
00106
00108
00111 vtkUniformGrid* GetDataSet(unsigned int level,
00112 unsigned int id,
00113 vtkAMRBox& box);
00115
00117 vtkAMRBox GetAMRBox(vtkCompositeDataIterator* iter);
00118
00119
00120
00122
00125 vtkInformation* GetLevelMetaData(unsigned int level)
00126 { return this->GetChildMetaData(level); }
00128
00130
00131 int HasLevelMetaData(unsigned int level)
00132 { return this->HasChildMetaData(level); }
00134
00138 vtkInformation* GetMetaData(unsigned int level, unsigned int index);
00139
00141 int HasMetaData(unsigned int level, unsigned int index);
00142
00149 void SetRefinementRatio(unsigned int level, int refRatio);
00150
00152 int GetRefinementRatio(unsigned int level);
00153
00156 int GetRefinementRatio(vtkCompositeDataIterator* iter);
00157
00159 void GenerateVisibilityArrays();
00160
00161 static vtkInformationIntegerVectorKey* BOX();
00162 static vtkInformationIntegerKey* BOX_DIMENSIONALITY();
00163 static vtkInformationIntegerKey* REFINEMENT_RATIO();
00164 static vtkInformationIdTypeKey* NUMBER_OF_BLANKED_POINTS();
00165
00166
00168
00169 static vtkHierarchicalBoxDataSet* GetData(vtkInformation* info);
00170 static vtkHierarchicalBoxDataSet* GetData(vtkInformationVector* v, int i=0);
00171
00173
00175 virtual void GetScalarRange(double range[]);
00176
00178 virtual double *GetScalarRange();
00179
00181
00182 virtual vtkDataObject* GetDataSet(vtkCompositeDataIterator* iter)
00183 { return this->Superclass::GetDataSet(iter); }
00185
00187
00188 virtual vtkInformation* GetMetaData(vtkCompositeDataIterator* iter)
00189 { return this->Superclass::GetMetaData(iter); }
00191
00192
00194
00195 virtual int HasMetaData(vtkCompositeDataIterator* iter)
00196 { return this->Superclass::HasMetaData(iter); }
00198
00201 unsigned int GetFlatIndex(unsigned int level, unsigned int index);
00202
00203 protected:
00204 vtkHierarchicalBoxDataSet();
00205 ~vtkHierarchicalBoxDataSet();
00206
00209 virtual void ComputeScalarRange();
00210
00211
00212 double ScalarRange[2];
00213
00214 vtkTimeStamp ScalarRangeComputeTime;
00215
00216 private:
00217 vtkHierarchicalBoxDataSet(const vtkHierarchicalBoxDataSet&);
00218 void operator=(const vtkHierarchicalBoxDataSet&);
00219 };
00220
00221 #endif
00222