]> Creatis software - clitk.git/blobdiff - common/clitkCommon.txx
- correct bug: string pixeltype is different in ITK and VTK
[clitk.git] / common / clitkCommon.txx
index 984ef76adab1ed8bd3a37ace2e753f36adf00e87..2441dcd2b27727bbe8cc62f43bd8b3c6018d39bb 100644 (file)
@@ -112,6 +112,9 @@ void GetSortedIndex(const std::vector<Type> & toSort, std::vector<int> & index,
 //--------------------------------------------------------------------
 template<class TPixel>
 std::string GetTypeAsString() {
+  //  http://www.vtk.org/doc/release/3/html/vtkSetGet_8h-source.html
+  // and
+  // itkImageIOBase.cxx
   const std::type_info & PixType = typeid(TPixel);
   std::string pixelName;
   if (PixType == typeid(char)) pixelName = "char"; // 'plain" char is different from signed char and unsigned char ...
@@ -128,5 +131,26 @@ std::string GetTypeAsString() {
 }
 //--------------------------------------------------------------------
 
+//--------------------------------------------------------------------
+template<class ImageType>
+void CloneImage(const typename ImageType::Pointer & input, typename ImageType::Pointer & output) {
+  output->SetRegions(input->GetLargestPossibleRegion());
+  output->SetOrigin(input->GetOrigin());
+  output->SetSpacing(input->GetSpacing());
+  output->Allocate();
+  typedef itk::ImageRegionConstIterator<ImageType> ConstIteratorType; 
+  ConstIteratorType pi(input,input->GetLargestPossibleRegion());
+  pi.GoToBegin();  
+  typedef itk::ImageRegionIterator<ImageType> IteratorType; 
+  IteratorType po(output,input->GetLargestPossibleRegion());
+  po.GoToBegin(); 
+  while (!pi.IsAtEnd()) {
+    po.Set(pi.Get());
+    ++pi;
+    ++po;
+  }
+}
+//--------------------------------------------------------------------
+
 #endif /* end #define CLITKCOMMON_TXX */