X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=filters%2FclitkImageConvertGenericFilter.cxx;h=ca70097a39947126761f4d09e14d50e3518ba83c;hb=8abe9edbdc63a33f8fbb1f321073b762e08be9aa;hp=326f06f14f202ba3be38f2da62b03e7a9d6753a4;hpb=0b7c9b1e1215634b02cbd38d4e4ba101d6111ba8;p=clitk.git diff --git a/filters/clitkImageConvertGenericFilter.cxx b/filters/clitkImageConvertGenericFilter.cxx index 326f06f..ca70097 100644 --- a/filters/clitkImageConvertGenericFilter.cxx +++ b/filters/clitkImageConvertGenericFilter.cxx @@ -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 @@ -14,80 +14,69 @@ - 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 - * @date 05 May 2008 10:57:19 - * - * @brief - * - * - -------------------------------------------------*/ #include "clitkImageConvertGenericFilter.h" //-------------------------------------------------------------------- clitk::ImageConvertGenericFilter::ImageConvertGenericFilter(): - clitk::ImageToImageGenericFilter("ImageConvert") { + clitk::ImageToImageGenericFilter("ImageConvert") +{ mOutputPixelTypeName = "NotSpecified"; + mWarningOccur = false; + mWarning = ""; + mDisplayWarning = true; InitializeImageType<2>(); - InitializeImageType<3>(); - InitializeImageType<4>(); + InitializeImageType<3>(); + InitializeImageType<4>(); } //-------------------------------------------------------------------- //-------------------------------------------------------------------- template -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 -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 is "; - itk::ImageIOBase::Pointer h = clitk::readImageHeader(mInputFilenames[i]); - printImageHeader(h, std::cout); - std::cout << std::endl; + } else { + for(unsigned int i=0; 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(mInputFilenames); + if ((m_PixelTypeName == mOutputPixelTypeName) || (mOutputPixelTypeName == "NotSpecified")) { + // typename InputImageType::Pointer input = clitk::readImage(m_InputFilenames); typename InputImageType::Pointer input = this->template GetInput(0); - //clitk::writeImage(input, mOutputFilename, mIOVerbose); + //clitk::writeImage(input, mOutputFilename, m_IOVerbose); this->SetNextOutput(input); - } - else { -#define TRY_TYPE(TYPE) \ + } else { +#define TRY_TYPE(TYPE) \ if (IsSameType(mOutputPixelTypeName)) { UpdateWithOutputType(); 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(); - 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 -void clitk::ImageConvertGenericFilter::UpdateWithOutputType() { +void clitk::ImageConvertGenericFilter::UpdateWithOutputType() +{ // Read typename InputImageType::Pointer input =this->template GetInput(0); @@ -114,29 +104,39 @@ void clitk::ImageConvertGenericFilter::UpdateWithOutputType() { typedef typename InputImageType::PixelType PixelType; // Warning + std::ostringstream osstream; if (std::numeric_limits::is_signed) { if (!std::numeric_limits::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::is_integer) { if (std::numeric_limits::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::digits10); // DD(std::numeric_limits::digits10); if (!std::numeric_limits::is_integer) { if (std::numeric_limits::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::digits10 > std::numeric_limits::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(filter->GetOutput()); - //clitk::writeImage(filter->GetOutput(), mOutputFilename, mIOVerbose); + //clitk::writeImage(filter->GetOutput(), mOutputFilename, m_IOVerbose); } //====================================================================