ITK  4.2.0
Insight Segmentation and Registration Toolkit
itkParametricPath.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 __itkParametricPath_h
19 #define __itkParametricPath_h
20 
21 #include "itkPath.h"
22 #include "itkContinuousIndex.h"
23 #include "itkOffset.h"
24 #include "itkVector.h"
25 
26 namespace itk
27 {
59 template< unsigned int VDimension >
60 class ITK_EXPORT ParametricPath:public
61  Path< double, ContinuousIndex< double, VDimension >, VDimension >
62 {
63 public:
69 
71  itkTypeMacro(ParametricPath, Path);
72 
74  typedef typename Superclass::InputType InputType;
75 
77  typedef typename Superclass::OutputType OutputType;
78 
84 
87  virtual IndexType EvaluateToIndex(const InputType & input) const;
88 
104  virtual OffsetType IncrementInput(InputType & input) const;
105 
112  virtual VectorType EvaluateDerivative(const InputType & input) const;
113 
114  itkSetMacro(DefaultInputStepSize, InputType)
115  itkGetConstReferenceMacro(DefaultInputStepSize, InputType)
116 
117 protected:
118  ParametricPath();
119  ~ParametricPath(){}
120  void PrintSelf(std::ostream & os, Indent indent) const;
121 
133 
134 private:
135  ParametricPath(const Self &); //purposely not implemented
136  void operator=(const Self &); //purposely not implemented
137 };
138 
139 } // namespace itk
140 
141 // Define instantiation macro for this template.
142 #define ITK_TEMPLATE_ParametricPath(_, EXPORT, TypeX, TypeY) \
143  namespace itk \
144  { \
145  _( 1 ( class EXPORT ParametricPath< ITK_TEMPLATE_1 TypeX > ) ) \
146  namespace Templates \
147  { \
148  typedef ParametricPath< ITK_TEMPLATE_1 TypeX > \
149  ParametricPath##TypeY; \
150  } \
151  }
152 
153 #if ITK_TEMPLATE_EXPLICIT
154 #include "Templates/itkParametricPath+-.h"
155 #endif
156 
157 #if ITK_TEMPLATE_TXX
158 #include "itkParametricPath.hxx"
159 #endif
160 
161 #endif
162