00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00040 #ifndef __vtkImplicitBoolean_h
00041 #define __vtkImplicitBoolean_h
00042
00043 #include "vtkImplicitFunction.h"
00044
00045 class vtkImplicitFunctionCollection;
00046
00047 #define VTK_UNION 0
00048 #define VTK_INTERSECTION 1
00049 #define VTK_DIFFERENCE 2
00050 #define VTK_UNION_OF_MAGNITUDES 3
00051
00052 class VTK_FILTERING_EXPORT vtkImplicitBoolean : public vtkImplicitFunction
00053 {
00054 public:
00055 vtkTypeMacro(vtkImplicitBoolean,vtkImplicitFunction);
00056 void PrintSelf(ostream& os, vtkIndent indent);
00057
00059 static vtkImplicitBoolean *New();
00060
00062
00064 double EvaluateFunction(double x[3]);
00065 double EvaluateFunction(double x, double y, double z)
00066 {return this->vtkImplicitFunction::EvaluateFunction(x, y, z); } ;
00068
00070 void EvaluateGradient(double x[3], double g[3]);
00071
00073 unsigned long GetMTime();
00074
00076 void AddFunction(vtkImplicitFunction *in);
00077
00079 void RemoveFunction(vtkImplicitFunction *in);
00080
00082 vtkImplicitFunctionCollection *GetFunction() {return this->FunctionList;};
00083
00085
00086 vtkSetClampMacro(OperationType,int,VTK_UNION,VTK_UNION_OF_MAGNITUDES);
00087 vtkGetMacro(OperationType,int);
00088 void SetOperationTypeToUnion()
00089 {this->SetOperationType(VTK_UNION);};
00090 void SetOperationTypeToIntersection()
00091 {this->SetOperationType(VTK_INTERSECTION);};
00092 void SetOperationTypeToDifference()
00093 {this->SetOperationType(VTK_DIFFERENCE);};
00094 void SetOperationTypeToUnionOfMagnitudes()
00095 {this->SetOperationType(VTK_UNION_OF_MAGNITUDES);};
00096 const char *GetOperationTypeAsString();
00098
00099 protected:
00100 vtkImplicitBoolean();
00101 ~vtkImplicitBoolean();
00102
00103 vtkImplicitFunctionCollection *FunctionList;
00104
00105 int OperationType;
00106
00107 private:
00108 vtkImplicitBoolean(const vtkImplicitBoolean&);
00109 void operator=(const vtkImplicitBoolean&);
00110 };
00111
00113
00114 inline const char *vtkImplicitBoolean::GetOperationTypeAsString(void)
00115 {
00116 if ( this->OperationType == VTK_UNION )
00117 {
00118 return "Union";
00119 }
00120 else if ( this->OperationType == VTK_INTERSECTION )
00121 {
00122 return "Intersection";
00123 }
00124 else if ( this->OperationType == VTK_DIFFERENCE )
00125 {
00126 return "Difference";
00127 }
00128 else
00129 {
00130 return "UnionOfMagnitudes";
00131 }
00132 }
00134
00135 #endif
00136
00137