/*========================================================================= * * Copyright Insight Software Consortium * * 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 * * http://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 itkObjectToObjectMetricBase_hxx #define itkObjectToObjectMetricBase_hxx #include "itkObjectToObjectMetricBase.h" namespace itk { //------------------------------------------------------------------- template ObjectToObjectMetricBaseTemplate ::ObjectToObjectMetricBaseTemplate() { // Don't call SetGradientSource, to avoid valgrind warning. this->m_GradientSource = this->GRADIENT_SOURCE_MOVING; this->m_Value = NumericTraits::ZeroValue(); } //------------------------------------------------------------------- template ObjectToObjectMetricBaseTemplate ::~ObjectToObjectMetricBaseTemplate() {} //------------------------------------------------------------------- template bool ObjectToObjectMetricBaseTemplate ::GetGradientSourceIncludesFixed() const { return m_GradientSource == GRADIENT_SOURCE_FIXED || m_GradientSource == GRADIENT_SOURCE_BOTH; } //------------------------------------------------------------------- template bool ObjectToObjectMetricBaseTemplate ::GetGradientSourceIncludesMoving() const { return m_GradientSource == GRADIENT_SOURCE_MOVING || m_GradientSource == GRADIENT_SOURCE_BOTH; } //------------------------------------------------------------------- template typename ObjectToObjectMetricBaseTemplate::MeasureType ObjectToObjectMetricBaseTemplate ::GetCurrentValue() const { return m_Value; } //------------------------------------------------------------------- template void ObjectToObjectMetricBaseTemplate ::PrintSelf(std::ostream & os, Indent indent) const { Superclass::PrintSelf(os, indent); os << indent << "Value: " << m_Value << std::endl; os << indent << "GradientSourceType: "; switch( m_GradientSource ) { case GRADIENT_SOURCE_FIXED: os << "GRADIENT_SOURCE_FIXED"; break; case GRADIENT_SOURCE_MOVING: os << "GRADIENT_SOURCE_MOVING"; break; case GRADIENT_SOURCE_BOTH: os << "GRADIENT_SOURCE_BOTH"; break; default: itkExceptionMacro(<< "Unknown GradientSource."); } os << std::endl; } }//namespace itk #endif