ITK  5.4.0
Insight Toolkit
itkDefaultVectorPixelAccessorFunctor.h
Go to the documentation of this file.
1/*=========================================================================
2 *
3 * Copyright NumFOCUS
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 * https://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
23namespace itk
24{
45template <typename TImageType>
47{
48public:
49 using ImageType = TImageType;
50 using InternalPixelType = typename ImageType::InternalPixelType;
51 using ExternalPixelType = typename ImageType::PixelType;
52 using PixelAccessorType = typename ImageType::AccessorType;
53 using VectorLengthType = unsigned int;
54
55
61 template <typename UImageType>
62 struct Rebind
63 {
65 };
66
67
68 static void
70 {
71 image->SetVectorLength(length);
72 }
73
74 static VectorLengthType
76 {
77 return image->GetVectorLength();
78 }
79
80
82
87 inline void
89 {
90 m_PixelAccessor = accessor;
91 }
92
94 inline void
96 {
97 this->m_Begin = const_cast<InternalPixelType *>(begin);
98 }
99
101 inline void
102 Set(InternalPixelType & output, const ExternalPixelType & input) const
103 {
104 m_PixelAccessor.Set(output, input, (&output) - m_Begin);
105 }
106
108 inline ExternalPixelType
109 Get(const InternalPixelType & input) const
110 {
111 return m_PixelAccessor.Get(input, &input - m_Begin);
112 }
113
114private:
115 PixelAccessorType m_PixelAccessor; // The pixel accessor
116 InternalPixelType * m_Begin{ nullptr }; // Begin of the buffer
117};
118} // namespace itk
119
120#endif
This class provides a common API for pixel accessors for Image and VectorImage. (between the DefaultV...
static VectorLengthType GetVectorLength(const ImageType *image)
void SetPixelAccessor(const PixelAccessorType &accessor)
static void SetVectorLength(ImageType *image, VectorLengthType length)
typename ImageType::InternalPixelType InternalPixelType
ExternalPixelType Get(const InternalPixelType &input) const
void Set(InternalPixelType &output, const ExternalPixelType &input) const
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....