ITK  4.2.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< class 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 <class UImageType>
63  struct Rebind
64  {
66  };
67 
68 
69  static void SetVectorLength(ImageType *image, VectorLengthType length)
70  {
71  image->SetVectorLength(length);
72  }
73 
74  static VectorLengthType GetVectorLength(const ImageType *image)
75  {
76  return image->GetVectorLength();
77  }
78 
83  inline void SetPixelAccessor(PixelAccessorType & accessor)
84  {
85  m_PixelAccessor = accessor;
86  }
87 
89  inline void SetBegin(const InternalPixelType *begin)
90  { this->m_Begin = const_cast< InternalPixelType * >( begin ); }
91 
93  inline void Set(InternalPixelType & output, const ExternalPixelType & input) const
94  {
95  m_PixelAccessor.Set(output, input, ( &output ) - m_Begin);
96  }
97 
99  inline ExternalPixelType Get(const InternalPixelType & input) const
100  {
101  return m_PixelAccessor.Get(input, &input - m_Begin);
102  }
103 
104 private:
105  PixelAccessorType m_PixelAccessor; // The pixel accessor
106  InternalPixelType *m_Begin; // Begin of the buffer
107 };
108 }
109 
110 #endif
111