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 "vtkImagingGeneralModule.h" // For export macro 00051 #include "vtkImageDecomposeFilter.h" 00052 00053 #define VTK_EDT_SAITO_CACHED 0 00054 #define VTK_EDT_SAITO 1 00055 00056 class VTKIMAGINGGENERAL_EXPORT vtkImageEuclideanDistance : public vtkImageDecomposeFilter 00057 { 00058 public: 00059 static vtkImageEuclideanDistance *New(); 00060 vtkTypeMacro(vtkImageEuclideanDistance,vtkImageDecomposeFilter); 00061 void PrintSelf(ostream& os, vtkIndent indent); 00062 00064 00070 int SplitExtent(int splitExt[6], int startExt[6], 00071 int num, int total); 00073 00075 00079 vtkSetMacro(Initialize, int); 00080 vtkGetMacro(Initialize, int); 00081 vtkBooleanMacro(Initialize, int); 00083 00085 00087 vtkSetMacro(ConsiderAnisotropy, int); 00088 vtkGetMacro(ConsiderAnisotropy, int); 00089 vtkBooleanMacro(ConsiderAnisotropy, int); 00091 00093 00095 vtkSetMacro(MaximumDistance, double); 00096 vtkGetMacro(MaximumDistance, double); 00098 00100 00102 vtkSetMacro(Algorithm, int); 00103 vtkGetMacro(Algorithm, int); 00104 void SetAlgorithmToSaito () 00105 { this->SetAlgorithm(VTK_EDT_SAITO); } 00106 void SetAlgorithmToSaitoCached () 00107 { this->SetAlgorithm(VTK_EDT_SAITO_CACHED); } 00109 00110 virtual int IterativeRequestData(vtkInformation*, 00111 vtkInformationVector**, 00112 vtkInformationVector*); 00113 00114 protected: 00115 vtkImageEuclideanDistance(); 00116 ~vtkImageEuclideanDistance() {} 00117 00118 double MaximumDistance; 00119 int Initialize; 00120 int ConsiderAnisotropy; 00121 int Algorithm; 00122 00123 // Replaces "EnlargeOutputUpdateExtent" 00124 virtual void AllocateOutputScalars(vtkImageData *outData, 00125 int outExt[6], 00126 vtkInformation* outInfo); 00127 00128 virtual int IterativeRequestInformation(vtkInformation* in, 00129 vtkInformation* out); 00130 virtual int IterativeRequestUpdateExtent(vtkInformation* in, 00131 vtkInformation* out); 00132 00133 private: 00134 vtkImageEuclideanDistance(const vtkImageEuclideanDistance&); // Not implemented. 00135 void operator=(const vtkImageEuclideanDistance&); // Not implemented. 00136 }; 00137 00138 #endif 00139 00140 00141 00142 00143 00144 00145 00146 00147 00148