-/*-------------------------------------------------------------------------
-
- 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
// 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