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

Graphics/vtkCleanPolyData.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkCleanPolyData.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 =========================================================================*/
00062 #ifndef __vtkCleanPolyData_h
00063 #define __vtkCleanPolyData_h
00064 
00065 #include "vtkPolyDataToPolyDataFilter.h"
00066 
00067 class vtkPointLocator;
00068 
00069 class VTK_GRAPHICS_EXPORT vtkCleanPolyData : public vtkPolyDataToPolyDataFilter
00070 {
00071 public:
00072   static vtkCleanPolyData *New();
00073   void PrintSelf(ostream& os, vtkIndent indent);
00074   vtkTypeRevisionMacro(vtkCleanPolyData,vtkPolyDataToPolyDataFilter);
00075 
00077 
00080   vtkSetMacro(ToleranceIsAbsolute,int);
00081   vtkBooleanMacro(ToleranceIsAbsolute,int);
00082   vtkGetMacro(ToleranceIsAbsolute,int);
00084 
00086 
00087   vtkSetClampMacro(Tolerance,double,0.0,1.0);
00088   vtkGetMacro(Tolerance,double);
00090 
00092 
00093   vtkSetClampMacro(AbsoluteTolerance,double,0.0,VTK_DOUBLE_MAX);
00094   vtkGetMacro(AbsoluteTolerance,double);
00096 
00098 
00099   vtkSetMacro(ConvertLinesToPoints,int);
00100   vtkBooleanMacro(ConvertLinesToPoints,int);
00101   vtkGetMacro(ConvertLinesToPoints,int);
00103 
00105 
00106   vtkSetMacro(ConvertPolysToLines,int);
00107   vtkBooleanMacro(ConvertPolysToLines,int);
00108   vtkGetMacro(ConvertPolysToLines,int);
00110 
00112 
00113   vtkSetMacro(ConvertStripsToPolys,int);
00114   vtkBooleanMacro(ConvertStripsToPolys,int);
00115   vtkGetMacro(ConvertStripsToPolys,int);
00117 
00119 
00123   vtkSetMacro(PointMerging,int);
00124   vtkGetMacro(PointMerging,int);
00125   vtkBooleanMacro(PointMerging,int);
00127 
00129 
00131   void SetLocator(vtkPointLocator *locator);
00132   vtkGetObjectMacro(Locator,vtkPointLocator);
00134 
00136   void CreateDefaultLocator(void);
00137 
00139   void ReleaseLocator(void);
00140 
00142   unsigned long int GetMTime();
00143 
00145   virtual void OperateOnPoint(double in[3], double out[3]);
00146 
00148   virtual void OperateOnBounds(double in[6], double out[6]);
00149 
00150   // This filter is difficult to stream.
00151   // To get invariant results, the whole input must be processed at once.
00152   // This flag allows the user to select whether strict piece invariance
00153   // is required.  By default it is on.  When off, the filter can stream,
00154   // but results may change.
00155   vtkSetMacro(PieceInvariant, int);
00156   vtkGetMacro(PieceInvariant, int);
00157   vtkBooleanMacro(PieceInvariant, int);
00158 
00159 protected:
00160   vtkCleanPolyData();
00161  ~vtkCleanPolyData();
00162 
00163   // Usual data generation method
00164   void Execute();
00165   void ExecuteInformation();
00166   virtual void ComputeInputUpdateExtents(vtkDataObject *output);
00167 
00168   int   PointMerging;
00169   double Tolerance;
00170   double AbsoluteTolerance;
00171   int ConvertLinesToPoints;
00172   int ConvertPolysToLines;
00173   int ConvertStripsToPolys;
00174   int ToleranceIsAbsolute;
00175   vtkPointLocator *Locator;
00176 
00177   int PieceInvariant;
00178 private:
00179   vtkCleanPolyData(const vtkCleanPolyData&);  // Not implemented.
00180   void operator=(const vtkCleanPolyData&);  // Not implemented.
00181 };
00182 
00183 #endif
00184 
00185