VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkHierarchicalBoxDataSet.h 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 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 //BTX 00096 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 //ETX 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 //BTX 00168 00169 static vtkHierarchicalBoxDataSet* GetData(vtkInformation* info); 00170 static vtkHierarchicalBoxDataSet* GetData(vtkInformationVector* v, int i=0); 00171 //ETX 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 // Cached scalar range 00212 double ScalarRange[2]; 00213 // Time at which scalar range is computed 00214 vtkTimeStamp ScalarRangeComputeTime; 00215 00216 private: 00217 vtkHierarchicalBoxDataSet(const vtkHierarchicalBoxDataSet&); // Not implemented. 00218 void operator=(const vtkHierarchicalBoxDataSet&); // Not implemented. 00219 }; 00220 00221 #endif 00222