00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00030
#ifndef __vtkDataSetSurfaceFilter_h
00031
#define __vtkDataSetSurfaceFilter_h
00032
00033
#include "vtkDataSetToPolyDataFilter.h"
00034
00035
00036
class vtkPointData;
00037
class vtkPoints;
00038
00039
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
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
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
00109
void InitFastGeomQuadAllocation(
int numberOfCells);
00110
vtkFastGeomQuad* NewFastGeomQuad();
00111
void DeleteAllFastGeomQuads();
00112
00113 int FastGeomQuadArrayLength;
00114 int NumberOfFastGeomQuadArrays;
00115 vtkFastGeomQuad** FastGeomQuadArrays;
00116
00117 int NextArrayIndex;
00118 int NextQuadIndex;
00119
00120
private:
00121 vtkDataSetSurfaceFilter(
const vtkDataSetSurfaceFilter&);
00122
void operator=(
const vtkDataSetSurfaceFilter&);
00123 };
00124
00125
#endif
00126
00127