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 vtkTypeRevisionMacro(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* 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