Orfeo Toolbox  3.16
itkQuadrilateralCell.txx
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Insight Segmentation & Registration Toolkit
4  Module: $RCSfile: itkQuadrilateralCell.txx,v $
5  Language: C++
6  Date: $Date: 2009-03-03 15:08:08 $
7  Version: $Revision: 1.34 $
8 
9  Copyright (c) Insight Software Consortium. All rights reserved.
10  See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
11 
12  This software is distributed WITHOUT ANY WARRANTY; without even
13  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
14  PURPOSE. See the above copyright notices for more information.
15 
16 =========================================================================*/
17 #ifndef __itkQuadrilateralCell_txx
18 #define __itkQuadrilateralCell_txx
19 #include "itkQuadrilateralCell.h"
20 
21 namespace itk
22 {
23 
27 template <typename TCellInterface>
28 void
30 ::MakeCopy(CellAutoPointer & cellPointer) const
31 {
32  cellPointer.TakeOwnership( new Self );
33  cellPointer->SetPointIds(this->GetPointIds());
34 }
35 
36 
41 template <typename TCellInterface>
42 unsigned int
44 ::GetDimension(void) const
45 {
46  return Self::CellDimension;
47 }
48 
49 
54 template <typename TCellInterface>
55 unsigned int
58 {
59  return Self::NumberOfPoints;
60 }
61 
62 
67 template <typename TCellInterface>
70 ::GetNumberOfBoundaryFeatures(int dimension) const
71 {
72  switch (dimension)
73  {
74  case 0: return GetNumberOfVertices();
75  case 1: return GetNumberOfEdges();
76  default: return 0;
77  }
78 }
79 
80 
87 template <typename TCellInterface>
88 bool
90 ::GetBoundaryFeature(int dimension, CellFeatureIdentifier featureId,CellAutoPointer & cellPointer)
91 {
92  switch (dimension)
93  {
94  case 0:
95  {
96  VertexAutoPointer vertexPointer;
97  if( this->GetVertex(featureId,vertexPointer) )
98  {
99  TransferAutoPointer(cellPointer,vertexPointer);
100  return true;
101  }
102  else
103  {
104  cellPointer.Reset();
105  return false;
106  }
107  break;
108  }
109  case 1:
110  {
111  EdgeAutoPointer edgePointer;
112  if( this->GetEdge(featureId,edgePointer) )
113  {
114  TransferAutoPointer(cellPointer,edgePointer);
115  return true;
116  }
117  else
118  {
119  cellPointer.Reset();
120  return false;
121  }
122  break;
123  }
124 
125  default:
126  {
127  cellPointer.Reset();
128  return false;
129  }
130  }
131  return false;
132 }
133 
140 template <typename TCellInterface>
141 void
143 ::SetPointIds(PointIdConstIterator first)
144 {
145  PointIdConstIterator ii(first);
146  for(unsigned int i=0; i < Self::NumberOfPoints; ++i)
147  {
148  m_PointIds[i] = *ii++;
149  }
150 }
151 
152 
160 template <typename TCellInterface>
161 void
163 ::SetPointIds(PointIdConstIterator first, PointIdConstIterator last)
164 {
165  int localId=0;
166  PointIdConstIterator ii(first);
167 
168  while(ii != last)
169  {
170  m_PointIds[localId++] = *ii++;
171  }
172 }
173 
174 
179 template <typename TCellInterface>
180 void
182 ::SetPointId(int localId, PointIdentifier ptId)
183 {
184  m_PointIds[localId] = ptId;
185 }
186 
187 
192 template <typename TCellInterface >
196 {
197  return &m_PointIds[0];
198 }
199 
200 
206 template <typename TCellInterface>
209 ::PointIdsBegin(void) const
210 {
211  return &m_PointIds[0];
212 }
213 
214 
219 template <typename TCellInterface>
223 {
224  return &m_PointIds[Self::NumberOfPoints-1] + 1;
225 }
226 
232 template <typename TCellInterface >
235 ::PointIdsEnd(void) const
236 {
237  return &m_PointIds[Self::NumberOfPoints-1] + 1;
238 }
239 
244 template <typename TCellInterface>
248 {
249  return NumberOfVertices;
250 }
251 
256 template <typename TCellInterface>
260 {
261  return Self::NumberOfEdges;
262 }
263 
269 template <typename TCellInterface>
270 bool
272 ::GetVertex(CellFeatureIdentifier vertexId,VertexAutoPointer & vertexPointer )
273 {
274  VertexType * vert = new VertexType;
275  vert->SetPointId(0, m_PointIds[vertexId]);
276  vertexPointer.TakeOwnership( vert );
277  return true;
278 }
279 
285 template <typename TCellInterface>
286 bool
288 ::GetEdge(CellFeatureIdentifier edgeId, EdgeAutoPointer & edgePointer )
289 {
290  EdgeType * edge = new EdgeType;
291  for(int i=0; i < EdgeType::NumberOfPoints; ++i)
292  {
293  edge->SetPointId(i, m_PointIds[ m_Edges[edgeId][i] ]);
294  }
295  edgePointer.TakeOwnership( edge );
296  return true;
297 }
298 
299 
300 } // end namespace itk
301 
302 #endif

Generated at Sun Feb 3 2013 00:01:03 for Orfeo Toolbox with doxygen 1.8.1.1