<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Change SYSTEM "http://itk.org/migrationv4/ITKMigration.dtd">
<!--**
**
** FFTUseImageAsTemplateParameter.xml
**
** >>>>>>>>>>>>>>>>>>>>>>>>>>>>
** THIS FILE HAS BEEN AUTOMATICALLY GENERATED. EDIT IT BEFORE COMMITING
** <<<<<<<<<<<<<<<<<<<<<<<<<<<
**
**-->
<Change>
    <!--**
    ** Title for the online migration page
    **-->
    <Title>
      FFT Use Image As Template Parameter
    </Title>

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

    <!--**
    ** Date of creation for the XML document
    **-->
    <Date>
      2011-04-07
    </Date>

    <!--**
    ** Plain text description of the change
    ** Extracted from git commit messages
    **-->
    <Description>
      The FFT filters now take an image type as template parameter.
      The FFT filters were using the pixel type and the image dimension
      instead of the usual image type used elsewhere in ITK.

    </Description>

    <!--**
    ** Sample code snippets
    ** Extracted from git diff of changed files in Examples and Testing
    **-->
    <SampleCode>
      <Old>
        <![CDATA[
        typedef double WorkPixelType;
        const unsigned int Dimension = 3;
        typedef itk::VnlFFTRealToComplexConjugateImageFilter< WorkPixelType, Dimension >
          FFTFilterType;
        typedef itk::VnlFFTComplexConjugateToRealImageFilter< WorkPixelType, Dimension >
          invFFTFilterType;
        ]]>
      </Old>

      <New>
        <![CDATA[
        typedef double WorkPixelType;
        const unsigned int Dimension = 3;
        typedef itk::Image< WorkPixelType, Dimension > WorkImageType;
        typedef itk::VnlForwardFFTImageFilter < WorkImageType >    FFTFilterType;
        typedef itk::VnlInverseFFTImageFilter < ComplexImageType > InvFFTFilterType;
        ]]>
      </New>

    </SampleCode>

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

    <!--**
    ** List of all changed files from the topic branch
    **-->
    <FileList>
      Examples/Filtering/FFTDirectInverse.cxx
      Examples/Filtering/FFTDirectInverse2.cxx
      Examples/Filtering/FFTImageFilter.cxx
      Examples/Filtering/FFTImageFilterFourierDomainFiltering.cxx
      Modules/Filtering/FFT/include/itkFFTComplexConjugateToRealImageFilter.h
      Modules/Filtering/FFT/include/itkFFTComplexConjugateToRealImageFilter.txx
      Modules/Filtering/FFT/include/itkFFTRealToComplexConjugateImageFilter.h
      Modules/Filtering/FFT/include/itkFFTRealToComplexConjugateImageFilter.txx
      Modules/Filtering/FFT/include/itkFFTWComplexConjugateToRealImageFilter.h
      Modules/Filtering/FFT/include/itkFFTWComplexConjugateToRealImageFilter.txx
      Modules/Filtering/FFT/include/itkFFTWRealToComplexConjugateImageFilter.h
      Modules/Filtering/FFT/include/itkFFTWRealToComplexConjugateImageFilter.txx
      Modules/Filtering/FFT/include/itkVnlFFTComplexConjugateToRealImageFilter.h
      Modules/Filtering/FFT/include/itkVnlFFTComplexConjugateToRealImageFilter.txx
      Modules/Filtering/FFT/include/itkVnlFFTRealToComplexConjugateImageFilter.h
      Modules/Filtering/FFT/include/itkVnlFFTRealToComplexConjugateImageFilter.txx
      Modules/Filtering/FFT/test/itkFFTWD_FFTTest.cxx
      Modules/Filtering/FFT/test/itkFFTWF_FFTTest.cxx
      Modules/Filtering/FFT/test/itkVnlFFTTest.cxx
      Modules/Filtering/FFT/test/itkVnlFFTWD_FFTTest.cxx
      Modules/Filtering/FFT/test/itkVnlFFTWF_FFTTest.cxx
      Modules/Nonunit/Review/include/itkDirectFourierReconstructionImageToImageFilter.h
      Modules/Nonunit/Review/include/itkDirectFourierReconstructionImageToImageFilter.txx
      Modules/Nonunit/Review/include/itkFFTComplexToComplexImageFilter.h
      Modules/Nonunit/Review/include/itkFFTComplexToComplexImageFilter.txx
      Modules/Nonunit/Review/include/itkFFTWComplexToComplexImageFilter.h
      Modules/Nonunit/Review/include/itkFFTWComplexToComplexImageFilter.txx
      Modules/Nonunit/Review/test/itkDirectFourierReconstructionImageToImageFilterTest.cxx
      Modules/Nonunit/Review/test/itkFFTComplexToComplexImageFilterTest01.cxx
      Modules/Nonunit/Review/test/itkFFTComplexToComplexImageFilterTest02.cxx
      Wrapping/WrapITK/Languages/Python/Tests/FFTImageFilter.py
      Wrapping/WrapITK/Libraries/FFT/itkDirectFourierReconstructionImageToImageFilter.wrap
      Wrapping/WrapITK/Libraries/FFT/itkFFTComplexConjugateToRealImageFilter.wrap
      Wrapping/WrapITK/Libraries/FFT/itkFFTComplexToComplexImageFilter.wrap
      Wrapping/WrapITK/Libraries/FFT/itkFFTRealToComplexConjugateImageFilter.wrap
      Wrapping/WrapITK/Libraries/FFT/itkVnlFFTComplexConjugateToRealImageFilter.wrap
      Wrapping/WrapITK/Libraries/FFT/itkVnlFFTRealToComplexConjugateImageFilter.wrap
      Wrapping/WrapITK/Libraries/FFTW/itkFFTWComplexConjugateToRealImageFilter.wrap
      Wrapping/WrapITK/Libraries/FFTW/itkFFTWComplexToComplexImageFilter.wrap
      Wrapping/WrapITK/Libraries/FFTW/itkFFTWRealToComplexConjugateImageFilter.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>
