ITK  4.2.0
Insight Segmentation and Registration Toolkit
itkFastMarchingTraits.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 
19 #ifndef __itkFastMarchingTraits_h
20 #define __itkFastMarchingTraits_h
21 
22 #include "itkIntTypes.h"
23 #include "itkVectorContainer.h"
24 #include "itkConceptChecking.h"
25 #include "itkImage.h"
26 #include "itkQuadEdgeMesh.h"
28 #include "itkImageToImageFilter.h"
29 #include "itkNodePair.h"
30 
31 namespace itk
32 {
45 template< class TInputDomain,
46  class TNode,
47  class TOutputDomain,
48  class TSuperclass >
50  {
51 public:
53  typedef TInputDomain InputDomainType;
56 
58  typedef TNode NodeType;
59 
61  typedef TOutputDomain OutputDomainType;
64 
70 
71  /*
72  typedef VectorContainer< IdentifierType, NodeType > NodeContainerType;
73  typedef typename NodeContainerType::Pointer NodeContainerPointer;
74  typedef typename NodeContainerType::Iterator NodeContainerIterator;
75  typedef typename NodeContainerType::ConstIterator NodeContainerConstIterator;
76  */
77 
78  typedef TSuperclass SuperclassType;
79 
81  enum LabelType {
82 
84  Far = 0,
85 
88 
91 
94 
97 
101 
102 #ifdef ITK_USE_CONCEPT_CHECKING
103  itkConceptMacro( DoubleConvertibleOutputCheck,
105 
106  itkConceptMacro( OutputOStreamWritableCheck,
108 #endif
109  };
110 
111 
112 template< class TInput, class TOutput >
114 {
115 };
116 
117 template<unsigned int VDimension,
118  typename TInputPixel,
119  typename TOutputPixel > // = TInputPixel >
120 class FastMarchingTraits<Image<TInputPixel, VDimension>, Image<TOutputPixel, VDimension> > :
121  public FastMarchingTraitsBase<
122  Image< TInputPixel, VDimension >,
123  Index< VDimension >,
124  Image< TOutputPixel, VDimension >,
125  ImageToImageFilter< Image< TInputPixel, VDimension >,
126  Image< TOutputPixel, VDimension > >
127  >
128  {
129 public:
130  itkStaticConstMacro(ImageDimension, unsigned int, VDimension);
131  };
132 
133 
134 template< unsigned int VDimension,
135  typename TInputPixel,
136  class TInputMeshTraits, //= QuadEdgeMeshTraits< TInputPixel, VDimension, bool, bool >,
137  typename TOutputPixel, //= TInputPixel,
138  class TOutputMeshTraits //= QuadEdgeMeshTraits< TOutputPixel, VDimension, bool, bool >
139  >
140 class FastMarchingTraits<QuadEdgeMesh< TInputPixel, VDimension, TInputMeshTraits >, QuadEdgeMesh< TOutputPixel, VDimension, TOutputMeshTraits > > :
141  public FastMarchingTraitsBase<
142  QuadEdgeMesh< TInputPixel, VDimension, TInputMeshTraits >,
143  typename TInputMeshTraits::PointIdentifier,
144  QuadEdgeMesh< TOutputPixel, VDimension, TOutputMeshTraits >,
145  QuadEdgeMeshToQuadEdgeMeshFilter<
146  QuadEdgeMesh< TInputPixel, VDimension, TInputMeshTraits >,
147  QuadEdgeMesh< TOutputPixel, VDimension, TOutputMeshTraits > >
148  >
149  {
150 public:
151  itkStaticConstMacro(PointDimension, unsigned int, VDimension);
152  };
153 
154 }
155 #endif // __itkFastMarchingTraits_h
156