ITK  5.0.0
Insight Segmentation and Registration Toolkit
itkDefaultVectorPixelAccessorFunctor.h
Go to the documentation of this file.
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 #ifndef itkDefaultVectorPixelAccessorFunctor_h
19 #define itkDefaultVectorPixelAccessorFunctor_h
20 
21 #include "itkMacro.h"
22 
23 namespace itk
24 {
45 template< typename TImageType >
47 {
48 public:
49 
50  using ImageType = TImageType;
51  using InternalPixelType = typename ImageType::InternalPixelType;
52  using ExternalPixelType = typename ImageType::PixelType;
53  using PixelAccessorType = typename ImageType::AccessorType;
54  using VectorLengthType = unsigned int;
55 
56 
62  template <typename UImageType>
63  struct Rebind
64  {
66  };
67 
68 
69  static void SetVectorLength(ImageType *image, VectorLengthType length)
70  {
71  image->SetVectorLength(length);
72  }
73 
75  {
76  return image->GetVectorLength();
77  }
78 
79 
81 
86  inline void SetPixelAccessor(const PixelAccessorType & accessor)
87  {
88  m_PixelAccessor = accessor;
89  }
90 
92  inline void SetBegin(const InternalPixelType *begin)
93  { this->m_Begin = const_cast< InternalPixelType * >( begin ); }
94 
96  inline void Set(InternalPixelType & output, const ExternalPixelType & input) const
97  {
98  m_PixelAccessor.Set(output, input, ( &output ) - m_Begin);
99  }
100 
102  inline ExternalPixelType Get(const InternalPixelType & input) const
103  {
104  return m_PixelAccessor.Get(input, &input - m_Begin);
105  }
106 
107 private:
108  PixelAccessorType m_PixelAccessor; // The pixel accessor
109  InternalPixelType *m_Begin; // Begin of the buffer
110 };
111 }
112 
113 #endif
static void SetVectorLength(ImageType *image, VectorLengthType length)
ExternalPixelType Get(const InternalPixelType &input) const
static VectorLengthType GetVectorLength(const ImageType *image)
void Set(InternalPixelType &output, const ExternalPixelType &input) const
void SetPixelAccessor(const PixelAccessorType &accessor)
This class provides a common API for pixel accessors for Image and VectorImage. (between the DefaultV...
typename ImageType::InternalPixelType InternalPixelType