00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00026 #ifndef __vtkImageLogic_h
00027 #define __vtkImageLogic_h
00028
00029
00030
00031 #define VTK_AND 0
00032 #define VTK_OR 1
00033 #define VTK_XOR 2
00034 #define VTK_NAND 3
00035 #define VTK_NOR 4
00036 #define VTK_NOT 5
00037 #define VTK_NOP 6
00038
00039
00040
00041 #include "vtkThreadedImageAlgorithm.h"
00042
00043 class VTK_IMAGING_EXPORT vtkImageLogic : public vtkThreadedImageAlgorithm
00044 {
00045 public:
00046 static vtkImageLogic *New();
00047 vtkTypeMacro(vtkImageLogic,vtkThreadedImageAlgorithm);
00048 void PrintSelf(ostream& os, vtkIndent indent);
00049
00051
00052 vtkSetMacro(Operation,int);
00053 vtkGetMacro(Operation,int);
00054 void SetOperationToAnd() {this->SetOperation(VTK_AND);};
00055 void SetOperationToOr() {this->SetOperation(VTK_OR);};
00056 void SetOperationToXor() {this->SetOperation(VTK_XOR);};
00057 void SetOperationToNand() {this->SetOperation(VTK_NAND);};
00058 void SetOperationToNor() {this->SetOperation(VTK_NOR);};
00059 void SetOperationToNot() {this->SetOperation(VTK_NOT);};
00061
00063
00064 vtkSetMacro(OutputTrueValue, double);
00065 vtkGetMacro(OutputTrueValue, double);
00067
00069 virtual void SetInput1(vtkDataObject *input) { this->SetInput(0,input);};
00070
00072 virtual void SetInput2(vtkDataObject *input) { this->SetInput(1,input);};
00073
00074 protected:
00075 vtkImageLogic();
00076 ~vtkImageLogic() {};
00077
00078 int Operation;
00079 double OutputTrueValue;
00080
00081 void ThreadedRequestData (vtkInformation* request,
00082 vtkInformationVector** inputVector,
00083 vtkInformationVector* outputVector,
00084 vtkImageData ***inData, vtkImageData **outData,
00085 int ext[6], int id);
00086 virtual int FillInputPortInformation(int port, vtkInformation* info);
00087
00088 private:
00089 vtkImageLogic(const vtkImageLogic&);
00090 void operator=(const vtkImageLogic&);
00091 };
00092
00093 #endif
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106