00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00027 #ifndef __vtkHyperOctreeSurfaceFilter_h
00028 #define __vtkHyperOctreeSurfaceFilter_h
00029
00030 #include "vtkPolyDataAlgorithm.h"
00031
00032 class vtkHyperOctreeCursor;
00033 class vtkDataSetAttributes;
00034 class vtkIdTypeArray;
00035 class vtkIncrementalPointLocator;
00036
00037 class VTK_GRAPHICS_EXPORT vtkHyperOctreeSurfaceFilter : public vtkPolyDataAlgorithm
00038 {
00039 public:
00040 static vtkHyperOctreeSurfaceFilter *New();
00041 vtkTypeMacro(vtkHyperOctreeSurfaceFilter,vtkPolyDataAlgorithm);
00042 void PrintSelf(ostream& os, vtkIndent indent);
00043
00045
00048 vtkSetMacro(Merging,int);
00049 vtkGetMacro(Merging,int);
00050 vtkBooleanMacro(Merging,int);
00052
00054
00056 void SetLocator(vtkIncrementalPointLocator *locator);
00057 vtkGetObjectMacro(Locator,vtkIncrementalPointLocator);
00059
00061 unsigned long GetMTime();
00062
00064
00068 vtkSetMacro(PassThroughCellIds,int);
00069 vtkGetMacro(PassThroughCellIds,int);
00070 vtkBooleanMacro(PassThroughCellIds,int);
00072
00073 protected:
00074 vtkHyperOctreeSurfaceFilter();
00075 ~vtkHyperOctreeSurfaceFilter();
00076
00077 virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00078 virtual int FillInputPortInformation(int port, vtkInformation *info);
00079
00080 void GenerateLines(double bounds[2],
00081 vtkIdType ptIds[2]);
00082 void GenerateQuads(double bounds[4],
00083 vtkIdType ptIds[4]);
00084 void GenerateFaces(double bounds[6],
00085 vtkIdType ptIds[8],
00086 int onFace[6]);
00087
00089 void CreateDefaultLocator();
00090
00091 int Merging;
00092 vtkIncrementalPointLocator *Locator;
00093
00094
00095
00096 vtkDataSetAttributes *InputCD;
00097
00098 vtkHyperOctreeCursor *Cursor;
00099 vtkPoints *OutPts;
00100 vtkCellArray *OutCells;
00101 vtkCellData *OutputCD;
00102
00103 int PassThroughCellIds;
00104 void RecordOrigCellId(vtkIdType destIndex, vtkIdType originalId);
00105 vtkIdTypeArray *OriginalCellIds;
00106
00107 private:
00108 vtkHyperOctreeSurfaceFilter(const vtkHyperOctreeSurfaceFilter&);
00109 void operator=(const vtkHyperOctreeSurfaceFilter&);
00110 };
00111
00112 #endif