Skip to content

Commit 337ccde

Browse files
committed
ENH: Add GradientImageFilter::OverrideBoundaryCondition(std::unique_ptr)
Added `GradientImageFilter::OverrideBoundaryCondition` overload, to allows specifying the argument by a `unique_ptr`. Aims to make it more clear that the filter takes the ownership of the specified `BoundaryCondition` object. Triggered by a comment from Bradley Lowekamp at #4512 (comment) on March 13, 2024.
1 parent 2de2c7f commit 337ccde

3 files changed

Lines changed: 13 additions & 1 deletion

File tree

Modules/Filtering/ImageGradient/include/itkGradientImageFilter.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,10 @@ class ITK_TEMPLATE_EXPORT GradientImageFilter : public ImageToImageFilter<TInput
145145
void
146146
OverrideBoundaryCondition(BoundaryConditionType * boundaryCondition);
147147

148+
/** Allows to change the default boundary condition */
149+
void
150+
OverrideBoundaryCondition(std::unique_ptr<BoundaryConditionType> boundaryCondition);
151+
148152
#ifdef ITK_USE_CONCEPT_CHECKING
149153
// Begin concept checking
150154
itkConceptMacro(InputConvertibleToOutputCheck, (Concept::Convertible<InputPixelType, OutputValueType>));

Modules/Filtering/ImageGradient/include/itkGradientImageFilter.hxx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,14 @@ GradientImageFilter<TInputImage, TOperatorValueType, TOutputValue, TOutputImage>
4545
m_BoundaryCondition.reset(boundaryCondition);
4646
}
4747

48+
template <typename TInputImage, typename TOperatorValueType, typename TOutputValue, typename TOutputImage>
49+
void
50+
GradientImageFilter<TInputImage, TOperatorValueType, TOutputValue, TOutputImage>::OverrideBoundaryCondition(
51+
std::unique_ptr<BoundaryConditionType> boundaryCondition)
52+
{
53+
m_BoundaryCondition = std::move(boundaryCondition);
54+
}
55+
4856
template <typename TInputImage, typename TOperatorValueType, typename TOutputValueType, typename TOutputImageType>
4957
void
5058
GradientImageFilter<TInputImage, TOperatorValueType, TOutputValueType, TOutputImageType>::GenerateInputRequestedRegion()

Modules/Filtering/ImageGradient/test/itkGradientImageFilterTest.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ itkGradientImageFilterTest(int argc, char * argv[])
8989

9090
using PeriodicBoundaryType = itk::PeriodicBoundaryCondition<InputImageType2>;
9191
// Test the OverrideBoundaryCondition setting;
92-
filter2->OverrideBoundaryCondition(new PeriodicBoundaryType);
92+
filter2->OverrideBoundaryCondition(std::make_unique<PeriodicBoundaryType>());
9393

9494
ITK_EXERCISE_BASIC_OBJECT_METHODS(filter2, GradientImageFilter, ImageToImageFilter);
9595

0 commit comments

Comments
 (0)