/*========================================================================= * * Copyright NumFOCUS * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0.txt * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * *=========================================================================*/ #ifndef itkLevelSetDenseImage_hxx #define itkLevelSetDenseImage_hxx namespace itk { template void LevelSetDenseImage::SetImage(ImageType * inputImage) { this->m_Image = inputImage; typename ImageType::SpacingType spacing = m_Image->GetSpacing(); for (unsigned int dim = 0; dim < Dimension; ++dim) { this->m_NeighborhoodScales[dim] = NumericTraits::OneValue() / static_cast(spacing[dim]); } this->Modified(); } template auto LevelSetDenseImage::Evaluate(const InputType & inputIndex) const -> OutputType { InputType mapIndex = inputIndex - this->m_DomainOffset; return this->m_Image->GetPixel(mapIndex); } template void LevelSetDenseImage::Evaluate(const InputType & inputIndex, LevelSetDataType & data) const { Superclass::Evaluate(inputIndex, data); } template void LevelSetDenseImage::Initialize() { Superclass::Initialize(); this->m_Image = nullptr; } template void LevelSetDenseImage::CopyInformation(const DataObject * data) { Superclass::CopyInformation(data); const auto * LevelSet = dynamic_cast(data); if (!LevelSet) { // pointer could not be cast back down itkExceptionMacro("itk::LevelSetDenseImage::CopyInformation() cannot cast " << typeid(data).name() << " to " << typeid(Self *).name()); } } template void LevelSetDenseImage::Graft(const DataObject * data) { Superclass::Graft(data); const auto * LevelSet = dynamic_cast(data); if (!LevelSet) { // pointer could not be cast back down itkExceptionMacro("itk::LevelSetDenseImage::CopyInformation() cannot cast " << typeid(data).name() << " to " << typeid(Self *).name()); } this->m_Image = LevelSet->m_Image; this->m_NeighborhoodScales = LevelSet->m_NeighborhoodScales; } template bool LevelSetDenseImage::IsInsideDomain(const InputType & inputIndex) const { const RegionType largestRegion = this->m_Image->GetLargestPossibleRegion(); InputType mapIndex = inputIndex - this->m_DomainOffset; return largestRegion.IsInside(mapIndex); } } // namespace itk #endif // itkLevelSetDenseImage_hxx