]> Creatis software - clitk.git/blobdiff - common/clitkImageToImageGenericFilterBase.h
dicom structure in cmd line
[clitk.git] / common / clitkImageToImageGenericFilterBase.h
index 26c75685eeeff380093c3f81ce813a0616b437b6..03b4f4acfa030d91b52e0804b521e06e6f30ed25 100644 (file)
@@ -3,7 +3,7 @@
 
   Authors belong to: 
   - University of LYON              http://www.universite-lyon.fr/
-  - Léon Bérard cancer center       http://oncora1.lyon.fnclcc.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
 
   - 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 <itkImage.h>
 
-// vv include
+// vv 
 #include "vvImage.h"
 #include "vvFromITK.h"
 #include "vvToITK.h"
@@ -48,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<std::string> & 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<std::string> & filenames);
     std::string GetOutputFilename();
     void SetIOVerbose(bool b);
@@ -82,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<class ImageType> 
     void SetNextOutput(typename ImageType::Pointer output);
@@ -92,26 +105,38 @@ namespace clitk {
     template<class ImageType> 
     typename ImageType::Pointer GetInput(unsigned int n);
 
-    std::vector<std::string> mInputFilenames;
-    std::list<std::string> mOutputFilenames;
-
-    bool mIOVerbose;
-    unsigned int mDim;
-    std::string mPixelTypeName;
-    unsigned int mNbOfComponents;
-    std::string mFilterName;
+    std::vector<std::string> m_InputFilenames;
+    std::list<std::string> m_OutputFilenames;
+    
+    bool m_IOVerbose;
+    unsigned int m_Dim;
+    std::string m_PixelTypeName;
+    unsigned int m_NbOfComponents;
+    std::string m_FilterName;
 
-    std::vector<vvImage::Pointer> mInputVVImages;
-    std::vector<vvImage::Pointer> mOutputVVImages;
+    std::vector<vvImage::Pointer> m_InputVVImages;
+    std::vector<vvImage::Pointer> 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<DIM,COMP, PT>();
 #define ADD_IMAGE_TYPE(DIM, PT) this->mImageTypesManager.template AddNewDimensionAndPixelType<DIM, PT>();
+#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);
 
   //#include "clitkImageToImageGenericFilterBase.txx"