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 
23 namespace itk
24 {
45 template <typename TImageType>
47 {
48 public:
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
75  GetVectorLength(const ImageType * image)
76  {
77  return image->GetVectorLength();
78  }
79 
80 
82 
87  inline void
89  {
90  m_PixelAccessor = accessor;
91  }
92 
94  inline void
95  SetBegin(const InternalPixelType * begin)
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 
114 private:
115  PixelAccessorType m_PixelAccessor; // The pixel accessor
116  InternalPixelType * m_Begin{ nullptr }; // Begin of the buffer
117 };
118 } // namespace itk
119 
120 #endif
itk::DefaultVectorPixelAccessorFunctor::m_Begin
InternalPixelType * m_Begin
Definition: itkDefaultVectorPixelAccessorFunctor.h:116
itk::DefaultVectorPixelAccessorFunctor::Set
void Set(InternalPixelType &output, const ExternalPixelType &input) const
Definition: itkDefaultVectorPixelAccessorFunctor.h:102
itk::DefaultVectorPixelAccessorFunctor::ExternalPixelType
typename ImageType::PixelType ExternalPixelType
Definition: itkDefaultVectorPixelAccessorFunctor.h:51
itk::DefaultVectorPixelAccessorFunctor::VectorLengthType
unsigned int VectorLengthType
Definition: itkDefaultVectorPixelAccessorFunctor.h:53
itk::DefaultVectorPixelAccessorFunctor::SetBegin
void SetBegin(const InternalPixelType *begin)
Definition: itkDefaultVectorPixelAccessorFunctor.h:95
itk::DefaultVectorPixelAccessorFunctor::ImageType
TImageType ImageType
Definition: itkDefaultVectorPixelAccessorFunctor.h:49
itk::DefaultVectorPixelAccessorFunctor::m_PixelAccessor
PixelAccessorType m_PixelAccessor
Definition: itkDefaultVectorPixelAccessorFunctor.h:115
itk::DefaultVectorPixelAccessorFunctor::Get
ExternalPixelType Get(const InternalPixelType &input) const
Definition: itkDefaultVectorPixelAccessorFunctor.h:109
itk::DefaultVectorPixelAccessorFunctor
This class provides a common API for pixel accessors for Image and VectorImage. (between the DefaultV...
Definition: itkDefaultVectorPixelAccessorFunctor.h:46
itkMacro.h
itk::DefaultVectorPixelAccessorFunctor::Rebind
Definition: itkDefaultVectorPixelAccessorFunctor.h:62
itk::DefaultVectorPixelAccessorFunctor::SetVectorLength
static void SetVectorLength(ImageType *image, VectorLengthType length)
Definition: itkDefaultVectorPixelAccessorFunctor.h:69
itk
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
Definition: itkAnnulusOperator.h:24
itk::DefaultVectorPixelAccessorFunctor::GetVectorLength
static VectorLengthType GetVectorLength(const ImageType *image)
Definition: itkDefaultVectorPixelAccessorFunctor.h:75
itk::DefaultVectorPixelAccessorFunctor::PixelAccessorType
typename ImageType::AccessorType PixelAccessorType
Definition: itkDefaultVectorPixelAccessorFunctor.h:52
itk::DefaultVectorPixelAccessorFunctor::SetPixelAccessor
void SetPixelAccessor(const PixelAccessorType &accessor)
Definition: itkDefaultVectorPixelAccessorFunctor.h:88
itk::DefaultVectorPixelAccessorFunctor::InternalPixelType
typename ImageType::InternalPixelType InternalPixelType
Definition: itkDefaultVectorPixelAccessorFunctor.h:50
itk::DefaultVectorPixelAccessorFunctor::DefaultVectorPixelAccessorFunctor
DefaultVectorPixelAccessorFunctor()=default