1 /*========================================================================= 2 * 3 * Copyright Insight Software Consortium 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0.txt 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 *=========================================================================*/ 18 /*========================================================================= 19 * 20 * Portions of this file are subject to the VTK Toolkit Version 3 copyright. 21 * 22 * Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 23 * 24 * For complete copyright, license and disclaimer of warranty information 25 * please refer to the NOTICE file at the top of the ITK source tree. 26 * 27 *=========================================================================*/ 28 #ifndef itkOrientationAdapterBase_h 29 #define itkOrientationAdapterBase_h 30 #include "itkImageBase.h" 31 32 namespace itk 33 { 34 /** \class OrientationAdapterBase 35 * \brief base class that converts Orientation representations to direction cosines. 36 * 37 * OrientationAdapterBase is a pure virtual base class that defines the 38 * member function signatures for any subclass that concretely defines the 39 * conversion relation between a method of representing orientation, and the 40 * direction cosines managed in itk::ImageBase. 41 * \ingroup ITKCommon 42 */ 43 template< typename OrientationType, unsigned int Dimension = 3 > 44 class ITK_TEMPLATE_EXPORT OrientationAdapterBase 45 { 46 public: 47 /** type alias for matching ImageBase */ 48 using ImageType = ImageBase< Dimension >; 49 50 /** type alias for matching Direction Cosines type */ 51 using DirectionType = typename ImageType::DirectionType; 52 53 /** Convert direction cosines to the Orientation type */ 54 virtual OrientationType FromDirectionCosines(const DirectionType & Dir) = 0; 55 56 /** Convert Orientation type direction cosines */ 57 virtual DirectionType ToDirectionCosines(const OrientationType & Orient) = 0; 58 59 protected: 60 /** destructor, to silence "virtual class has non-virtual destructor()" 61 warnings */ 62 virtual ~OrientationAdapterBase() = default; 63 }; 64 } // namespace itk 65 #endif // itkOrientationAdapterBase_h 66