Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

dox/Graphics/vtkDataSetSurfaceFilter.h

Go to the documentation of this file.
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkDataSetSurfaceFilter.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 =========================================================================*/ 00030 #ifndef __vtkDataSetSurfaceFilter_h 00031 #define __vtkDataSetSurfaceFilter_h 00032 00033 #include "vtkDataSetToPolyDataFilter.h" 00034 00035 00036 class vtkPointData; 00037 class vtkPoints; 00038 //BTX 00039 // Helper structure for hashing faces. 00040 struct vtkFastGeomQuadStruct 00041 { 00042 vtkIdType p0; 00043 vtkIdType p1; 00044 vtkIdType p2; 00045 vtkIdType p3; 00046 vtkIdType SourceId; 00047 struct vtkFastGeomQuadStruct *Next; 00048 }; 00049 typedef struct vtkFastGeomQuadStruct vtkFastGeomQuad; 00050 //ETX 00051 00052 class VTK_GRAPHICS_EXPORT vtkDataSetSurfaceFilter : public vtkDataSetToPolyDataFilter 00053 { 00054 public: 00055 static vtkDataSetSurfaceFilter *New(); 00056 vtkTypeRevisionMacro(vtkDataSetSurfaceFilter,vtkDataSetToPolyDataFilter); 00057 void PrintSelf(ostream& os, vtkIndent indent); 00058 00060 00063 vtkSetMacro(UseStrips, int); 00064 vtkGetMacro(UseStrips, int); 00065 vtkBooleanMacro(UseStrips, int); 00067 00068 protected: 00069 vtkDataSetSurfaceFilter(); 00070 ~vtkDataSetSurfaceFilter(); 00071 00072 int UseStrips; 00073 00074 void ComputeInputUpdateExtents(vtkDataObject *output); 00075 00076 void Execute(); 00077 void StructuredExecute(vtkDataSet *input, int *ext); 00078 void UnstructuredGridExecute(); 00079 void DataSetExecute(); 00080 void ExecuteInformation(); 00081 00082 // Helper methods. 00083 void ExecuteFaceStrips(vtkDataSet *input, int maxFlag, int *ext, 00084 int aAxis, int bAxis, int cAxis); 00085 void ExecuteFaceQuads(vtkDataSet *input, int maxFlag, int *ext, 00086 int aAxis, int bAxis, int cAxis); 00087 00088 void InitializeQuadHash(vtkIdType numPoints); 00089 void DeleteQuadHash(); 00090 void InsertQuadInHash(vtkIdType a, vtkIdType b, vtkIdType c, vtkIdType d, 00091 vtkIdType sourceId); 00092 void InsertTriInHash(vtkIdType a, vtkIdType b, vtkIdType c, 00093 vtkIdType sourceId); 00094 void InitQuadHashTraversal(); 00095 vtkFastGeomQuad *GetNextVisibleQuadFromHash(); 00096 00097 vtkFastGeomQuad **QuadHash; 00098 vtkIdType QuadHashLength; 00099 vtkFastGeomQuad *QuadHashTraversal; 00100 vtkIdType QuadHashTraversalIndex; 00101 00102 vtkIdType *PointMap; 00103 vtkIdType GetOutputPointId(vtkIdType inPtId, vtkDataSet *input, 00104 vtkPoints *outPts, vtkPointData *outPD); 00105 00106 vtkIdType NumberOfNewCells; 00107 00108 // Better memory allocation for faces (hash) 00109 void InitFastGeomQuadAllocation(int numberOfCells); 00110 vtkFastGeomQuad* NewFastGeomQuad(); 00111 void DeleteAllFastGeomQuads(); 00112 // ----- 00113 int FastGeomQuadArrayLength; 00114 int NumberOfFastGeomQuadArrays; 00115 vtkFastGeomQuad** FastGeomQuadArrays; 00116 // These indexes allow us to find the next available face. 00117 int NextArrayIndex; 00118 int NextQuadIndex; 00119 00120 private: 00121 vtkDataSetSurfaceFilter(const vtkDataSetSurfaceFilter&); // Not implemented. 00122 void operator=(const vtkDataSetSurfaceFilter&); // Not implemented. 00123 }; 00124 00125 #endif 00126 00127