00001 /*========================================================================= 00002 00003 Program: Insight Segmentation & Registration Toolkit 00004 Module: $RCSfile: itkQuadEdgeMeshToQuadEdgeMeshFilter.h,v $ 00005 Language: C++ 00006 Date: $Date: 2009-07-13 23:02:40 $ 00007 Version: $Revision: 1.10 $ 00008 00009 Copyright (c) Insight Software Consortium. All rights reserved. 00010 See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details. 00011 00012 This software is distributed WITHOUT ANY WARRANTY; without even 00013 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00014 PURPOSE. See the above copyright notices for more information. 00015 00016 =========================================================================*/ 00017 00018 #ifndef __itkQuadEdgeMeshToQuadEdgeMeshFilter_h 00019 #define __itkQuadEdgeMeshToQuadEdgeMeshFilter_h 00020 00021 #include "itkMeshToMeshFilter.h" 00022 00023 namespace itk 00024 { 00034 template< typename TInputMesh, typename TOutputMesh > 00035 class QuadEdgeMeshToQuadEdgeMeshFilter 00036 : public MeshToMeshFilter< TInputMesh, TOutputMesh > 00037 { 00038 public: 00040 typedef QuadEdgeMeshToQuadEdgeMeshFilter Self; 00041 typedef MeshToMeshFilter< TInputMesh, TOutputMesh > Superclass; 00042 typedef SmartPointer< Self > Pointer; 00043 typedef SmartPointer< const Self > ConstPointer; 00044 00046 typedef TInputMesh InputMeshType; 00047 typedef typename InputMeshType::Pointer InputMeshPointer; 00048 typedef typename InputMeshType::ConstPointer InputMeshConstPointer; 00049 typedef typename InputMeshType::CoordRepType InputCoordRepType; 00050 typedef typename InputMeshType::PointType InputPointType; 00051 typedef typename InputMeshType::PointIdentifier InputPointIdentifier; 00052 typedef typename InputMeshType::QEPrimal InputQEPrimal; 00053 typedef typename InputMeshType::VectorType InputVectorType; 00054 00055 typedef typename InputMeshType::PointDataContainer InputPointDataContainer; 00056 typedef typename InputMeshType::CellDataContainer InputCellDataContainer; 00057 00058 typedef typename InputPointDataContainer::ConstPointer 00059 InputPointDataContainerConstPointer; 00060 typedef typename InputMeshType::PointsContainerConstIterator 00061 InputPointsContainerConstIterator; 00062 typedef typename InputMeshType::PointsContainerConstPointer 00063 InputPointsContainerConstPointer; 00064 typedef typename InputMeshType::CellsContainerConstIterator 00065 InputCellsContainerConstIterator; 00066 typedef typename InputMeshType::CellsContainerConstPointer 00067 InputCellsContainerConstPointer; 00068 00069 typedef typename InputMeshType::EdgeCellType InputEdgeCellType; 00070 typedef typename InputMeshType::PolygonCellType InputPolygonCellType; 00071 typedef typename InputMeshType::PointIdList InputPointIdList; 00072 typedef typename InputMeshType::CellTraits InputCellTraits; 00073 typedef typename InputCellTraits::PointIdInternalIterator 00074 InputPointsIdInternalIterator; 00075 00076 typedef typename InputQEPrimal::IteratorGeom InputQEIterator; 00077 00079 typedef TOutputMesh OutputMeshType; 00080 typedef typename OutputMeshType::Pointer OutputMeshPointer; 00081 typedef typename OutputMeshType::ConstPointer OutputMeshConstPointer; 00082 typedef typename OutputMeshType::CoordRepType OutputCoordRepType; 00083 typedef typename OutputMeshType::PointType OutputPointType; 00084 typedef typename OutputMeshType::PointIdentifier OutputPointIdentifier; 00085 typedef typename OutputMeshType::QEPrimal OutputQEPrimal; 00086 typedef typename OutputMeshType::VectorType OutputVectorType; 00087 typedef typename OutputQEPrimal::IteratorGeom OutputQEIterator; 00088 typedef typename OutputMeshType::PointsContainerIterator 00089 OutputPointsContainerIterator; 00090 typedef typename OutputMeshType::PointsContainerPointer 00091 OutputPointsContainerPointer; 00092 typedef typename OutputMeshType::PointsContainerConstPointer 00093 OutputPointsContainerConstPointer; 00094 00095 typedef typename OutputMeshType::PointDataContainer OutputPointDataContainer; 00096 typedef typename OutputMeshType::CellDataContainer OutputCellDataContainer; 00097 00098 public: 00099 itkNewMacro( Self ); 00100 itkTypeMacro( QuadEdgeMeshToQuadEdgeMeshFilter, MeshToMeshFilter ); 00101 00102 protected: 00103 QuadEdgeMeshToQuadEdgeMeshFilter(); 00104 virtual ~QuadEdgeMeshToQuadEdgeMeshFilter() { } 00105 00106 virtual void CopyInputMeshToOutputMesh(); 00107 virtual void CopyInputMeshToOutputMeshGeometry(); 00108 virtual void CopyInputMeshToOutputMeshPoints(); 00109 virtual void CopyInputMeshToOutputMeshCells(); 00110 virtual void CopyInputMeshToOutputMeshEdgeCells(); 00111 virtual void CopyInputMeshToOutputMeshFieldData(); 00112 virtual void CopyInputMeshToOutputMeshPointData(); 00113 virtual void CopyInputMeshToOutputMeshCellData(); 00114 00115 private: 00116 QuadEdgeMeshToQuadEdgeMeshFilter( const Self& ); // Not impl. 00117 void operator=( const Self& ); // Not impl. 00118 }; 00119 00120 } // end namespace itk 00121 00122 #ifndef ITK_MANUAL_INSTANTIATION 00123 #include "itkQuadEdgeMeshToQuadEdgeMeshFilter.txx" 00124 #endif 00125 00126 #endif 00127