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 "vtkDataSetAlgorithm.h" 00031 00032 class vtkHyperOctree; 00033 class vtkHyperOctreeCursor; 00034 00035 class VTK_GRAPHICS_EXPORT vtkHyperOctreeLimiter : public vtkDataSetAlgorithm 00036 { 00037 public: 00038 static vtkHyperOctreeLimiter *New(); 00039 vtkTypeMacro(vtkHyperOctreeLimiter, vtkDataSetAlgorithm); 00040 00042 int GetMaximumLevel(); 00043 00045 void SetMaximumLevel(int levels); 00046 00047 protected: 00048 vtkHyperOctreeLimiter(); 00049 ~vtkHyperOctreeLimiter(); 00050 00051 virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *); 00052 virtual int FillInputPortInformation(int port, vtkInformation *info); 00053 virtual int FillOutputPortInformation(int port, vtkInformation *info); 00054 00055 vtkHyperOctree *Input; 00056 vtkHyperOctree *Output; 00057 00058 void BuildNextCell(vtkHyperOctreeCursor *, vtkHyperOctreeCursor *, int); 00059 00060 void AddInteriorAttributes(vtkHyperOctreeCursor *, int); 00061 double MeasureCell(int); 00062 00063 int MaximumLevel; 00064 double TopSize; 00065 int Dimension; 00066 int NumChildren; 00067 double SizeAtPrunePoint; 00068 00069 double *AccumScratch; 00070 int AccumSize; 00071 00072 private: 00073 vtkHyperOctreeLimiter(const vtkHyperOctreeLimiter&); // Not implemented. 00074 void operator=(const vtkHyperOctreeLimiter&); // Not implemented. 00075 }; 00076 00077 #endif