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

vtkCleanPolyData.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkCleanPolyData.h,v $
00005   Language:  C++
00006 
00007   Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 
00008   All rights reserved.
00009   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00010 
00011      This software is distributed WITHOUT ANY WARRANTY; without even 
00012      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
00013      PURPOSE.  See the above copyright notice for more information.
00014 
00015 =========================================================================*/
00066 #ifndef __vtkCleanPolyData_h
00067 #define __vtkCleanPolyData_h
00068 
00069 #include "vtkPolyDataToPolyDataFilter.h"
00070 
00071 class vtkPointLocator;
00072 
00073 class VTK_GRAPHICS_EXPORT vtkCleanPolyData : public vtkPolyDataToPolyDataFilter
00074 {
00075 public:
00076   static vtkCleanPolyData *New();
00077   void PrintSelf(ostream& os, vtkIndent indent);
00078   vtkTypeRevisionMacro(vtkCleanPolyData,vtkPolyDataToPolyDataFilter);
00079 
00081 
00084   vtkSetMacro(ToleranceIsAbsolute,int);
00085   vtkBooleanMacro(ToleranceIsAbsolute,int);
00086   vtkGetMacro(ToleranceIsAbsolute,int);
00088 
00090 
00091   vtkSetClampMacro(Tolerance,float,0.0,1.0);
00092   vtkGetMacro(Tolerance,float);
00094 
00096 
00097   vtkSetClampMacro(AbsoluteTolerance,float,0.0,VTK_LARGE_FLOAT);
00098   vtkGetMacro(AbsoluteTolerance,float);
00100 
00102 
00103   vtkSetMacro(ConvertLinesToPoints,int);
00104   vtkBooleanMacro(ConvertLinesToPoints,int);
00105   vtkGetMacro(ConvertLinesToPoints,int);
00107 
00109 
00110   vtkSetMacro(ConvertPolysToLines,int);
00111   vtkBooleanMacro(ConvertPolysToLines,int);
00112   vtkGetMacro(ConvertPolysToLines,int);
00114 
00116 
00117   vtkSetMacro(ConvertStripsToPolys,int);
00118   vtkBooleanMacro(ConvertStripsToPolys,int);
00119   vtkGetMacro(ConvertStripsToPolys,int);
00121 
00123 
00127   vtkSetMacro(PointMerging,int);
00128   vtkGetMacro(PointMerging,int);
00129   vtkBooleanMacro(PointMerging,int);
00131 
00133 
00135   void SetLocator(vtkPointLocator *locator);
00136   vtkGetObjectMacro(Locator,vtkPointLocator);
00138 
00140   void CreateDefaultLocator(void);
00141 
00143   void ReleaseLocator(void);
00144 
00146   unsigned long int GetMTime();
00147 
00149   virtual void OperateOnPoint(float in[3], float out[3]);
00150 
00152   virtual void OperateOnBounds(float in[6], float out[6]);
00153 
00154   // This filter is difficult to stream.
00155   // To get invariant results, the whole input must be processed at once.
00156   // This flag allows the user to select whether strict piece invariance
00157   // is required.  By default it is on.  When off, the filter can stream,
00158   // but results may change.
00159   vtkSetMacro(PieceInvariant, int);
00160   vtkGetMacro(PieceInvariant, int);
00161   vtkBooleanMacro(PieceInvariant, int);
00162 
00163 protected:
00164   vtkCleanPolyData();
00165  ~vtkCleanPolyData();
00166 
00167   // Usual data generation method
00168   void Execute();
00169   void ExecuteInformation();
00170   virtual void ComputeInputUpdateExtents(vtkDataObject *output);
00171 
00172   int   PointMerging;
00173   float Tolerance;
00174   float AbsoluteTolerance;
00175   int ConvertLinesToPoints;
00176   int ConvertPolysToLines;
00177   int ConvertStripsToPolys;
00178   int ToleranceIsAbsolute;
00179   vtkPointLocator *Locator;
00180 
00181   int PieceInvariant;
00182 private:
00183   vtkCleanPolyData(const vtkCleanPolyData&);  // Not implemented.
00184   void operator=(const vtkCleanPolyData&);  // Not implemented.
00185 };
00186 
00187 #endif
00188 
00189