1 /*=========================================================================
3 Program: Visualization Toolkit
4 Module: $RCSfile: vtkDataSetSurfaceFilter.h,v $
6 Date: $Date: 2002/11/03 22:51:55 $
7 Version: $Revision: 1.11 $
9 Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen
11 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
13 This software is distributed WITHOUT ANY WARRANTY; without even
14 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 PURPOSE. See the above copyright notice for more information.
17 =========================================================================*/
18 // .NAME vtkDataSetSurfaceFilter - Extracts outer (polygonal) surface.
19 // .SECTION Description
20 // vtkDataSetSurfaceFilter is a faster version of vtkGeometry filter, but it
21 // does not have an option to select bounds. It may use more memory than
22 // vtkGeometryFilter. It only has one option: whether to use triangle strips
23 // when the input type is structured.
26 // vtkGeometryFilter vtkStructuredGridGeometryFilter.
28 #ifndef __vtkDataSetSurfaceFilter_h
29 #define __vtkDataSetSurfaceFilter_h
31 #include "vtkDataSetToPolyDataFilter.h"
33 class vtkFastGeomQuad;
37 class VTK_GRAPHICS_EXPORT vtkDataSetSurfaceFilter : public vtkDataSetToPolyDataFilter
40 static vtkDataSetSurfaceFilter *New();
41 vtkTypeRevisionMacro(vtkDataSetSurfaceFilter,vtkDataSetToPolyDataFilter);
42 void PrintSelf(ostream& os, vtkIndent indent);
45 // When input is structured data, this flag will generate faces with
46 // triangle strips. This should render faster and use less memory, but no
47 // cell data is copied. By default, UseStrips is Off.
48 vtkSetMacro(UseStrips, int);
49 vtkGetMacro(UseStrips, int);
50 vtkBooleanMacro(UseStrips, int);
53 vtkDataSetSurfaceFilter();
54 ~vtkDataSetSurfaceFilter();
58 void ComputeInputUpdateExtents(vtkDataObject *output);
61 void StructuredExecute(vtkDataSet *input, int *ext);
62 void UnstructuredGridExecute();
63 void DataSetExecute();
64 void ExecuteInformation();
67 void ExecuteFaceStrips(vtkDataSet *input, int maxFlag, int *ext,
68 int aAxis, int bAxis, int cAxis);
69 void ExecuteFaceQuads(vtkDataSet *input, int maxFlag, int *ext,
70 int aAxis, int bAxis, int cAxis);
72 void InitializeQuadHash(vtkIdType numPoints);
73 void DeleteQuadHash();
74 void InsertQuadInHash(vtkIdType a, vtkIdType b, vtkIdType c, vtkIdType d,
76 void InsertTriInHash(vtkIdType a, vtkIdType b, vtkIdType c,
78 void InitQuadHashTraversal();
79 vtkFastGeomQuad *GetNextVisibleQuadFromHash();
81 vtkFastGeomQuad **QuadHash;
82 vtkIdType QuadHashLength;
83 vtkFastGeomQuad *QuadHashTraversal;
84 vtkIdType QuadHashTraversalIndex;
87 vtkIdType GetOutputPointId(vtkIdType inPtId, vtkDataSet *input,
88 vtkPoints *outPts, vtkPointData *outPD);
90 vtkIdType NumberOfNewCells;
93 vtkDataSetSurfaceFilter(const vtkDataSetSurfaceFilter&); // Not implemented.
94 void operator=(const vtkDataSetSurfaceFilter&); // Not implemented.