]> Creatis software - clitk.git/blobdiff - tools/clitkImageConvertGenericFilter.h
With ITKv5, change VectorResample and VectorCast Image Filter to Resample and Cast...
[clitk.git] / tools / clitkImageConvertGenericFilter.h
index 20717144431725a5f793d061467e10f170dc61bb..a3174736ee7e878597fc143a1df88920f2fa8480 100644 (file)
@@ -1,7 +1,7 @@
 /*=========================================================================
   Program:   vv                     http://www.creatis.insa-lyon.fr/rio/vv
 
-  Authors belong to: 
+  Authors belong to:
   - University of LYON              http://www.universite-lyon.fr/
   - Léon Bérard cancer center       http://www.centreleonberard.fr
   - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
@@ -23,7 +23,7 @@
  * @author David Sarrut <David.Sarrut@creatis.insa-lyon.fr>
  * @date   05 May 2008 10:40:24
 
- * @brief  
+ * @brief
 
  ===================================================================*/
 
 
 // itk include
 #include "itkCastImageFilter.h"
+#if ( ITK_VERSION_MAJOR < 5 )
 #include "itkVectorCastImageFilter.h"
+#endif
 
 
 namespace clitk {
-  
+
   template <class TPixel>
   class ImageConvertTraits
   {
@@ -47,17 +49,17 @@ namespace clitk {
     }
   };
 
-  template < class TPixel, unsigned int Comp > 
-  class ImageConvertTraits< itk::Vector<TPixel, Comp> > 
-  { 
-  public: 
-    enum { IS_VECTOR = true }; 
+  template < class TPixel, unsigned int Comp >
+  class ImageConvertTraits< itk::Vector<TPixel, Comp> >
+  {
+  public:
+    enum { IS_VECTOR = true };
   };
 
-  class ImageConvertGenericFilter: 
+  class ImageConvertGenericFilter:
     public clitk::ImageToImageGenericFilter<ImageConvertGenericFilter> {
-    
-  public: 
+
+  public:
     // constructor - destructor
     ImageConvertGenericFilter();
 
@@ -68,23 +70,26 @@ namespace clitk {
 
     // New
     itkNewMacro(Self);
-    
+
     // Members functions
     std::string GetInputPixelTypeName() { return m_PixelTypeName; }
     std::string GetOutputPixelTypeName() { return mOutputPixelTypeName; }
     void SetOutputPixelType(std::string p) { mOutputPixelTypeName = p; }
+    void SetVV(bool b) { mVV = b; }
+    void SetNoNiiMeta(bool b) { mNoNiiMeta = b; }
     bool IsWarningOccur() { return mWarningOccur; }
     std::string & GetWarning() { return mWarning; }
     void EnableDisplayWarning(bool b) { mDisplayWarning = b; }
+    void SetCorrectNegativeSpacingFlag(bool b) { mCorrectNegativeSpacingFlag = b; }
 
     //--------------------------------------------------------------------
     // Main function called each time the filter is updated
-    template<class InputImageType>  
+    template<class InputImageType>
     void UpdateWithInputImageType();
 
     template<class PixelType, class OutputPixelType>
     void CheckTypes(std::string inType, std::string outType);
-    
+
   protected:
 
     template<unsigned int Dim> void InitializeImageType();
@@ -92,6 +97,9 @@ namespace clitk {
     std::string mWarning;
     bool mWarningOccur;
     bool mDisplayWarning;
+    bool mVV;
+    bool mNoNiiMeta;
+    bool mCorrectNegativeSpacingFlag;
 
   private:
     template <class InputImageType, bool isVector>
@@ -117,17 +125,17 @@ namespace clitk {
           else
           {
             std::string list = CreateListOfTypes<float, double>();
-            std::cerr << "Error, I don't know the vector output type '" << outputPixelType 
+            std::cerr << "Error, I don't know the vector output type '" << outputPixelType
                       << "'. " << std::endl << "Known types are " << list << "." << std::endl;
             return false;
           }
-          
+
           return true;
       }
 
     private:
-      
-      template <class OutputPixelType> 
+
+      template <class OutputPixelType>
       static void UpdateWithOutputType(ImageConvertGenericFilter& filter)
       {
         // Read
@@ -150,7 +158,7 @@ namespace clitk {
         filter.SetNextOutput<OutputImageType>(cast_filter->GetOutput());
       }
     };
-    
+
     template <class InputImageType>
     class UpdateWithSelectiveOutputType<InputImageType, true>
     {
@@ -158,7 +166,7 @@ namespace clitk {
       static bool Run(ImageConvertGenericFilter& filter, std::string outputPixelType)
       {
         /*
-        // RP: future conversions? 
+        // RP: future conversions?
         if (IsSameType<char>(outputPixelType))
           UpdateWithOutputVectorType<char>();
         else if (IsSameType<uchar>(outputPixelType))
@@ -169,7 +177,7 @@ namespace clitk {
           UpdateWithOutputVectorType<ushort>();
         else if (IsSameType<int>(outputPixelType))
           UpdateWithOutputVectorType<int>();
-        else 
+        else
           */
         if (IsSameType<float>(outputPixelType))
           UpdateWithOutputVectorType<float>(filter);
@@ -178,17 +186,17 @@ namespace clitk {
         else
         {
           std::string list = CreateListOfTypes<float, double>();
-          std::cerr << "Error, I don't know the vector output type '" << outputPixelType  
+          std::cerr << "Error, I don't know the vector output type '" << outputPixelType
                     << "'. " << std::endl << "Known types are " << list << "." << std::endl;
           return false;
         }
-        
+
         return true;
       }
-      
+
     private:
-      
-      template <class OutputPixelType> 
+
+      template <class OutputPixelType>
       static void UpdateWithOutputVectorType(ImageConvertGenericFilter& filter)
       {
         // Read
@@ -199,10 +207,14 @@ namespace clitk {
 
         // Warning
         filter.CheckTypes<PixelType, OutputPixelType>(filter.GetInputPixelTypeName(), filter.GetOutputPixelTypeName());
-        
+
         // Cast
         typedef itk::Image<itk::Vector<OutputPixelType, InputImageType::PixelType::Dimension>, InputImageType::ImageDimension> OutputImageType;
+#if ( ITK_VERSION_MAJOR < 5 )
         typedef itk::VectorCastImageFilter<InputImageType, OutputImageType> FilterType;
+#else
+        typedef itk::CastImageFilter<InputImageType, OutputImageType> FilterType;
+#endif
         typename FilterType::Pointer cast_filter = FilterType::New();
         cast_filter->SetInput(input);
         cast_filter->Update();
@@ -218,4 +230,3 @@ namespace clitk {
 } // end namespace
 
 #endif /* end #define CLITKIMAGECONVERTGENERICFILTER_H */
-