]> Creatis software - clitk.git/blobdiff - filters/clitkImageConvertGenericFilter.cxx
build segmentation by default as it is needed for vv
[clitk.git] / filters / clitkImageConvertGenericFilter.cxx
index 326f06f14f202ba3be38f2da62b03e7a9d6753a4..ca70097a39947126761f4d09e14d50e3518ba83c 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://oncora1.lyon.fnclcc.fr
   - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
 
   - BSD        See included LICENSE.txt file
   - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
-======================================================================-====*/
+  ======================================================================-====*/
 #ifndef CLITKIMAGECONVERTGENERICFILTER_CXX
 #define CLITKIMAGECONVERTGENERICFILTER_CXX
-/**
- -------------------------------------------------
- * @file   clitkImageConvertGenericFilter.cxx
- * @author David Sarrut <david.sarrut@creatis.insa-lyon.fr>
- * @date   05 May 2008 10:57:19
- * 
- * @brief  
- * 
- * 
- -------------------------------------------------*/
 
 #include "clitkImageConvertGenericFilter.h"
 
 //--------------------------------------------------------------------
 clitk::ImageConvertGenericFilter::ImageConvertGenericFilter():
-  clitk::ImageToImageGenericFilter<Self>("ImageConvert") {
+  clitk::ImageToImageGenericFilter<Self>("ImageConvert")
+{
   mOutputPixelTypeName = "NotSpecified";
+  mWarningOccur = false;
+  mWarning = "";
+  mDisplayWarning = true;
   InitializeImageType<2>();
-  InitializeImageType<3>();  
-  InitializeImageType<4>();  
+  InitializeImageType<3>();
+  InitializeImageType<4>();
 }
 //--------------------------------------------------------------------
 
 
 //--------------------------------------------------------------------
 template<unsigned int Dim>
-void clitk::ImageConvertGenericFilter::InitializeImageType() {      
-  ADD_IMAGE_TYPE(Dim, char);
-  ADD_IMAGE_TYPE(Dim, short);
-  ADD_IMAGE_TYPE(Dim, unsigned short);
-  ADD_IMAGE_TYPE(Dim, int);
-  ADD_IMAGE_TYPE(Dim, float);
-  ADD_IMAGE_TYPE(Dim, double);
+void clitk::ImageConvertGenericFilter::InitializeImageType()
+{
+  ADD_DEFAULT_IMAGE_TYPES(Dim);
 }
 //--------------------------------------------------------------------
 
 
 //--------------------------------------------------------------------
 template<class InputImageType>
-void clitk::ImageConvertGenericFilter::UpdateWithInputImageType() {
+void clitk::ImageConvertGenericFilter::UpdateWithInputImageType()
+{
 
   // Verbose stuff
-  if (mIOVerbose) {
-    if (mInputFilenames.size() == 1) {
-      std::cout << "Input image <" << mInputFilenames[0] << "> is ";
-      itk::ImageIOBase::Pointer header = clitk::readImageHeader(mInputFilenames[0]);
+  if (m_IOVerbose) {
+    if (m_InputFilenames.size() == 1) {
+      std::cout << "Input image <" << m_InputFilenames[0] << "> is ";
+      itk::ImageIOBase::Pointer header = clitk::readImageHeader(m_InputFilenames[0]);
       printImageHeader(header, std::cout);
       std::cout << std::endl;
-    }
-    else {
-      for(unsigned int i=0; i<mInputFilenames.size(); i++) {
-       std::cout << "Input image " << i << " <" << mInputFilenames[i] << "> is ";
-       itk::ImageIOBase::Pointer h = clitk::readImageHeader(mInputFilenames[i]);       
-       printImageHeader(h, std::cout);
-       std::cout << std::endl;
+    } else {
+      for(unsigned int i=0; i<m_InputFilenames.size(); i++) {
+        std::cout << "Input image " << i << " <" << m_InputFilenames[i] << "> is ";
+        itk::ImageIOBase::Pointer h = clitk::readImageHeader(m_InputFilenames[i]);
+        printImageHeader(h, std::cout);
+        std::cout << std::endl;
       }
     }
   }
 
 
-  if ((mPixelTypeName == mOutputPixelTypeName) || (mOutputPixelTypeName == "NotSpecified")) {
-    //    typename InputImageType::Pointer input = clitk::readImage<InputImageType>(mInputFilenames);
+  if ((m_PixelTypeName == mOutputPixelTypeName) || (mOutputPixelTypeName == "NotSpecified")) {
+    //    typename InputImageType::Pointer input = clitk::readImage<InputImageType>(m_InputFilenames);
     typename InputImageType::Pointer input = this->template GetInput<InputImageType>(0);
-    //clitk::writeImage<InputImageType>(input, mOutputFilename, mIOVerbose);
+    //clitk::writeImage<InputImageType>(input, mOutputFilename, m_IOVerbose);
     this->SetNextOutput<InputImageType>(input);
-  }
-  else {
-#define TRY_TYPE(TYPE) \
+  } else {
+#define TRY_TYPE(TYPE)                                                 \
     if (IsSameType<TYPE>(mOutputPixelTypeName)) { UpdateWithOutputType<InputImageType, TYPE>(); return; }
     TRY_TYPE(char);
-    // TRY_TYPE(signed char);
+    //    TRY_TYPE(signed char);
     TRY_TYPE(uchar);
     TRY_TYPE(short);
     TRY_TYPE(ushort);
@@ -97,16 +86,17 @@ void clitk::ImageConvertGenericFilter::UpdateWithInputImageType() {
 #undef TRY_TYPE
 
     std::string list = CreateListOfTypes<char, uchar, short, ushort, int, float, double>();
-    std::cerr << "Error, I don't know the output type '" << mOutputPixelTypeName 
-             << "'. " << std::endl << "Known types are " << list << "." << std::endl;
+    std::cerr << "Error, I don't know the output type '" << mOutputPixelTypeName
+              << "'. " << std::endl << "Known types are " << list << "." << std::endl;
     exit(0);
-  }  
+  }
 }
 //====================================================================
 
 //====================================================================
 template<class InputImageType, class OutputPixelType>
-void clitk::ImageConvertGenericFilter::UpdateWithOutputType() {
+void clitk::ImageConvertGenericFilter::UpdateWithOutputType()
+{
   // Read
   typename InputImageType::Pointer input =this->template GetInput<InputImageType>(0);
 
@@ -114,29 +104,39 @@ void clitk::ImageConvertGenericFilter::UpdateWithOutputType() {
   typedef typename InputImageType::PixelType PixelType;
 
   // Warning
+  std::ostringstream osstream;
   if (std::numeric_limits<PixelType>::is_signed) {
     if (!std::numeric_limits<OutputPixelType>::is_signed) {
-      std::cerr << "Warning, input type is signed (" << mPixelTypeName << ") while output type is not (" 
-               << mOutputPixelTypeName << "), use at your own responsability." << std::endl;
+      osstream << "Warning, input type is signed (" << m_PixelTypeName << ") while output type is not ("
+               << mOutputPixelTypeName << "), use at your own responsability." << std::endl;
+      mWarningOccur = true;
     }
   }
   if (!std::numeric_limits<PixelType>::is_integer) {
     if (std::numeric_limits<OutputPixelType>::is_integer) {
-      std::cerr << "Warning, input type is not integer (" << mPixelTypeName << ") while output type is (" 
-               << mOutputPixelTypeName << "), use at your own responsability." << std::endl;
+      osstream << "Warning, input type is not integer (" << m_PixelTypeName << ") while output type is ("
+               << mOutputPixelTypeName << "), use at your own responsability." << std::endl;
+      mWarningOccur = true;
     }
   }
   //  DD(std::numeric_limits<PixelType>::digits10);
   // DD(std::numeric_limits<OutputPixelType>::digits10);
   if (!std::numeric_limits<PixelType>::is_integer) {
     if (std::numeric_limits<OutputPixelType>::is_integer) {
-      std::cerr << "Warning, input type is not integer (" << mPixelTypeName << ") while output type is (" 
-               << mOutputPixelTypeName << "), use at your own responsability." << std::endl;
+      osstream << "Warning, input type is not integer (" << m_PixelTypeName << ") while output type is ("
+               << mOutputPixelTypeName << "), use at your own responsability." << std::endl;
+      mWarningOccur = true;
     }
   }
   if (std::numeric_limits<PixelType>::digits10 > std::numeric_limits<OutputPixelType>::digits10) {
-    std::cerr << "Warning, possible loss of precision : input type is (" << mPixelTypeName << ") while output type is (" 
-               << mOutputPixelTypeName << "), use at your own responsability." << std::endl;
+    osstream << "Warning, possible loss of precision : input type is (" << m_PixelTypeName << ") while output type is ("
+             << mOutputPixelTypeName << "), use at your own responsability." << std::endl;
+    mWarningOccur = true;
+  }
+
+  mWarning = osstream.str();
+  if (mDisplayWarning) {
+    std::cerr << mWarning;
   }
 
   // Cast
@@ -148,7 +148,7 @@ void clitk::ImageConvertGenericFilter::UpdateWithOutputType() {
 
   // Write
   SetNextOutput<OutputImageType>(filter->GetOutput());
-  //clitk::writeImage<OutputImageType>(filter->GetOutput(), mOutputFilename, mIOVerbose);
+  //clitk::writeImage<OutputImageType>(filter->GetOutput(), mOutputFilename, m_IOVerbose);
 }
 //====================================================================