dox/Filtering/vtkImplicitBoolean.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00044 #ifndef __vtkImplicitBoolean_h
00045 #define __vtkImplicitBoolean_h
00046
00047 #include "vtkImplicitFunction.h"
00048
00049 class vtkImplicitFunctionCollection;
00050
00051 #define VTK_UNION 0
00052 #define VTK_INTERSECTION 1
00053 #define VTK_DIFFERENCE 2
00054 #define VTK_UNION_OF_MAGNITUDES 3
00055
00056 class VTK_FILTERING_EXPORT vtkImplicitBoolean : public vtkImplicitFunction
00057 {
00058 public:
00059 vtkTypeRevisionMacro(vtkImplicitBoolean,vtkImplicitFunction);
00060 void PrintSelf(ostream& os, vtkIndent indent);
00061
00063 static vtkImplicitBoolean *New();
00064
00066
00068 float EvaluateFunction(float x[3]);
00069 float EvaluateFunction(float x, float y, float z)
00070 {return this->vtkImplicitFunction::EvaluateFunction(x, y, z); } ;
00072
00074 void EvaluateGradient(float x[3], float g[3]);
00075
00077 unsigned long GetMTime();
00078
00080 void AddFunction(vtkImplicitFunction *in);
00081
00083 void RemoveFunction(vtkImplicitFunction *in);
00084
00086 vtkImplicitFunctionCollection *GetFunction() {return this->FunctionList;};
00087
00089
00090 vtkSetClampMacro(OperationType,int,VTK_UNION,VTK_UNION_OF_MAGNITUDES);
00091 vtkGetMacro(OperationType,int);
00092 void SetOperationTypeToUnion()
00093 {this->SetOperationType(VTK_UNION);};
00094 void SetOperationTypeToIntersection()
00095 {this->SetOperationType(VTK_INTERSECTION);};
00096 void SetOperationTypeToDifference()
00097 {this->SetOperationType(VTK_DIFFERENCE);};
00098 void SetOperationTypeToUnionOfMagnitudes()
00099 {this->SetOperationType(VTK_UNION_OF_MAGNITUDES);};
00100 const char *GetOperationTypeAsString();
00102
00103 protected:
00104 vtkImplicitBoolean();
00105 ~vtkImplicitBoolean();
00106
00107 vtkImplicitFunctionCollection *FunctionList;
00108
00109 int OperationType;
00110
00111 private:
00112 vtkImplicitBoolean(const vtkImplicitBoolean&);
00113 void operator=(const vtkImplicitBoolean&);
00114 };
00115
00117 inline const char *vtkImplicitBoolean::GetOperationTypeAsString(void)
00118 {
00119 if ( this->OperationType == VTK_UNION )
00120 {
00121 return "Union";
00122 }
00123 else if ( this->OperationType == VTK_INTERSECTION )
00124 {
00125 return "Intersection";
00126 }
00127 else if ( this->OperationType == VTK_DIFFERENCE )
00128 {
00129 return "Difference";
00130 }
00131 else
00132 {
00133 return "UnionOfMagnitudes";
00134 }
00135 }
00136
00137 #endif
00138
00139