]> Creatis software - clitk.git/blobdiff - filters/clitkImageArithmGenericFilter.h
SetTransform has been removed from vvImage since we obtain a pointer to the transform...
[clitk.git] / filters / clitkImageArithmGenericFilter.h
index 88449119e7639c079d279e172bdadcd1f48ebfcd..1151267e0a9ecae7482ca747083be58b5127ab08 100644 (file)
@@ -1,18 +1,22 @@
-/*-------------------------------------------------------------------------
-
-  Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
-  l'Image). All rights reserved. See Doc/License.txt or
-  http://www.creatis.insa-lyon.fr/Public/Gdcm/License.html for details.
-                                                                                
-     This software is distributed WITHOUT ANY WARRANTY; without even
-     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-     PURPOSE.  See the above copyright notices for more information.
-                                                                             
--------------------------------------------------------------------------*/
+/*=========================================================================
+  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://oncora1.lyon.fnclcc.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 CLITKIMAGEARITHMGENERICFILTER_H
 #define CLITKIMAGEARITHMGENERICFILTER_H
-
 /**
  -------------------------------------------------------------------
  * @file   clitkImageArithmGenericFilter.h
@@ -24,7 +28,6 @@
 
 // clitk include
 #include "clitkCommon.h"
-#include "clitkImageCommon.h"
 #include "clitkImageToImageGenericFilter.h"
 
 // itk include
 #include "itkImageRegionIterator.h"
 #include "itkImageRegionConstIterator.h"
 
+//--------------------------------------------------------------------
 namespace clitk {
   
-  //--------------------------------------------------------------------
-  // Main class for an Image Resample Generic Filter 
-  // (multiple dimensions, multiple pixel types)
-  class ImageArithmGenericFilter : public clitk::ImageToImageGenericFilter {
-  
+  template<class args_info_type>
+  class ITK_EXPORT ImageArithmGenericFilter:
+    public clitk::ImageToImageGenericFilter<ImageArithmGenericFilter<args_info_type> > {
+    
   public:
        
     // Constructor 
     ImageArithmGenericFilter ();
 
     // Types
-    typedef ImageArithmGenericFilter      Self;
-    typedef ImageToImageGenericFilter     Superclass;
-    typedef itk::SmartPointer<Self>       Pointer;
-    typedef itk::SmartPointer<const Self> ConstPointer;
+    typedef ImageArithmGenericFilter        Self;
+    typedef ImageToImageGenericFilterBase   Superclass;
+    typedef itk::SmartPointer<Self>         Pointer;
+    typedef itk::SmartPointer<const Self>   ConstPointer;
 
     // New
     itkNewMacro(Self);
     
+    //--------------------------------------------------------------------
+    void SetArgsInfo(const args_info_type & a);
+
     // Set methods
     void SetDefaultPixelValue (double value) {  mDefaultPixelValue = value ;}
     void SetTypeOfOperation (int value) {  mTypeOfOperation = value ;}
     void SetScalar (double value) {  mScalar = value ;}
+    void EnableOverwriteInputImage(bool b);
 
     // Get methods
     double GetDefaultPixelValue () { return  mDefaultPixelValue ;} 
     int GetTypeOfOperation () { return  mTypeOfOperation ;} 
     double GetScalar () { return  mScalar ;} 
 
-    // Update
-    void Update ();
+    //--------------------------------------------------------------------
+    // Main function called each time the filter is updated
+    template<class InputImageType>  
+    void UpdateWithInputImageType();
 
   protected:  
+    template<unsigned int Dim> void InitializeImageType();
     bool mIsOperationUseASecondImage;
     double mScalar;
     double mDefaultPixelValue;
     int mTypeOfOperation;  
+    args_info_type mArgsInfo;
+    bool mOverwriteInputImage;
+    bool mOutputIsFloat;
+    
+    template<class Iter1, class Iter2>
+      void ComputeImage(Iter1 it, Iter2 ito);
 
-    //--------------------------------------------------------------------
-    template<unsigned int Dim> void Update_WithDim();
-    template<unsigned int Dim, class PixelType> void Update_WithDimAndPixelType();
-
-    template<class ImageType>
-    typename ImageType::Pointer ComputeImage(typename ImageType::Pointer inputImage);
+    template<class Iter1, class Iter2, class Iter3>
+      void ComputeImage(Iter1 it1, Iter2 it2, Iter3 ito);
 
-    template<class ImageType1, class ImageType2>
-    typename ImageType1::Pointer
-    ComputeImage(typename ImageType1::Pointer inputImage1, 
-                typename ImageType2::Pointer inputImage2);
     //--------------------------------------------------------------------
 
   }; // end class ImageArithmGenericFilter
+} // end namespace
 //--------------------------------------------------------------------
 
+#ifndef ITK_MANUAL_INSTANTIATION
 #include "clitkImageArithmGenericFilter.txx"
-
-} // end namespace
-//--------------------------------------------------------------------
+#endif
 
 #endif //#define CLITKIMAGEARITHMGENERICFILTER_H