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 vtkIncrementalPointLocator;
00070
00071 class VTK_GRAPHICS_EXPORT vtkClipDataSet : public vtkUnstructuredGridAlgorithm
00072 {
00073 public:
00074 vtkTypeMacro(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(vtkIncrementalPointLocator *locator);
00152 vtkGetObjectMacro(Locator,vtkIncrementalPointLocator);
00154
00157 void CreateDefaultLocator();
00158
00160 unsigned long GetMTime();
00161
00162 protected:
00163 vtkClipDataSet(vtkImplicitFunction *cf=NULL);
00164 ~vtkClipDataSet();
00165
00167
00168 virtual int ProcessRequest(vtkInformation*,
00169 vtkInformationVector**,
00170 vtkInformationVector*);
00172
00173 virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00174 virtual int FillInputPortInformation(int port, vtkInformation *info);
00175 vtkImplicitFunction *ClipFunction;
00176
00177 vtkIncrementalPointLocator *Locator;
00178 int InsideOut;
00179 double Value;
00180 int GenerateClipScalars;
00181
00182 int GenerateClippedOutput;
00183 double MergeTolerance;
00184
00185
00186 static void InternalProgressCallbackFunction(vtkObject*, unsigned long,
00187 void* clientdata, void*);
00188 void InternalProgressCallback(vtkAlgorithm *algorithm);
00189
00190 vtkCallbackCommand* InternalProgressObserver;
00191
00192
00193 void ClipVolume(vtkDataSet *input, vtkUnstructuredGrid *output);
00194
00195 int ClipPoints(vtkDataSet* input, vtkUnstructuredGrid* output,
00196 vtkInformationVector** inputVector);
00197
00198 bool UseValueAsOffset;
00199
00200 private:
00201 vtkClipDataSet(const vtkClipDataSet&);
00202 void operator=(const vtkClipDataSet&);
00203 };
00204
00205 #endif