X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=common%2FclitkImageToImageGenericFilterBase.h;h=3a568c6d03924b3e3e2c90aaea7bea4af9bb06a2;hb=f05cc2cf37d7ec960b73fa9d2393d5a888e1f87a;hp=2b40e127541b11078c5d3d6ffde8f51ff6114e23;hpb=0083c3fb2c66812489631c7551709d121de51625;p=clitk.git diff --git a/common/clitkImageToImageGenericFilterBase.h b/common/clitkImageToImageGenericFilterBase.h index 2b40e12..3a568c6 100644 --- a/common/clitkImageToImageGenericFilterBase.h +++ b/common/clitkImageToImageGenericFilterBase.h @@ -1,13 +1,33 @@ +/*========================================================================= + 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 +===========================================================================**/ + #ifndef CLITKIMAGETOIMAGEGENERICFILTERBASE_H #define CLITKIMAGETOIMAGEGENERICFILTERBASE_H -#include "clitkCommon.h" + +// clitk #include "clitkImageCommon.h" #include "clitkCommonGenericFilter.h" +#include "clitkFilterBase.h" -// itk include +// itk #include -// vv include +// vv #include "vvImage.h" #include "vvFromITK.h" #include "vvToITK.h" @@ -31,19 +51,20 @@ namespace clitk { // Filters information const std::string & GetFilterName(); void SetFilterName(std::string & n); - + // Generic IO /// Returns the dimension and pixel type of the *first* input void GetInputImageDimensionAndPixelType(unsigned int& dim, std::string& pixeltype, unsigned int & components); - // File IO void SetInputFilename(const std::string & filename); void AddInputFilename(const std::string & filename); void SetInputFilenames(const std::vector & filenames); void EnableReadOnDisk(bool b); + void EnableWriteOnDisk(bool b); + void EnableWriteCompression(bool b); void SetOutputFilename(const std::string & filename); - void AddOutputFilename(const std::string & filename); + void AddOutputFilename(const std::string filename); void SetOutputFilenames(const std::vector & filenames); std::string GetOutputFilename(); void SetIOVerbose(bool b); @@ -65,8 +86,17 @@ namespace clitk { // Main function to call for using the filter. virtual bool Update() = 0; + // Get the associated filter + FilterBase * GetFilterBase() { return m_FilterBase; } + + // Indicate that the filter must stop as soon as possible (if threaded) + void DeleteLastOutputImage(); + protected: - bool mReadOnDisk; + bool m_ReadOnDisk; + bool m_WriteOnDisk; + bool m_WriteCompression; + /// Call this function to dispatch an output towards the correct sink template void SetNextOutput(typename ImageType::Pointer output); @@ -75,26 +105,41 @@ namespace clitk { template typename ImageType::Pointer GetInput(unsigned int n); - std::vector mInputFilenames; - std::list mOutputFilenames; - - bool mIOVerbose; - unsigned int mDim; - std::string mPixelTypeName; - unsigned int mNbOfComponents; - std::string mFilterName; + std::vector m_InputFilenames; + std::list m_OutputFilenames; + + bool m_IOVerbose; + unsigned int m_Dim; + std::string m_PixelTypeName; + unsigned int m_NbOfComponents; + std::string m_FilterName; - std::vector mInputVVImages; - std::vector mOutputVVImages; + std::vector m_InputVVImages; + std::vector m_OutputVVImages; void ImageTypeError(); void SetImageTypeError(); - bool mFailOnImageTypeError; + bool m_FailOnImageTypeError; + + // std::string m_LastError; + void SetFilterBase(FilterBase * f) { m_FilterBase = f; } + FilterBase * m_FilterBase; + // bool m_StopOnError; }; // end class clitk::ImageToImageGenericFilter #define ADD_VEC_IMAGE_TYPE(DIM, COMP, PT) this->mImageTypesManager.template AddNewDimensionAndPixelType(); #define ADD_IMAGE_TYPE(DIM, PT) this->mImageTypesManager.template AddNewDimensionAndPixelType(); +#define ADD_DEFAULT_IMAGE_TYPES(DIM) ADD_IMAGE_TYPE(DIM, char); \ + ADD_IMAGE_TYPE(DIM, uchar); \ + ADD_IMAGE_TYPE(DIM, short); \ + ADD_IMAGE_TYPE(DIM, ushort); \ + ADD_IMAGE_TYPE(DIM, int); \ + ADD_IMAGE_TYPE(DIM, float); \ + ADD_IMAGE_TYPE(DIM, double); +#define ADD_DEFAULT_VEC_IMAGE_TYPES ADD_VEC_IMAGE_TYPE(2,2,float); \ + ADD_VEC_IMAGE_TYPE(2,3,float); \ + ADD_VEC_IMAGE_TYPE(3,3,float); //#include "clitkImageToImageGenericFilterBase.txx"