X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=common%2FclitkImageToImageGenericFilter.txx;h=a13dca9f9d25eea604c2da79fc66306cc1e878d1;hb=f05cc2cf37d7ec960b73fa9d2393d5a888e1f87a;hp=6d2a7cd32df402039a9487b4c00a27b46c5e72b0;hpb=6d21b5c535447c4e823bd41890c75f1ee5476227;p=clitk.git diff --git a/common/clitkImageToImageGenericFilter.txx b/common/clitkImageToImageGenericFilter.txx index 6d2a7cd..a13dca9 100644 --- a/common/clitkImageToImageGenericFilter.txx +++ b/common/clitkImageToImageGenericFilter.txx @@ -1,66 +1,23 @@ /*========================================================================= + Program: vv http://www.creatis.insa-lyon.fr/rio/vv - Program: vv - Module: $RCSfile: clitkImageToImageGenericFilter.txx,v $ - Language: C++ - Date: $Date: 2010/03/02 13:28:42 $ - Version: $Revision: 1.8 $ - Author : Joel Schaerer - David Sarrut + 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 - Copyright (C) 2008 - Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr - CREATIS-LRMN http://www.creatis.insa-lyon.fr + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the copyright notices for more information. - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, version 3 of the License. + It is distributed under dual licence - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - - =========================================================================*/ - -// //-------------------------------------------------------------------- -// template -// void clitk::ImageToImageGenericFilterBase::SetNextOutput(typename ImageType::Pointer output) { -// if (mOutputFilenames.size()) -// { -// clitk::writeImage(output, mOutputFilenames.front(), mIOVerbose); -// mOutputFilenames.pop_front(); -// } -// if (mInputVVImages.size()) //We assume that if a vv image is set as input, we want one as the output -// mOutputVVImages.push_back(vvImageFromITK(output)); -// } -// //-------------------------------------------------------------------- - - -// //-------------------------------------------------------------------- -// template -// typename ImageType::Pointer clitk::ImageToImageGenericFilterBase::GetInput(unsigned int n) { -// if (mInputFilenames.size() > n) { -// return clitk::readImage(mInputFilenames[n], mIOVerbose); -// } -// else if (mInputVVImages.size() > n) -// return typename ImageType::Pointer(const_cast(vvImageToITK(mInputVVImages[n]).GetPointer())); -// else -// { -// assert(false); //No input, this shouldn't happen -// return typename ImageType::Pointer(NULL); -// } -// } -// //-------------------------------------------------------------------- - - -//-------------------------------------------------------------------- + - BSD See included LICENSE.txt file + - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html +===========================================================================**/ template clitk::ImageToImageGenericFilter::ImageToImageGenericFilter(std::string filterName) : - ImageToImageGenericFilterBase(filterName), + ImageToImageGenericFilterBase(filterName), mImageTypesManager(static_cast(this)) { } @@ -69,27 +26,33 @@ clitk::ImageToImageGenericFilter::ImageToImageGenericFilter(std::str //-------------------------------------------------------------------- template -bool clitk::ImageToImageGenericFilter::Update() { - GetInputImageDimensionAndPixelType(mDim,mPixelTypeName,mNbOfComponents); - +bool clitk::ImageToImageGenericFilter::Update() +{ + GetInputImageDimensionAndPixelType(m_Dim,m_PixelTypeName,m_NbOfComponents); + // Check ImageType if (!CheckImageType()) { - if (mFailOnImageTypeError) ImageTypeError(); + if (m_FailOnImageTypeError) ImageTypeError(); else SetImageTypeError(); return false; } // Go ! Call the right templatized function - mImageTypesManager.DoIt(mDim, mNbOfComponents, mPixelTypeName); + mImageTypesManager.DoIt(m_Dim, m_NbOfComponents, m_PixelTypeName); return true; } //-------------------------------------------------------------------- //-------------------------------------------------------------------- template -bool clitk::ImageToImageGenericFilter::CheckImageType(unsigned int dim,unsigned int ncomp, std::string pixeltype) +bool clitk::ImageToImageGenericFilter::CheckImageType(unsigned int dim, unsigned int ncomp, std::string pixeltype) { - return static_cast(mImageTypesManager.mMapOfImageTypeToFunction[dim][ncomp][pixeltype]); + //SR: commented line creates an element in mMapOfImageTypeToFunction which, even if 0, is confusing, e.g. for GetAvailableImageTypes + //return static_cast(mImageTypesManager.mMapOfImageTypeToFunction[dim][ncomp][pixeltype]); + typename ImageTypesManager::MapOfImageDimensionToFunctionType &m = mImageTypesManager.mMapOfImageTypeToFunction; + return (m .find(dim) != m.end() && + m[dim] .find(ncomp) != m[dim].end() && + m[dim][ncomp].find(pixeltype) != m[dim][ncomp].end()); } //-------------------------------------------------------------------- @@ -98,17 +61,18 @@ bool clitk::ImageToImageGenericFilter::CheckImageType(unsigned int d template bool clitk::ImageToImageGenericFilter::CheckImageType() { - return static_cast(mImageTypesManager.mMapOfImageTypeToFunction[mDim][mNbOfComponents][mPixelTypeName]); + return CheckImageType(m_Dim, m_NbOfComponents, m_PixelTypeName); } //-------------------------------------------------------------------- //-------------------------------------------------------------------- template -std::string clitk::ImageToImageGenericFilter::GetAvailableImageTypes() { +std::string clitk::ImageToImageGenericFilter::GetAvailableImageTypes() +{ std::ostringstream oss; - oss << "The filter <" << mFilterName << "> manages:" << std::endl; - + oss << "The filter <" << m_FilterName << "> manages:" << std::endl; + typedef typename ImageTypesManager::MapOfImageComponentsToFunctionType::const_iterator MCompItType; typedef typename ImageTypesManager::MapOfImageDimensionToFunctionType::const_iterator MDimItType; typedef typename ImageTypesManager::MapOfPixelTypeToFunctionType::const_iterator MPixelItType; @@ -117,9 +81,9 @@ std::string clitk::ImageToImageGenericFilter::GetAvailableImageTypes i++) { for (MCompItType j=(*i).second.begin(); j!= (*i).second.end(); j++) { for (MPixelItType k=(*j).second.begin(); k!= (*j).second.end(); k++) { - oss << "Dim: " << (*i).first - << ", Components: " << (*j).first - << ", Type: " << (*k).first << std::endl; + oss << "Dim: " << (*i).first; + if ((*j).first != 1) oss << ", Components: " << (*j).first; + oss << ", Type: " << (*k).first << std::endl; } } }