X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=common%2FclitkImageToImageGenericFilter.txx;h=a13dca9f9d25eea604c2da79fc66306cc1e878d1;hb=d55f025b18f68066a52b8f33c2dc6481e82c2580;hp=0ecaf50a0618f6ae825c9fbdb867ec71b5f3042e;hpb=0083c3fb2c66812489631c7551709d121de51625;p=clitk.git diff --git a/common/clitkImageToImageGenericFilter.txx b/common/clitkImageToImageGenericFilter.txx index 0ecaf50..a13dca9 100644 --- a/common/clitkImageToImageGenericFilter.txx +++ b/common/clitkImageToImageGenericFilter.txx @@ -1,6 +1,23 @@ +/*========================================================================= + Program: vv http://www.creatis.insa-lyon.fr/rio/vv + + 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 + + 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. + + It is distributed under dual licence + + - 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)) { } @@ -9,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()); } //-------------------------------------------------------------------- @@ -38,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; @@ -58,8 +82,8 @@ std::string clitk::ImageToImageGenericFilter::GetAvailableImageTypes 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; - if ((*j).first != 1) oss << ", Components: " << (*j).first; - oss << ", Type: " << (*k).first << std::endl; + if ((*j).first != 1) oss << ", Components: " << (*j).first; + oss << ", Type: " << (*k).first << std::endl; } } }