VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkHyperOctreeLimiter.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 =========================================================================*/ 00027 #ifndef __vtkHyperOctreeLimiter_h 00028 #define __vtkHyperOctreeLimiter_h 00029 00030 #include "vtkFiltersHyperTreeModule.h" // For export macro 00031 #include "vtkDataSetAlgorithm.h" 00032 00033 class vtkHyperOctree; 00034 class vtkHyperOctreeCursor; 00035 00036 class VTKFILTERSHYPERTREE_EXPORT vtkHyperOctreeLimiter : public vtkDataSetAlgorithm 00037 { 00038 public: 00039 static vtkHyperOctreeLimiter *New(); 00040 vtkTypeMacro(vtkHyperOctreeLimiter, vtkDataSetAlgorithm); 00041 00043 int GetMaximumLevel(); 00044 00046 void SetMaximumLevel(int levels); 00047 00048 protected: 00049 vtkHyperOctreeLimiter(); 00050 ~vtkHyperOctreeLimiter(); 00051 00052 virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *); 00053 virtual int FillInputPortInformation(int port, vtkInformation *info); 00054 virtual int FillOutputPortInformation(int port, vtkInformation *info); 00055 00056 vtkHyperOctree *Input; 00057 vtkHyperOctree *Output; 00058 00059 void BuildNextCell(vtkHyperOctreeCursor *, vtkHyperOctreeCursor *, int); 00060 00061 void AddInteriorAttributes(vtkHyperOctreeCursor *, int); 00062 double MeasureCell(int); 00063 00064 int MaximumLevel; 00065 double TopSize; 00066 int Dimension; 00067 int NumChildren; 00068 double SizeAtPrunePoint; 00069 00070 double *AccumScratch; 00071 int AccumSize; 00072 00073 private: 00074 vtkHyperOctreeLimiter(const vtkHyperOctreeLimiter&); // Not implemented. 00075 void operator=(const vtkHyperOctreeLimiter&); // Not implemented. 00076 }; 00077 00078 #endif