OSDN Git Service

FIRST REPOSITORY
[eos/hostdependOTHERS.git] / I686LINUX / util / I686LINUX / include / vtk / vtkDataSetSurfaceFilter.h
1 /*=========================================================================
2
3   Program:   Visualization Toolkit
4   Module:    $RCSfile: vtkDataSetSurfaceFilter.h,v $
5   Language:  C++
6   Date:      $Date: 2002/11/03 22:51:55 $
7   Version:   $Revision: 1.11 $
8
9   Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 
10   All rights reserved.
11   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
12
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.
16
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.
24
25 // .SECTION See Also
26 // vtkGeometryFilter vtkStructuredGridGeometryFilter.
27
28 #ifndef __vtkDataSetSurfaceFilter_h
29 #define __vtkDataSetSurfaceFilter_h
30
31 #include "vtkDataSetToPolyDataFilter.h"
32
33 class vtkFastGeomQuad; 
34 class vtkPointData;
35 class vtkPoints;
36
37 class VTK_GRAPHICS_EXPORT vtkDataSetSurfaceFilter : public vtkDataSetToPolyDataFilter
38 {
39 public:
40   static vtkDataSetSurfaceFilter *New();
41   vtkTypeRevisionMacro(vtkDataSetSurfaceFilter,vtkDataSetToPolyDataFilter);
42   void PrintSelf(ostream& os, vtkIndent indent);
43
44   // Description:
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);
51
52 protected:
53   vtkDataSetSurfaceFilter();
54   ~vtkDataSetSurfaceFilter();
55
56   int UseStrips;
57   
58   void ComputeInputUpdateExtents(vtkDataObject *output);
59
60   void Execute();
61   void StructuredExecute(vtkDataSet *input, int *ext);
62   void UnstructuredGridExecute();
63   void DataSetExecute();
64   void ExecuteInformation();
65
66   // Helper methods.
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);
71
72   void InitializeQuadHash(vtkIdType numPoints);
73   void DeleteQuadHash();
74   void InsertQuadInHash(vtkIdType a, vtkIdType b, vtkIdType c, vtkIdType d,
75                         vtkIdType sourceId);
76   void InsertTriInHash(vtkIdType a, vtkIdType b, vtkIdType c,
77                        vtkIdType sourceId);
78   void InitQuadHashTraversal();
79   vtkFastGeomQuad *GetNextVisibleQuadFromHash();
80
81   vtkFastGeomQuad **QuadHash;
82   vtkIdType QuadHashLength;
83   vtkFastGeomQuad *QuadHashTraversal;
84   vtkIdType QuadHashTraversalIndex;
85
86   vtkIdType *PointMap;
87   vtkIdType GetOutputPointId(vtkIdType inPtId, vtkDataSet *input, 
88                              vtkPoints *outPts, vtkPointData *outPD);
89   
90   vtkIdType NumberOfNewCells;
91   
92 private:
93   vtkDataSetSurfaceFilter(const vtkDataSetSurfaceFilter&);  // Not implemented.
94   void operator=(const vtkDataSetSurfaceFilter&);  // Not implemented.
95 };
96
97 #endif
98
99