00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00062 #ifndef __vtkClipDataSet_h
00063 #define __vtkClipDataSet_h
00064
00065 #include "vtkUnstructuredGridAlgorithm.h"
00066
00067 class vtkCallbackCommand;
00068 class vtkImplicitFunction;
00069 class vtkPointLocator;
00070
00071 class VTK_GRAPHICS_EXPORT vtkClipDataSet : public vtkUnstructuredGridAlgorithm
00072 {
00073 public:
00074 vtkTypeRevisionMacro(vtkClipDataSet,vtkUnstructuredGridAlgorithm);
00075 void PrintSelf(ostream& os, vtkIndent indent);
00076
00079 static vtkClipDataSet *New();
00080
00082
00086 vtkSetMacro(Value,double);
00087 vtkGetMacro(Value,double);
00089
00091
00094 vtkSetMacro(UseValueAsOffset, bool);
00095 vtkGetMacro(UseValueAsOffset, bool);
00096 vtkBooleanMacro(UseValueAsOffset, bool);
00098
00100
00105 vtkSetMacro(InsideOut,int);
00106 vtkGetMacro(InsideOut,int);
00107 vtkBooleanMacro(InsideOut,int);
00109
00111
00114 virtual void SetClipFunction(vtkImplicitFunction*);
00115 vtkGetObjectMacro(ClipFunction,vtkImplicitFunction);
00117
00119
00123 vtkSetMacro(GenerateClipScalars,int);
00124 vtkGetMacro(GenerateClipScalars,int);
00125 vtkBooleanMacro(GenerateClipScalars,int);
00127
00129
00131 vtkSetMacro(GenerateClippedOutput,int);
00132 vtkGetMacro(GenerateClippedOutput,int);
00133 vtkBooleanMacro(GenerateClippedOutput,int);
00135
00137
00141 vtkSetClampMacro(MergeTolerance,double,0.0001,0.25);
00142 vtkGetMacro(MergeTolerance,double);
00144
00146 vtkUnstructuredGrid *GetClippedOutput();
00147
00149
00151 void SetLocator(vtkPointLocator *locator);
00152 vtkGetObjectMacro(Locator,vtkPointLocator);
00154
00157 void CreateDefaultLocator();
00158
00160 unsigned long GetMTime();
00161
00162 protected:
00163 vtkClipDataSet(vtkImplicitFunction *cf=NULL);
00164 ~vtkClipDataSet();
00165
00166 virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00167 virtual int FillInputPortInformation(int port, vtkInformation *info);
00168 vtkImplicitFunction *ClipFunction;
00169
00170 vtkPointLocator *Locator;
00171 int InsideOut;
00172 double Value;
00173 int GenerateClipScalars;
00174
00175 int GenerateClippedOutput;
00176 double MergeTolerance;
00177
00178
00179 static void InternalProgressCallbackFunction(vtkObject*, unsigned long,
00180 void* clientdata, void*);
00181 void InternalProgressCallback(vtkAlgorithm *algorithm);
00182
00183 vtkCallbackCommand* InternalProgressObserver;
00184
00185
00186 void ClipVolume(vtkDataSet *input, vtkUnstructuredGrid *output);
00187
00188 int ClipPoints(vtkDataSet* input, vtkUnstructuredGrid* output,
00189 vtkInformationVector** inputVector);
00190
00191 bool UseValueAsOffset;
00192
00193 private:
00194 vtkClipDataSet(const vtkClipDataSet&);
00195 void operator=(const vtkClipDataSet&);
00196 };
00197
00198 #endif