VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkHierarchicalBoxDataSet.h,v $ 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 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 //BTX 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* REFINEMENT_RATIO(); 00163 static vtkInformationIdTypeKey* NUMBER_OF_BLANKED_POINTS(); 00164 00165 //BTX 00167 00168 static vtkHierarchicalBoxDataSet* GetData(vtkInformation* info); 00169 static vtkHierarchicalBoxDataSet* GetData(vtkInformationVector* v, int i=0); 00170 //ETX 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 // Cached scalar range 00211 double ScalarRange[2]; 00212 // Time at which scalar range is computed 00213 vtkTimeStamp ScalarRangeComputeTime; 00214 00215 private: 00216 vtkHierarchicalBoxDataSet(const vtkHierarchicalBoxDataSet&); // Not implemented. 00217 void operator=(const vtkHierarchicalBoxDataSet&); // Not implemented. 00218 }; 00219 00220 #endif 00221