<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Change SYSTEM "https://itk.org/migrationv4/ITKMigration.dtd">
<!--**
**
** RemoveConstantOperationFilters.xml
**
** >>>>>>>>>>>>>>>>>>>>>>>>>>>>
** THIS FILE HAS BEEN AUTOMATICALLY GENERATED. EDIT IT BEFORE COMMITING
** <<<<<<<<<<<<<<<<<<<<<<<<<<<
**
**-->
<Change>
    <!--**
    ** Title for the online migration page
    **-->
    <Title>
      Remove Constant Operation Filters
    </Title>

    <!--**
    ** The author of the change
    **-->
    <Author>
      Gaëtan Lehmann
    </Author>

    <!--**
    ** Date of creation for the XML document
    **-->
    <Date>
      2011-03-29
    </Date>

    <!--**
    ** Plain text description of the change
    ** Extracted from git commit messages
    **-->
    <Description>
      BinaryFunctorImageFilter as been modified to take a constant as one of the inputs.
      That way the users have directly access to all the transforms based
      on BinaryFunctorImageFilter with a constant on one of the operand.
      This removes the need for AddConstantToImageFilter, DivideByConstantImageFilter,
      MultiplyByConstantImageFilter and SubtractConstantFromImageFilter and add
      the ability to set one or the other operand.

    </Description>

    <!--**
    ** Sample code snippets
    ** Extracted from git diff of changed files in Examples and Testing
    **-->
    <SampleCode>
      <Old>
      <![CDATA[
      #include "itkMultiplyByConstantImageFilter.h"
      typedef MultiplyByConstantImageFilter<
        DisplacementFieldType,
        TimeStepType, DisplacementFieldType >                MultiplyType;
      ]]>
      </Old>

      <New>
      <![CDATA[
      #include "itkMultiplyImageFilter.h"
      typedef MultiplyImageFilter< DisplacementFieldType,
        itk::Image<TimeStepType, ImageDimension>,
        DisplacementFieldType >                              MultiplyType;
      ]]>
      </New>

    </SampleCode>

    <!--**
    ** The change-ids for all commits in the topic branch
    **-->
    <Gerrit-ChangeId>
      I328d66b64485bbafe04a47e95674d98a9d3bdace
      Ia4b95dbb9dd82f176246e6b84870cf1dfdd217fa
    </Gerrit-ChangeId>

    <!--**
    ** List of all changed files from the topic branch
    **-->
    <FileList>
      Modules/Filtering/ImageFeature/include/itkCannyEdgeDetectionImageFilter.txx
      Modules/Filtering/ImageFilterBase/include/itkBinaryFunctorImageFilter.h
      Modules/Filtering/ImageFilterBase/include/itkBinaryFunctorImageFilter.txx
      Modules/Filtering/ImageIntensity/include/itkDivideImageFilter.h
      Modules/Nonunit/Review/include/itkAddConstantToImageFilter.h
      Modules/Nonunit/Review/include/itkDiffeomorphicDemonsRegistrationFilter.h
      Modules/Nonunit/Review/include/itkDiffeomorphicDemonsRegistrationFilter.txx
      Modules/Nonunit/Review/include/itkDivideByConstantImageFilter.h
      Modules/Nonunit/Review/include/itkExponentialDisplacementFieldImageFilter.h
      Modules/Nonunit/Review/include/itkExponentialDisplacementFieldImageFilter.txx
      Modules/Nonunit/Review/include/itkFastSymmetricForcesDemonsRegistrationFilter.h
      Modules/Nonunit/Review/include/itkFastSymmetricForcesDemonsRegistrationFilter.txx
      Modules/Nonunit/Review/include/itkMultiplyByConstantImageFilter.h
      Modules/Nonunit/Review/include/itkSubtractConstantFromImageFilter.h
      Modules/Nonunit/Review/test/itkAddConstantToImageFilterTest.cxx
      Modules/Nonunit/Review/test/itkDiscreteGaussianDerivativeImageFilterScaleSpaceTest.cxx
      Modules/Nonunit/Review/test/itkDivideByConstantImageFilterTest.cxx
      Modules/Nonunit/Review/test/itkMultiplyByConstantImageFilterTest.cxx
      Modules/Nonunit/Review/test/itkReviewHeaderTest.cxx
      Modules/Nonunit/Review/test/itkSubtractConstantFromImageFilterTest.cxx
      Wrapping/WrapITK/Libraries/Review/itkAddConstantToImageFilter.wrap
      Wrapping/WrapITK/Libraries/Review/itkDivideByConstantImageFilter.wrap
      Wrapping/WrapITK/Libraries/Review/itkMultiplyByConstantImageFilter.wrap
      Wrapping/WrapITK/Libraries/Review/itkSubtractConstantFromImageFilter.wrap
    </FileList>

    <!--**
    ** If the migration can be accomplished by a simple string
    ** substitution, then use the following construct to define
    ** the substitution rule.
    **
    ** <MigrationFix-Automatic>
    **   <Old>
    **     MipsleledName
    **   </Old>
    **   <New>
    **     MisspelledName
    **   </New>
    ** </MigrationFix-Automatic>
    **-->

    <!--**
    ** If the migration can NOT be accomplished by a simple string
    ** substitution, but potential problem spots can be identified,
    ** use the following construct to define a migration flag rule.
    **
    ** <MigrationFix-Manual>
    **   OldFunctionName
    ** </MigrationFix-Manual>
    **-->

</Change>
