<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Change SYSTEM "https://itk.org/migrationv4/ITKMigration.dtd">

<!--**
**
** BoundaryConditionChanges.xml
**
** >>>>>>>>>>>>>>>>>>>>>>>>>>>>
** THIS FILE HAS BEEN AUTOMATICALLY GENERATED. EDIT IT BEFORE COMMITING
** <<<<<<<<<<<<<<<<<<<<<<<<<<<
**
** Please, make sure this file validates the following w3c test before committing it: http://validator.w3.org
**-->
<Change>
    <!--**
    ** Title for the online migration page
    **-->
    <Title>
      Verify Inputs for ImageToImageFilter base class
    </Title>

    <!--**
    ** The author of the change
    **-->
    <Author>
      Brad Lowekamp
    </Author>

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

    <!--**
    ** Plain text description of the change
    ** Extracted from git commit messages
    **-->
    <Description>
      In nearly all ImageFilters derived from ImageToImage filter
      there was an implied condition that all the input image
      occupied the same physical space.  This change provides
      a virutal function with a default behavior of requiring
      all input images to have the same physical space representation.

      Added ProcessObject::VerifyInputs, which is executed before the the
      GenerateOutputInformation is propagated to the inputs. It is intended
      to verify that the required inputs are set, and that the parameters of
      the filter are valid.

      Added VerifyInputInformation, which is executed after all inputs have
      generated their meta-data information. It is intended to verify that
      the metadata ( size and location ) are consistent and valid for the
      execution of the filter.  The default behavior is to throw and exception
      and list the differences in physcial space definition.

    </Description>

    <!--**
    ** Sample code snippets
    ** Extracted from git diff of changed files in Examples and Testing
    **-->
    <SampleCode>

      <Old>
        <![CDATA[
        /* VerifyInputInformation did not exists */
        ]]>
      </Old>

      <New>
        <![CDATA[
        /* In class that derives from ImageToImageFilter, but does not
         * require that all inputs occupy the same physical space.
         * For example HistogramMatching filters do not require
         * that the images have the same physical dimensions */


        /** Override VeriyInputInformation() since this filter does not expect
        * the input images to occupy the same physical space.
        *
        * \sa ProcessObject::VerifyInputInformation
        */
        virtual void VerifyInputInformation() {}
        ]]>
      </New>

    </SampleCode>

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

    <!--**
    ** List of all changed files from the topic branch
    **-->
    <FileList>
  Modules/Core/Common/include/itkImageToImageFilter.h
  Modules/Core/Common/include/itkImageToImageFilter.txx
  Modules/Core/Common/include/itkProcessObject.h
  Modules/Core/Common/src/itkDataObject.cxx
  Modules/Core/Common/src/itkProcessObject.cxx
  Modules/Filtering/AnisotropicSmoothing/test/itkGradientAnisotropicDiffusionImageFilterTest2.cxx
  Modules/Filtering/ImageGrid/include/itkChangeInformationImageFilter.h
  Modules/Filtering/ImageGrid/include/itkChangeInformationImageFilter.txx
  Modules/Filtering/ImageGrid/include/itkInterpolateImagePointsFilter.h
  Modules/Filtering/ImageGrid/include/itkInterpolateImagePointsFilter.txx
  Modules/Filtering/ImageGrid/include/itkTileImageFilter.h
  Modules/Filtering/ImageGrid/include/itkTileImageFilter.txx
  Modules/Filtering/ImageGrid/include/itkWarpImageFilter.h
  Modules/Filtering/ImageGrid/include/itkWarpImageFilter.txx
  Modules/Filtering/ImageIntensity/test/CMakeLists.txt
  Modules/Filtering/ImageIntensity/test/itkAddImageFilterFrameTest.cxx
  Modules/IO/Base/test/CMakeLists.txt
  Modules/Nonunit/Review/include/itkConvolutionImageFilter.h
  Modules/Nonunit/Review/include/itkConvolutionImageFilter.txx
  Modules/Registration/PDEDeformable/include/itkDemonsRegistrationFilter.h
  Modules/Registration/PDEDeformable/include/itkDemonsRegistrationFilter.txx
  Modules/Registration/PDEDeformable/include/itkMultiResolutionPDEDeformableRegistration.h
  Modules/Registration/PDEDeformable/include/itkMultiResolutionPDEDeformableRegistration.txx
    </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>
    **     <![CDATA[MipsleledName]]>
    **   </Old>
    **   <New>
    **     <![CDATA[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>
