Program: vv
Module: $RCSfile: clitkImageToImageGenericFilter.txx,v $
Language: C++
- Date: $Date: 2010/01/29 08:48:42 $
- Version: $Revision: 1.1 $
+ Date: $Date: 2010/03/02 13:28:42 $
+ Version: $Revision: 1.8 $
Author : Joel Schaerer <joel.schaerer@creatis.insa-lyon.fr>
- David Sarrut <david.sarrut@creatis.insa-lyon.fr>
+ David Sarrut <david.sarrut@creatis.insa-lyon.fr>
Copyright (C) 2008
Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
=========================================================================*/
-//--------------------------------------------------------------------
-template<class ImageType>
-void clitk::ImageToImageGenericFilterBase::SetNextOutput(typename ImageType::Pointer output) {
- if (mOutputFilenames.size())
- {
- clitk::writeImage<ImageType>(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<ImageType::ImageDimension,typename ImageType::PixelType>(output));
-}
-//--------------------------------------------------------------------
+// //--------------------------------------------------------------------
+// template<class ImageType>
+// void clitk::ImageToImageGenericFilterBase::SetNextOutput(typename ImageType::Pointer output) {
+// if (mOutputFilenames.size())
+// {
+// clitk::writeImage<ImageType>(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<ImageType::ImageDimension,typename ImageType::PixelType>(output));
+// }
+// //--------------------------------------------------------------------
-//--------------------------------------------------------------------
-template<class ImageType>
-typename ImageType::Pointer clitk::ImageToImageGenericFilterBase::GetInput(unsigned int n) {
- if (mInputFilenames.size() > n) {
- return clitk::readImage<ImageType>(mInputFilenames[n], mIOVerbose);
- }
- else if (mInputVVImages.size() > n)
- return typename ImageType::Pointer(const_cast<ImageType*>(vvImageToITK<ImageType>(mInputVVImages[n]).GetPointer()));
- else
- assert(false); //No input, this shouldn't happen
-}
-//--------------------------------------------------------------------
+// //--------------------------------------------------------------------
+// template<class ImageType>
+// typename ImageType::Pointer clitk::ImageToImageGenericFilterBase::GetInput(unsigned int n) {
+// if (mInputFilenames.size() > n) {
+// return clitk::readImage<ImageType>(mInputFilenames[n], mIOVerbose);
+// }
+// else if (mInputVVImages.size() > n)
+// return typename ImageType::Pointer(const_cast<ImageType*>(vvImageToITK<ImageType>(mInputVVImages[n]).GetPointer()));
+// else
+// {
+// assert(false); //No input, this shouldn't happen
+// return typename ImageType::Pointer(NULL);
+// }
+// }
+// //--------------------------------------------------------------------
//--------------------------------------------------------------------
template<class FilterType>
-clitk::ImageToImageGenericFilter<FilterType>::ImageToImageGenericFilter(std::string filterName)
- :ImageToImageGenericFilterBase(filterName){
- // Create main function manager
- this->mImageTypesManager = new
- ImageTypesManager<FilterType>(static_cast<FilterType*>(this));
+clitk::ImageToImageGenericFilter<FilterType>::ImageToImageGenericFilter(std::string filterName) :
+ ImageToImageGenericFilterBase(filterName),
+ mImageTypesManager(static_cast<FilterType*>(this))
+{
}
//--------------------------------------------------------------------
}
// Go ! Call the right templatized function
- mImageTypesManager->DoIt(mDim, mPixelTypeName);
+ mImageTypesManager.DoIt(mDim, mNbOfComponents, mPixelTypeName);
return true;
}
//--------------------------------------------------------------------
+//--------------------------------------------------------------------
+template<class FilterType>
+bool clitk::ImageToImageGenericFilter<FilterType>::CheckImageType(unsigned int dim,unsigned int ncomp, std::string pixeltype)
+{
+ return static_cast<bool>(mImageTypesManager.mMapOfImageTypeToFunction[dim][ncomp][pixeltype]);
+}
+//--------------------------------------------------------------------
+
+
+//--------------------------------------------------------------------
+template<class FilterType>
+bool clitk::ImageToImageGenericFilter<FilterType>::CheckImageType()
+{
+ return static_cast<bool>(mImageTypesManager.mMapOfImageTypeToFunction[mDim][mNbOfComponents][mPixelTypeName]);
+}
+//--------------------------------------------------------------------
+
+
+//--------------------------------------------------------------------
+template<class FilterType>
+std::string clitk::ImageToImageGenericFilter<FilterType>::GetAvailableImageTypes() {
+ std::ostringstream oss;
+ oss << "The filter <" << mFilterName << "> manages:" << std::endl;
+
+ typedef typename ImageTypesManager<FilterType>::MapOfImageComponentsToFunctionType::const_iterator MCompItType;
+ typedef typename ImageTypesManager<FilterType>::MapOfImageDimensionToFunctionType::const_iterator MDimItType;
+ typedef typename ImageTypesManager<FilterType>::MapOfPixelTypeToFunctionType::const_iterator MPixelItType;
+ for (MDimItType i=mImageTypesManager.mMapOfImageTypeToFunction.begin();
+ i!=mImageTypesManager.mMapOfImageTypeToFunction.end();
+ 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;
+ }
+ }
+ }
+ return oss.str();
+}
+//--------------------------------------------------------------------
+