00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkScalarTree.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 =========================================================================*/ 00047 #ifndef __vtkScalarTree_h 00048 #define __vtkScalarTree_h 00049 00050 #include "vtkObject.h" 00051 00052 class vtkCell; 00053 class vtkDataArray; 00054 class vtkDataSet; 00055 class vtkIdList; 00056 class vtkTimeStamp; 00057 00058 class VTK_FILTERING_EXPORT vtkScalarTree : public vtkObject 00059 { 00060 public: 00061 vtkTypeRevisionMacro(vtkScalarTree,vtkObject); 00062 void PrintSelf(ostream& os, vtkIndent indent); 00063 00065 00066 virtual void SetDataSet(vtkDataSet*); 00067 vtkGetObjectMacro(DataSet,vtkDataSet); 00069 00073 virtual void BuildTree() = 0; 00074 00076 virtual void Initialize() = 0; 00077 00080 virtual void InitTraversal(double scalarValue) = 0; 00081 00083 00087 virtual vtkCell *GetNextCell(vtkIdType &cellId, vtkIdList* &ptIds, 00088 vtkDataArray *cellScalars) = 0; 00090 00091 protected: 00092 vtkScalarTree(); 00093 ~vtkScalarTree(); 00094 00095 vtkDataSet *DataSet; //the dataset over which the scalar tree is built 00096 vtkDataArray *Scalars; //the scalars of the DataSet 00097 00098 vtkTimeStamp BuildTime; //time at which tree was built 00099 double ScalarValue; //current scalar value for traversal 00100 00101 virtual void ReportReferences(vtkGarbageCollector*); 00102 virtual void RemoveReferences(); 00103 00104 private: 00105 vtkScalarTree(const vtkScalarTree&); // Not implemented. 00106 void operator=(const vtkScalarTree&); // Not implemented. 00107 }; 00108 00109 #endif 00110 00111