Cloned library of VTK-5.0.0 with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

132 lines
4.8 KiB

/*=========================================================================
Program: Visualization Toolkit
Module: $RCSfile: vtkDataSetSurfaceFilter.h,v $
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
// .NAME vtkDataSetSurfaceFilter - Extracts outer (polygonal) surface.
// .SECTION Description
// vtkDataSetSurfaceFilter is a faster version of vtkGeometry filter, but it
// does not have an option to select bounds. It may use more memory than
// vtkGeometryFilter. It only has one option: whether to use triangle strips
// when the input type is structured.
// .SECTION See Also
// vtkGeometryFilter vtkStructuredGridGeometryFilter.
#ifndef __vtkDataSetSurfaceFilter_h
#define __vtkDataSetSurfaceFilter_h
#include "vtkPolyDataAlgorithm.h"
class vtkPointData;
class vtkPoints;
//BTX
struct vtkFastGeomQuadStruct;
typedef struct vtkFastGeomQuadStruct vtkFastGeomQuad;
//ETX
class VTK_GRAPHICS_EXPORT vtkDataSetSurfaceFilter : public vtkPolyDataAlgorithm
{
public:
static vtkDataSetSurfaceFilter *New();
vtkTypeRevisionMacro(vtkDataSetSurfaceFilter,vtkPolyDataAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent);
// Description:
// When input is structured data, this flag will generate faces with
// triangle strips. This should render faster and use less memory, but no
// cell data is copied. By default, UseStrips is Off.
vtkSetMacro(UseStrips, int);
vtkGetMacro(UseStrips, int);
vtkBooleanMacro(UseStrips, int);
// Description:
// If PieceInvariant is true, vtkDataSetSurfaceFilter requests
// 1 ghost level from input in order to remove internal surface
// that are between processes. False by default.
vtkSetMacro(PieceInvariant, int);
vtkGetMacro(PieceInvariant, int);
protected:
vtkDataSetSurfaceFilter();
~vtkDataSetSurfaceFilter();
int UseStrips;
virtual int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
virtual int FillInputPortInformation(int port, vtkInformation *info);
int StructuredExecute(vtkDataSet *input, vtkPolyData *output, int *ext,
vtkInformation *inInfo);
int UnstructuredGridExecute(vtkDataSet *input, vtkPolyData *output);
int DataSetExecute(vtkDataSet *input, vtkPolyData *output);
// Helper methods.
void ExecuteFaceStrips(vtkDataSet *input, vtkPolyData *output,
int maxFlag, int *ext,
int aAxis, int bAxis, int cAxis,
vtkInformation *inInfo);
void ExecuteFaceQuads(vtkDataSet *input, vtkPolyData *output,
int maxFlag, int *ext,
int aAxis, int bAxis, int cAxis,
vtkInformation *inInfo);
void InitializeQuadHash(vtkIdType numPoints);
void DeleteQuadHash();
void InsertQuadInHash(vtkIdType a, vtkIdType b, vtkIdType c, vtkIdType d,
vtkIdType sourceId);
void InsertTriInHash(vtkIdType a, vtkIdType b, vtkIdType c,
vtkIdType sourceId);
void InsertPentaInHash(vtkIdType a, vtkIdType b,
vtkIdType c, vtkIdType d,
vtkIdType e,
vtkIdType sourceId);
void InsertHexInHash(vtkIdType a, vtkIdType b,
vtkIdType c, vtkIdType d,
vtkIdType e, vtkIdType f,
vtkIdType sourceId);
void InitQuadHashTraversal();
vtkFastGeomQuad *GetNextVisibleQuadFromHash();
vtkFastGeomQuad **QuadHash;
vtkIdType QuadHashLength;
vtkFastGeomQuad *QuadHashTraversal;
vtkIdType QuadHashTraversalIndex;
vtkIdType *PointMap;
vtkIdType GetOutputPointId(vtkIdType inPtId, vtkDataSet *input,
vtkPoints *outPts, vtkPointData *outPD);
vtkIdType NumberOfNewCells;
// Better memory allocation for faces (hash)
void InitFastGeomQuadAllocation(int numberOfCells);
vtkFastGeomQuad* NewFastGeomQuad();
void DeleteAllFastGeomQuads();
// -----
int FastGeomQuadArrayLength;
int NumberOfFastGeomQuadArrays;
vtkFastGeomQuad** FastGeomQuadArrays;
// These indexes allow us to find the next available face.
int NextArrayIndex;
int NextQuadIndex;
int PieceInvariant;
private:
vtkDataSetSurfaceFilter(const vtkDataSetSurfaceFilter&); // Not implemented.
void operator=(const vtkDataSetSurfaceFilter&); // Not implemented.
};
#endif