ITK  4.6.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  typedef TImageType ImageType;
51  typedef typename ImageType::InternalPixelType InternalPixelType;
52  typedef typename ImageType::PixelType ExternalPixelType;
53  typedef typename ImageType::AccessorType PixelAccessorType;
54  typedef unsigned int VectorLengthType;
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(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
DefaultVectorPixelAccessorFunctor< UImageType > Type
This class provides a common API for pixel accessors for Image and VectorImage. (between the DefaultV...