20 #ifndef __itkMeshToMeshFilter_txx
21 #define __itkMeshToMeshFilter_txx
32 template <
class TInputMesh,
class TOutputMesh>
37 this->SetNumberOfRequiredInputs(1);
45 template <
class TInputMesh,
class TOutputMesh>
52 const_cast< TInputMesh * >( input ) );
59 template <
class TInputMesh,
class TOutputMesh>
64 if (this->GetNumberOfInputs() < 1)
69 return static_cast< const TInputMesh *
>
77 template <
class TInputMesh,
class TOutputMesh>
82 return dynamic_cast<const TInputMesh*
>
87 template <
class TInputMesh,
class TOutputMesh>
95 typedef typename TOutputMesh::PointsContainer OutputPointsContainer;
96 typedef typename TInputMesh::PointsContainer InputPointsContainer;
98 typename OutputPointsContainer::Pointer outputPoints = OutputPointsContainer::New();
99 const InputPointsContainer * inputPoints = inputMesh->GetPoints();
103 outputPoints->Reserve( inputPoints->Size() );
105 typename InputPointsContainer::ConstIterator inputItr = inputPoints->Begin();
106 typename InputPointsContainer::ConstIterator inputEnd = inputPoints->End();
108 typename OutputPointsContainer::Iterator outputItr = outputPoints->Begin();
110 while( inputItr != inputEnd )
112 outputItr.Value() = inputItr.Value();
117 outputMesh->SetPoints( outputPoints );
122 template <
class TInputMesh,
class TOutputMesh>
130 typedef typename TOutputMesh::PointDataContainer OutputPointDataContainer;
131 typedef typename TInputMesh::PointDataContainer InputPointDataContainer;
133 typename OutputPointDataContainer::Pointer outputPointData = OutputPointDataContainer::New();
134 const InputPointDataContainer * inputPointData = inputMesh->GetPointData();
138 outputPointData->Reserve( inputPointData->Size() );
140 typename InputPointDataContainer::ConstIterator inputItr = inputPointData->Begin();
141 typename InputPointDataContainer::ConstIterator inputEnd = inputPointData->End();
143 typename OutputPointDataContainer::Iterator outputItr = outputPointData->Begin();
145 while( inputItr != inputEnd )
147 outputItr.Value() = inputItr.Value();
152 outputMesh->SetPointData( outputPointData );
157 template <
class TInputMesh,
class TOutputMesh>
165 typedef typename TOutputMesh::CellLinksContainer OutputCellLinksContainer;
166 typedef typename TInputMesh::CellLinksContainer InputCellLinksContainer;
168 typename OutputCellLinksContainer::Pointer outputCellLinks = OutputCellLinksContainer::New();
169 const InputCellLinksContainer * inputCellLinks = inputMesh->GetCellLinks();
173 outputCellLinks->Reserve( inputCellLinks->Size() );
175 typename InputCellLinksContainer::ConstIterator inputItr = inputCellLinks->Begin();
176 typename InputCellLinksContainer::ConstIterator inputEnd = inputCellLinks->End();
178 typename OutputCellLinksContainer::Iterator outputItr = outputCellLinks->Begin();
180 while( inputItr != inputEnd )
182 outputItr.Value() = inputItr.Value();
187 outputMesh->SetCellLinks( outputCellLinks );
192 template <
class TInputMesh,
class TOutputMesh>
200 typedef typename TOutputMesh::CellsContainer OutputCellsContainer;
201 typedef typename TInputMesh::CellsContainer InputCellsContainer;
202 typedef typename TOutputMesh::CellAutoPointer CellAutoPointer;
204 outputMesh->SetCellsAllocationMethod( OutputMeshType::CellsAllocatedDynamicallyCellByCell );
206 typename OutputCellsContainer::Pointer outputCells = OutputCellsContainer::New();
207 const InputCellsContainer * inputCells = inputMesh->GetCells();
211 outputCells->Reserve( inputCells->Size() );
213 typename InputCellsContainer::ConstIterator inputItr = inputCells->Begin();
214 typename InputCellsContainer::ConstIterator inputEnd = inputCells->End();
216 typename OutputCellsContainer::Iterator outputItr = outputCells->Begin();
218 CellAutoPointer clone;
220 while( inputItr != inputEnd )
224 inputItr.Value()->MakeCopy( clone );
225 outputItr.Value() = clone.ReleaseOwnership();
231 outputMesh->SetCells( outputCells );
236 template <
class TInputMesh,
class TOutputMesh>
244 typedef typename TOutputMesh::CellDataContainer OutputCellDataContainer;
245 typedef typename TInputMesh::CellDataContainer InputCellDataContainer;
247 typename OutputCellDataContainer::Pointer outputCellData = OutputCellDataContainer::New();
248 const InputCellDataContainer * inputCellData = inputMesh->GetCellData();
252 outputCellData->Reserve( inputCellData->Size() );
254 typename InputCellDataContainer::ConstIterator inputItr = inputCellData->Begin();
255 typename InputCellDataContainer::ConstIterator inputEnd = inputCellData->End();
257 typename OutputCellDataContainer::Iterator outputItr = outputCellData->Begin();
259 while( inputItr != inputEnd )
261 outputItr.Value() = inputItr.Value();
266 outputMesh->SetCellData( outputCellData );