VTK
dox/Filtering/vtkHierarchicalBoxDataSet.h
Go to the documentation of this file.
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