VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkImageEuclideanDistance.h 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00047 #ifndef __vtkImageEuclideanDistance_h 00048 #define __vtkImageEuclideanDistance_h 00049 00050 #include "vtkImageDecomposeFilter.h" 00051 00052 #define VTK_EDT_SAITO_CACHED 0 00053 #define VTK_EDT_SAITO 1 00054 00055 class VTK_IMAGING_EXPORT vtkImageEuclideanDistance : public vtkImageDecomposeFilter 00056 { 00057 public: 00058 static vtkImageEuclideanDistance *New(); 00059 vtkTypeMacro(vtkImageEuclideanDistance,vtkImageDecomposeFilter); 00060 void PrintSelf(ostream& os, vtkIndent indent); 00061 00063 00069 int SplitExtent(int splitExt[6], int startExt[6], 00070 int num, int total); 00072 00074 00078 vtkSetMacro(Initialize, int); 00079 vtkGetMacro(Initialize, int); 00080 vtkBooleanMacro(Initialize, int); 00082 00084 00086 vtkSetMacro(ConsiderAnisotropy, int); 00087 vtkGetMacro(ConsiderAnisotropy, int); 00088 vtkBooleanMacro(ConsiderAnisotropy, int); 00090 00092 00094 vtkSetMacro(MaximumDistance, double); 00095 vtkGetMacro(MaximumDistance, double); 00097 00099 00101 vtkSetMacro(Algorithm, int); 00102 vtkGetMacro(Algorithm, int); 00103 void SetAlgorithmToSaito () 00104 { this->SetAlgorithm(VTK_EDT_SAITO); } 00105 void SetAlgorithmToSaitoCached () 00106 { this->SetAlgorithm(VTK_EDT_SAITO_CACHED); } 00108 00109 virtual int IterativeRequestData(vtkInformation*, 00110 vtkInformationVector**, 00111 vtkInformationVector*); 00112 00113 protected: 00114 vtkImageEuclideanDistance(); 00115 ~vtkImageEuclideanDistance() {} 00116 00117 double MaximumDistance; 00118 int Initialize; 00119 int ConsiderAnisotropy; 00120 int Algorithm; 00121 00122 // Replaces "EnlargeOutputUpdateExtent" 00123 virtual void AllocateOutputScalars(vtkImageData *outData); 00124 00125 virtual int IterativeRequestInformation(vtkInformation* in, 00126 vtkInformation* out); 00127 virtual int IterativeRequestUpdateExtent(vtkInformation* in, 00128 vtkInformation* out); 00129 00130 private: 00131 vtkImageEuclideanDistance(const vtkImageEuclideanDistance&); // Not implemented. 00132 void operator=(const vtkImageEuclideanDistance&); // Not implemented. 00133 }; 00134 00135 #endif 00136 00137 00138 00139 00140 00141 00142 00143 00144 00145