<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html><head><meta name="robots" content="noindex"> <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>ITK: itkCellInterface.h Source File</title> <link href="DoxygenStyle.css" rel="stylesheet" type="text/css"> </head><body bgcolor="#ffffff"> <!-- Section customized for INSIGHT : Tue Jul 17 01:02:45 2001 --> <center> <a href="index.html" class="qindex">Main Page</a> <a href="modules.html" class="qindex">Groups</a> <a href="namespaces.html" class="qindex">Namespace List</a> <a href="hierarchy.html" class="qindex">Class Hierarchy</a> <a href="classes.html" class="qindex">Alphabetical List</a> <a href="annotated.html" class="qindex">Compound List</a> <a href="files.html" class="qindex">File List</a> <a href="namespacemembers.html" class="qindex">Namespace Members</a> <a href="functions.html" class="qindex">Compound Members</a> <a href="globals.html" class="qindex">File Members</a> <a href="pages.html" class="qindex">Concepts</a></center> <!-- Generated by Doxygen 1.5.9 --> <div class="navpath"><a class="el" href="dir_02e23d841c198393a6e961e9a0678fff.html">Code</a> » <a class="el" href="dir_ea7fc529ede9a38b0438cf13831ae873.html">Common</a> </div> <div class="contents"> <h1>itkCellInterface.h</h1><a href="itkCellInterface_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*=========================================================================</span> <a name="l00002"></a>00002 <span class="comment"></span> <a name="l00003"></a>00003 <span class="comment"> Program: Insight Segmentation & Registration Toolkit</span> <a name="l00004"></a>00004 <span class="comment"> Module: $RCSfile: itkCellInterface.h,v $</span> <a name="l00005"></a>00005 <span class="comment"> Language: C++</span> <a name="l00006"></a>00006 <span class="comment"> Date: $Date: 2008-07-10 19:09:39 $</span> <a name="l00007"></a>00007 <span class="comment"> Version: $Revision: 1.67 $</span> <a name="l00008"></a>00008 <span class="comment"></span> <a name="l00009"></a>00009 <span class="comment"> Copyright (c) Insight Software Consortium. All rights reserved.</span> <a name="l00010"></a>00010 <span class="comment"> See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.</span> <a name="l00011"></a>00011 <span class="comment"></span> <a name="l00012"></a>00012 <span class="comment"> This software is distributed WITHOUT ANY WARRANTY; without even </span> <a name="l00013"></a>00013 <span class="comment"> the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR </span> <a name="l00014"></a>00014 <span class="comment"> PURPOSE. See the above copyright notices for more information.</span> <a name="l00015"></a>00015 <span class="comment"></span> <a name="l00016"></a>00016 <span class="comment">=========================================================================*/</span> <a name="l00017"></a>00017 <span class="preprocessor">#ifndef __itkCellInterface_h</span> <a name="l00018"></a>00018 <span class="preprocessor"></span><span class="preprocessor">#define __itkCellInterface_h</span> <a name="l00019"></a>00019 <span class="preprocessor"></span> <a name="l00020"></a>00020 <span class="preprocessor">#include "<a class="code" href="itkObject_8h.html">itkObject.h</a>"</span> <a name="l00021"></a>00021 <span class="preprocessor">#include "<a class="code" href="itkObjectFactory_8h.html">itkObjectFactory.h</a>"</span> <a name="l00022"></a>00022 <span class="preprocessor">#include <map></span> <a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="itkCellInterfaceVisitor_8h.html">itkCellInterfaceVisitor.h</a>"</span> <a name="l00024"></a>00024 <span class="preprocessor">#include "<a class="code" href="itkAutoPointer_8h.html">itkAutoPointer.h</a>"</span> <a name="l00025"></a>00025 <span class="preprocessor">#include "<a class="code" href="itkArray_8h.html">itkArray.h</a>"</span> <a name="l00026"></a>00026 <a name="l00027"></a>00027 <a name="l00028"></a>00028 <span class="comment">// Define a macro for CellInterface sub-classes to use</span> <a name="l00029"></a>00029 <span class="comment">// to define the Accept and GetTopologyId virtuals used</span> <a name="l00030"></a>00030 <span class="comment">// by the MultiVisitor class</span> <a name="l00031"></a><a class="code" href="itkCellInterface_8h.html#7617e22aa9b8626636cc18eba6f39573">00031</a> <span class="preprocessor">#define itkCellVisitMacro(TopologyId) \</span> <a name="l00032"></a>00032 <span class="preprocessor">static int GetTopologyId() {return TopologyId;}\</span> <a name="l00033"></a>00033 <span class="preprocessor">virtual void Accept(unsigned long cellid, typename CellInterface<PixelType,\</span> <a name="l00034"></a>00034 <span class="preprocessor"> CellTraits>::MultiVisitor* mv)\</span> <a name="l00035"></a>00035 <span class="preprocessor">{\</span> <a name="l00036"></a>00036 <span class="preprocessor"> typename CellInterfaceVisitor<PixelType, CellTraits>::Pointer v = \</span> <a name="l00037"></a>00037 <span class="preprocessor"> mv->GetVisitor(TopologyId);\</span> <a name="l00038"></a>00038 <span class="preprocessor"> if(v)\</span> <a name="l00039"></a>00039 <span class="preprocessor"> {\</span> <a name="l00040"></a>00040 <span class="preprocessor"> v->VisitFromCell(cellid, this);\</span> <a name="l00041"></a>00041 <span class="preprocessor"> }\</span> <a name="l00042"></a>00042 <span class="preprocessor">}</span> <a name="l00043"></a>00043 <span class="preprocessor"></span> <a name="l00044"></a>00044 <a name="l00045"></a>00045 <span class="comment">// Define a macro for the common typedefs required by the </span> <a name="l00046"></a>00046 <span class="comment">// classes deriving form CellInterface (included).</span> <a name="l00047"></a>00047 <span class="comment">// This wouldn't be necessary if SGI compilers </span> <a name="l00048"></a>00048 <span class="comment">// were able to inherit types.</span> <a name="l00049"></a><a class="code" href="itkCellInterface_8h.html#3e1296d588048ac4867d18e9859da647">00049</a> <span class="preprocessor">#define itkCellCommonTypedefs( celltype ) \</span> <a name="l00050"></a>00050 <span class="preprocessor"> typedef celltype Self; \</span> <a name="l00051"></a>00051 <span class="preprocessor"> typedef AutoPointer<const Self> ConstSelfAutoPointer; \</span> <a name="l00052"></a>00052 <span class="preprocessor"> typedef AutoPointer<Self> SelfAutoPointer; \</span> <a name="l00053"></a>00053 <span class="preprocessor"> typedef Self * RawPointer; \</span> <a name="l00054"></a>00054 <span class="preprocessor"> typedef const Self * ConstRawPointer; \</span> <a name="l00055"></a>00055 <span class="preprocessor"> SelfAutoPointer New(void) { \</span> <a name="l00056"></a>00056 <span class="preprocessor"> SelfAutoPointer ptr( new celltype ); \</span> <a name="l00057"></a>00057 <span class="preprocessor"> ptr.TakeOwnership(); \</span> <a name="l00058"></a>00058 <span class="preprocessor"> return ptr; \</span> <a name="l00059"></a>00059 <span class="preprocessor"> } \</span> <a name="l00060"></a>00060 <span class="preprocessor"></span> <a name="l00061"></a>00061 <span class="preprocessor"></span> <a name="l00062"></a>00062 <span class="comment">// Define a macro for the common typedefs required by the </span> <a name="l00063"></a>00063 <span class="comment">// classes deriving form CellInterface (excluded).</span> <a name="l00064"></a>00064 <span class="comment">// This wouldn't be necessary if SGI compilers </span> <a name="l00065"></a>00065 <span class="comment">// were able to inherit types.</span> <a name="l00066"></a><a class="code" href="itkCellInterface_8h.html#36c4891ac730e6adc8a85f05625c79dd">00066</a> <span class="preprocessor">#define itkCellInheritedTypedefs( superclassArg ) \</span> <a name="l00067"></a>00067 <span class="preprocessor"> typedef superclassArg Superclass; \</span> <a name="l00068"></a>00068 <span class="preprocessor"> typedef typename Superclass::PixelType PixelType; \</span> <a name="l00069"></a>00069 <span class="preprocessor"> typedef typename Superclass::CellType CellType; \</span> <a name="l00070"></a>00070 <span class="preprocessor"> typedef typename Superclass::CellAutoPointer CellAutoPointer; \</span> <a name="l00071"></a>00071 <span class="preprocessor"> typedef typename Superclass::CellConstAutoPointer CellConstAutoPointer; \</span> <a name="l00072"></a>00072 <span class="preprocessor"> typedef typename Superclass::CellRawPointer CellRawPointer; \</span> <a name="l00073"></a>00073 <span class="preprocessor"> typedef typename Superclass::CellConstRawPointer CellConstRawPointer; \</span> <a name="l00074"></a>00074 <span class="preprocessor"> typedef typename Superclass::CellTraits CellTraits; \</span> <a name="l00075"></a>00075 <span class="preprocessor"> typedef typename Superclass::CoordRepType CoordRepType; \</span> <a name="l00076"></a>00076 <span class="preprocessor"> typedef typename Superclass::InterpolationWeightType \</span> <a name="l00077"></a>00077 <span class="preprocessor"> InterpolationWeightType; \</span> <a name="l00078"></a>00078 <span class="preprocessor"> typedef typename Superclass::PointIdentifier PointIdentifier; \</span> <a name="l00079"></a>00079 <span class="preprocessor"> typedef typename Superclass::PointIdIterator PointIdIterator; \</span> <a name="l00080"></a>00080 <span class="preprocessor"> typedef typename Superclass::PointIdConstIterator PointIdConstIterator; \</span> <a name="l00081"></a>00081 <span class="preprocessor"> typedef typename Superclass::CellIdentifier CellIdentifier; \</span> <a name="l00082"></a>00082 <span class="preprocessor"> typedef typename Superclass::CellFeatureIdentifier CellFeatureIdentifier; \</span> <a name="l00083"></a>00083 <span class="preprocessor"> typedef typename Superclass::CellFeatureIdentifier CellFeatureCount; \</span> <a name="l00084"></a>00084 <span class="preprocessor"> typedef typename Superclass::PointType PointType; \</span> <a name="l00085"></a>00085 <span class="preprocessor"> typedef typename Superclass::VectorType VectorType; \</span> <a name="l00086"></a>00086 <span class="preprocessor"> typedef typename Superclass::PointsContainer PointsContainer; \</span> <a name="l00087"></a>00087 <span class="preprocessor"> typedef typename Superclass::UsingCellsContainer UsingCellsContainer; \</span> <a name="l00088"></a>00088 <span class="preprocessor"> typedef typename Superclass::CellGeometry CellGeometry; \</span> <a name="l00089"></a>00089 <span class="preprocessor"> typedef typename Superclass::ParametricCoordArrayType \</span> <a name="l00090"></a>00090 <span class="preprocessor"> ParametricCoordArrayType; \</span> <a name="l00091"></a>00091 <span class="preprocessor"> typedef typename Superclass::ShapeFunctionsArrayType \</span> <a name="l00092"></a>00092 <span class="preprocessor"> ShapeFunctionsArrayType; \</span> <a name="l00093"></a>00093 <span class="preprocessor"> itkStaticConstMacro(PointDimension, unsigned int, Superclass::PointDimension)</span> <a name="l00094"></a>00094 <span class="preprocessor"></span> <a name="l00095"></a>00095 <a name="l00096"></a>00096 <span class="keyword">namespace </span>itk <a name="l00097"></a>00097 { <a name="l00098"></a>00098 <a name="l00111"></a>00111 <span class="keyword">template</span> < <a name="l00112"></a>00112 <span class="keyword">typename</span> TPixelType, <a name="l00113"></a>00113 <span class="keyword">typename</span> TCellTraits <a name="l00114"></a>00114 > <a name="l00115"></a><a class="code" href="classitk_1_1CellInterface.html">00115</a> <span class="keyword">class </span><a class="code" href="classitk_1_1CellInterface.html">CellInterface</a> <a name="l00116"></a>00116 { <a name="l00117"></a>00117 <span class="keyword">public</span>: <a name="l00118"></a>00118 <a name="l00120"></a>00120 <a class="code" href="classitk_1_1CellInterface.html#da1f07629af75c4cb9a419cb6600fb29">itkCellCommonTypedefs</a>(<a class="code" href="classitk_1_1CellInterface.html">CellInterface</a>); <a name="l00121"></a>00121 <a name="l00123"></a><a class="code" href="classitk_1_1CellInterface.html#f4eabba41cfbf7225769cc0c8e449aca">00123</a> <span class="keyword">typedef</span> TPixelType <a class="code" href="classitk_1_1CellInterface.html#f4eabba41cfbf7225769cc0c8e449aca">PixelType</a>; <a name="l00124"></a>00124 <a name="l00126"></a><a class="code" href="classitk_1_1CellInterface.html#08fb9fdb69965825d810eb38d42ff97d">00126</a> <span class="keyword">typedef</span> TCellTraits <a class="code" href="classitk_1_1CellInterface.html#08fb9fdb69965825d810eb38d42ff97d">CellTraits</a>; <a name="l00127"></a>00127 <a name="l00129"></a><a class="code" href="classitk_1_1CellInterface.html#c79a2e9c8c66a4215786d5879f623de5">00129</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> CellTraits::CoordRepType <a class="code" href="classitk_1_1CellInterface.html#c79a2e9c8c66a4215786d5879f623de5">CoordRepType</a>; <a name="l00130"></a><a class="code" href="classitk_1_1CellInterface.html#9bdd814aca10a36c6bb280690379b73f">00130</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> CellTraits::InterpolationWeightType <a class="code" href="classitk_1_1CellInterface.html#9bdd814aca10a36c6bb280690379b73f">InterpolationWeightType</a>; <a name="l00131"></a><a class="code" href="classitk_1_1CellInterface.html#412afa10aeef5c020de2bdd077ead5f5">00131</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> CellTraits::PointIdentifier <a class="code" href="classitk_1_1CellInterface.html#412afa10aeef5c020de2bdd077ead5f5">PointIdentifier</a>; <a name="l00132"></a><a class="code" href="classitk_1_1CellInterface.html#6dd9b3cb49aa2bb68d4a806170b313aa">00132</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> CellTraits::PointIdIterator <a class="code" href="classitk_1_1CellInterface.html#6dd9b3cb49aa2bb68d4a806170b313aa">PointIdIterator</a>; <a name="l00133"></a><a class="code" href="classitk_1_1CellInterface.html#83f560ee0ec24a243a43f7f5a591c0d8">00133</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> CellTraits::PointIdConstIterator <a class="code" href="classitk_1_1CellInterface.html#83f560ee0ec24a243a43f7f5a591c0d8">PointIdConstIterator</a>; <a name="l00134"></a><a class="code" href="classitk_1_1CellInterface.html#ebf3f7ea6e09ace57840f021d725b04e">00134</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> CellTraits::CellIdentifier <a class="code" href="classitk_1_1CellInterface.html#ebf3f7ea6e09ace57840f021d725b04e">CellIdentifier</a>; <a name="l00135"></a><a class="code" href="classitk_1_1CellInterface.html#93e7805570f1ad6fa2adcc675c79a399">00135</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> CellTraits::CellFeatureIdentifier <a class="code" href="classitk_1_1CellInterface.html#93e7805570f1ad6fa2adcc675c79a399">CellFeatureIdentifier</a>; <a name="l00136"></a><a class="code" href="classitk_1_1CellInterface.html#dbec3abe73301503c59cb6d196b1fcb4">00136</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> CellTraits::PointType <a class="code" href="classitk_1_1CellInterface.html#dbec3abe73301503c59cb6d196b1fcb4">PointType</a>; <a name="l00137"></a><a class="code" href="classitk_1_1CellInterface.html#bbf907f597121cc09dc1d90b2d14d942">00137</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> CellTraits::PointsContainer <a class="code" href="classitk_1_1CellInterface.html#bbf907f597121cc09dc1d90b2d14d942">PointsContainer</a>; <a name="l00138"></a><a class="code" href="classitk_1_1CellInterface.html#4b555206cd7ba5e5084a0695666cf6bc">00138</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> CellTraits::UsingCellsContainer <a class="code" href="classitk_1_1CellInterface.html#4b555206cd7ba5e5084a0695666cf6bc">UsingCellsContainer</a>; <a name="l00139"></a>00139 <a name="l00141"></a><a class="code" href="classitk_1_1CellInterface.html#e089ff9a6218d9d3040421cb0532a121">00141</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> PointType::VectorType <a class="code" href="classitk_1_1CellInterface.html#e089ff9a6218d9d3040421cb0532a121" title="NOTE: it should normally be defined in the traits.">VectorType</a>; <a name="l00142"></a>00142 <a name="l00144"></a>00144 <a class="code" href="classitk_1_1CellInterface.html#38d81bc232a5587184ba2c8e1abf9827">itkStaticConstMacro</a>(PointDimension, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>,CellTraits::PointDimension); <a name="l00145"></a>00145 <a name="l00147"></a><a class="code" href="classitk_1_1CellInterface.html#9289ee142165bfcc1c0a5f78f6387de3">00147</a> <span class="keyword">typedef</span> <span class="keyword">typename</span> UsingCellsContainer::iterator <a class="code" href="classitk_1_1CellInterface.html#9289ee142165bfcc1c0a5f78f6387de3">UsingCellsContainerIterator</a>; <a name="l00148"></a>00148 <a name="l00150"></a><a class="code" href="classitk_1_1CellInterface.html#254198dd04f2687854e17910aed5a66d">00150</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1CellInterface.html">CellInterface</a> <a class="code" href="classitk_1_1CellInterface.html">CellType</a>; <a name="l00151"></a><a class="code" href="classitk_1_1CellInterface.html#c5573ca4be06fc73221d175a5c888264">00151</a> <span class="keyword">typedef</span> SelfAutoPointer <a class="code" href="classitk_1_1CellInterface.html#c5573ca4be06fc73221d175a5c888264">CellAutoPointer</a>; <a name="l00152"></a><a class="code" href="classitk_1_1CellInterface.html#4d367a6a1d7f066cfca12371be596f10">00152</a> <span class="keyword">typedef</span> ConstSelfAutoPointer <a class="code" href="classitk_1_1CellInterface.html#4d367a6a1d7f066cfca12371be596f10">CellConstAutoPointer</a>; <a name="l00153"></a><a class="code" href="classitk_1_1CellInterface.html#370455050c190a05f54ea034082cc1b5">00153</a> <span class="keyword">typedef</span> RawPointer <a class="code" href="classitk_1_1CellInterface.html#370455050c190a05f54ea034082cc1b5">CellRawPointer</a>; <a name="l00154"></a><a class="code" href="classitk_1_1CellInterface.html#cceba833b4d71defd511b718fc3df45c">00154</a> <span class="keyword">typedef</span> ConstRawPointer <a class="code" href="classitk_1_1CellInterface.html#cceba833b4d71defd511b718fc3df45c">CellConstRawPointer</a>; <a name="l00155"></a>00155 <a name="l00157"></a><a class="code" href="classitk_1_1CellInterface.html#ef49f6c839e54b16d66e18c7e41a228c">00157</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1CellInterface.html#93e7805570f1ad6fa2adcc675c79a399">CellFeatureIdentifier</a> <a class="code" href="classitk_1_1CellInterface.html#ef49f6c839e54b16d66e18c7e41a228c">CellFeatureCount</a>; <a name="l00158"></a>00158 <a name="l00160"></a><a class="code" href="classitk_1_1CellInterface.html#f0a3286a644617b2468edb596ba46199d021104b75029c15ef14762d07b2f4cc">00160</a> <span class="keyword">enum</span> <a class="code" href="classitk_1_1CellInterface.html#f0a3286a644617b2468edb596ba46199">CellGeometry</a> {<a class="code" href="classitk_1_1CellInterface.html#f0a3286a644617b2468edb596ba46199d021104b75029c15ef14762d07b2f4cc">VERTEX_CELL</a>=0, <a class="code" href="classitk_1_1CellInterface.html#f0a3286a644617b2468edb596ba46199551dfc9325fe3048d3e56f75667db1b8">LINE_CELL</a>, <a class="code" href="classitk_1_1CellInterface.html#f0a3286a644617b2468edb596ba46199ff1ecb6fea521796781b46cd913cb05d">TRIANGLE_CELL</a>, <a name="l00161"></a><a class="code" href="classitk_1_1CellInterface.html#f0a3286a644617b2468edb596ba461990b1840037f9c604bb37f4aac9d177412">00161</a> <a class="code" href="classitk_1_1CellInterface.html#f0a3286a644617b2468edb596ba4619954640b8fc43d10760ae60493f1c0e9f0">QUADRILATERAL_CELL</a>, <a class="code" href="classitk_1_1CellInterface.html#f0a3286a644617b2468edb596ba461994dac716c69c9f794dcf81b7e87264636">POLYGON_CELL</a>, <a class="code" href="classitk_1_1CellInterface.html#f0a3286a644617b2468edb596ba461990b1840037f9c604bb37f4aac9d177412">TETRAHEDRON_CELL</a>, <a class="code" href="classitk_1_1CellInterface.html#f0a3286a644617b2468edb596ba461999e0298adb81fbf81a0c148d064510522">HEXAHEDRON_CELL</a>, <a name="l00162"></a><a class="code" href="classitk_1_1CellInterface.html#f0a3286a644617b2468edb596ba461994b26d3f69c206bb19c9a49eac3f113c3">00162</a> <a class="code" href="classitk_1_1CellInterface.html#f0a3286a644617b2468edb596ba461998598cf2b1ea60b9227d2b8713fed9e34">QUADRATIC_EDGE_CELL</a>, <a class="code" href="classitk_1_1CellInterface.html#f0a3286a644617b2468edb596ba461994b26d3f69c206bb19c9a49eac3f113c3">QUADRATIC_TRIANGLE_CELL</a>, <a name="l00163"></a><a class="code" href="classitk_1_1CellInterface.html#f0a3286a644617b2468edb596ba46199c2fa2b50f47491954fdfe2321b6b023c">00163</a> <a class="code" href="classitk_1_1CellInterface.html#f0a3286a644617b2468edb596ba46199f2d4129622bbafb9382eeaf81d3195df">LAST_ITK_CELL</a>, <a class="code" href="classitk_1_1CellInterface.html#f0a3286a644617b2468edb596ba46199c2fa2b50f47491954fdfe2321b6b023c">MAX_ITK_CELLS</a>=255}; <a name="l00164"></a>00164 <a name="l00166"></a><a class="code" href="classitk_1_1CellInterface.html#1055e806e4fd48971109229995d98e31">00166</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1Array.html" title="Array class with size defined at construction time.">Array<CoordRepType></a> <a class="code" href="classitk_1_1Array.html" title="Array class with size defined at construction time.">ParametricCoordArrayType</a>; <a name="l00167"></a><a class="code" href="classitk_1_1CellInterface.html#06dca5b940d30e1b135b30b588acbd96">00167</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1Array.html" title="Array class with size defined at construction time.">Array<InterpolationWeightType></a> <a class="code" href="classitk_1_1Array.html" title="Array class with size defined at construction time.">ShapeFunctionsArrayType</a>; <a name="l00168"></a>00168 <a name="l00169"></a>00169 <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="classitk_1_1CellInterface.html#cf1850ab8959a3751f3c2dbdcc81b3a0">GetNextUserCellId</a>(); <span class="comment">// never return > MAX_INTERFACE</span> <a name="l00170"></a>00170 <a name="l00177"></a><a class="code" href="classitk_1_1CellInterface_1_1MultiVisitor.html">00177</a> <span class="keyword">class </span><a class="code" href="classitk_1_1CellInterface_1_1MultiVisitor.html" title="A visitor that can visit different cell types in a mesh. CellInterfaceVisitor instances...">MultiVisitor</a> : <span class="keyword">public</span> <a class="code" href="classitk_1_1LightObject.html" title="Light weight base class for most itk classes.">LightObject</a> <a name="l00178"></a>00178 { <a name="l00179"></a>00179 <span class="keyword">public</span>: <a name="l00182"></a><a class="code" href="classitk_1_1CellInterface_1_1MultiVisitor.html#72f5eaddd3185da30f98098597c2c800">00182</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1CellInterfaceVisitor.html">CellInterfaceVisitor<TPixelType, TCellTraits></a> <a class="code" href="classitk_1_1CellInterfaceVisitor.html">VisitorType</a>; <a name="l00183"></a>00183 <a name="l00185"></a><a class="code" href="classitk_1_1CellInterface_1_1MultiVisitor.html#eaa6caed944370a2c7cb8a086a0f2508">00185</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1CellInterface_1_1MultiVisitor.html" title="A visitor that can visit different cell types in a mesh. CellInterfaceVisitor instances...">MultiVisitor</a> <a class="code" href="classitk_1_1CellInterface_1_1MultiVisitor.html" title="A visitor that can visit different cell types in a mesh. CellInterfaceVisitor instances...">Self</a>; <a name="l00186"></a><a class="code" href="classitk_1_1CellInterface_1_1MultiVisitor.html#4246e618f4b14b4033163c3d5873b880">00186</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1SmartPointer.html">SmartPointer<Self></a> <a class="code" href="classitk_1_1SmartPointer.html">Pointer</a>; <a name="l00187"></a>00187 <a name="l00189"></a>00189 <span class="comment">//itkNewMacro(Self);</span> <a name="l00190"></a><a class="code" href="classitk_1_1CellInterface_1_1MultiVisitor.html#156fb27b71cef91c0611e9da08e0ba7d">00190</a> <span class="keyword">static</span> <a class="code" href="classitk_1_1SmartPointer.html">Pointer</a> <a class="code" href="classitk_1_1CellInterface_1_1MultiVisitor.html#156fb27b71cef91c0611e9da08e0ba7d">New</a>(<span class="keywordtype">void</span>) { <a class="code" href="classitk_1_1SmartPointer.html">Pointer</a> smartPtr = <span class="keyword">new</span> <a class="code" href="classitk_1_1CellInterface_1_1MultiVisitor.html" title="A visitor that can visit different cell types in a mesh. CellInterfaceVisitor instances...">Self</a>; smartPtr->UnRegister(); <span class="keywordflow">return</span> smartPtr;} <a name="l00192"></a>00192 <a name="l00194"></a><a class="code" href="classitk_1_1CellInterface_1_1MultiVisitor.html#5da2d5f881aa970ac39212daa2db17ad">00194</a> <a class="code" href="itkMacro_8h.html#574c1f86661d409dd32c742307a0e96a">itkTypeMacro</a>(<a class="code" href="classitk_1_1CellInterface_1_1MultiVisitor.html" title="A visitor that can visit different cell types in a mesh. CellInterfaceVisitor instances...">MultiVisitor</a>,<a class="code" href="classitk_1_1LightObject.html" title="Light weight base class for most itk classes.">LightObject</a>); <a name="l00195"></a>00195 <a name="l00197"></a>00197 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classitk_1_1SmartPointer.html">VisitorType::Pointer</a> <a class="code" href="classitk_1_1SmartPointer.html">VisitorPointer</a>; <a name="l00198"></a>00198 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="namespaceitk.html#87ac35b82c3f0b7231a21eda576557d1">std::map<int, VisitorPointer>::value_type</a> <a name="l00199"></a><a class="code" href="classitk_1_1CellInterface_1_1MultiVisitor.html#f163d1672bf04fc1c72927c02a21e5f7">00199</a> <a class="code" href="classitk_1_1CellInterface_1_1MultiVisitor.html#f163d1672bf04fc1c72927c02a21e5f7">VisitorPointerValueType</a>; <a name="l00200"></a>00200 <a name="l00201"></a>00201 <span class="keyword">public</span>: <a name="l00202"></a><a class="code" href="classitk_1_1CellInterface_1_1MultiVisitor.html#6006c61f760978ee34355c18439f208f">00202</a> <a class="code" href="classitk_1_1CellInterfaceVisitor.html">VisitorType</a> * <a class="code" href="classitk_1_1CellInterface_1_1MultiVisitor.html#6006c61f760978ee34355c18439f208f">GetVisitor</a>(<span class="keywordtype">int</span> <span class="keywordtype">id</span>) <a name="l00203"></a>00203 { <a name="l00204"></a>00204 <span class="keywordflow">if</span>(<span class="keywordtype">id</span> <= <a class="code" href="classitk_1_1CellInterface.html#f0a3286a644617b2468edb596ba46199f2d4129622bbafb9382eeaf81d3195df">LAST_ITK_CELL</a>) <a name="l00205"></a>00205 { <a name="l00206"></a>00206 <span class="keywordflow">return</span> <a class="code" href="classitk_1_1CellInterface_1_1MultiVisitor.html#2d6eb6dd70635f965c635dedd46eb645">m_Visitors</a>[id]; <a name="l00207"></a>00207 } <a name="l00208"></a>00208 <span class="keywordflow">else</span> <a name="l00209"></a>00209 { <a name="l00210"></a>00210 <span class="keyword">typename</span> std::map<int, ITK_TYPENAME VisitorType::Pointer>::iterator <a name="l00211"></a>00211 pos = <a class="code" href="classitk_1_1CellInterface_1_1MultiVisitor.html#d2eed64dd0cde866ab2f200f28b25d53">m_UserDefined</a>.find(<span class="keywordtype">id</span>); <a name="l00212"></a>00212 <span class="keywordflow">if</span>(pos != <a class="code" href="classitk_1_1CellInterface_1_1MultiVisitor.html#d2eed64dd0cde866ab2f200f28b25d53">m_UserDefined</a>.end()) <a name="l00213"></a>00213 { <a name="l00214"></a>00214 <span class="keywordflow">return</span> (*pos).second; <a name="l00215"></a>00215 } <a name="l00216"></a>00216 } <a name="l00217"></a>00217 <span class="keywordflow">return</span> 0; <a name="l00218"></a>00218 } <a name="l00219"></a>00219 <a name="l00220"></a><a class="code" href="classitk_1_1CellInterface_1_1MultiVisitor.html#6d11582cd9ecf391f9128425f8a35102">00220</a> <span class="keywordtype">void</span> <a class="code" href="classitk_1_1CellInterface_1_1MultiVisitor.html#6d11582cd9ecf391f9128425f8a35102">AddVisitor</a>(<a class="code" href="classitk_1_1CellInterfaceVisitor.html">VisitorType</a>* v) <a name="l00221"></a>00221 { <a name="l00222"></a>00222 <span class="keywordtype">int</span> <span class="keywordtype">id</span> = v-><a class="code" href="classitk_1_1CellInterfaceVisitor.html#77ee1256803faebec8e0d0a418ccef23">GetCellTopologyId</a>(); <a name="l00223"></a>00223 <span class="keywordflow">if</span>(<span class="keywordtype">id</span> <= <a class="code" href="classitk_1_1CellInterface.html#f0a3286a644617b2468edb596ba46199f2d4129622bbafb9382eeaf81d3195df">LAST_ITK_CELL</a>) <a name="l00224"></a>00224 { <a name="l00225"></a>00225 <a class="code" href="classitk_1_1CellInterface_1_1MultiVisitor.html#2d6eb6dd70635f965c635dedd46eb645">m_Visitors</a>[id] = v; <a name="l00226"></a>00226 } <a name="l00227"></a>00227 <span class="keywordflow">else</span> <a name="l00228"></a>00228 { <a name="l00229"></a>00229 <a class="code" href="classitk_1_1CellInterface_1_1MultiVisitor.html#d2eed64dd0cde866ab2f200f28b25d53">m_UserDefined</a>.insert(<a class="code" href="classitk_1_1CellInterface_1_1MultiVisitor.html#f163d1672bf04fc1c72927c02a21e5f7">VisitorPointerValueType</a>(<span class="keywordtype">id</span>,v)); <a name="l00230"></a>00230 } <a name="l00231"></a>00231 } <a name="l00232"></a><a class="code" href="classitk_1_1CellInterface_1_1MultiVisitor.html#6d003d7e5c3779ab454df823f813d1c9">00232</a> <span class="keyword">virtual</span> <a class="code" href="classitk_1_1CellInterface_1_1MultiVisitor.html#6d003d7e5c3779ab454df823f813d1c9">~MultiVisitor</a>() {} <a name="l00233"></a>00233 <a name="l00234"></a>00234 <span class="keyword">protected</span>: <a name="l00235"></a><a class="code" href="classitk_1_1CellInterface_1_1MultiVisitor.html#2d6eb6dd70635f965c635dedd46eb645">00235</a> <a class="code" href="classitk_1_1SmartPointer.html">VisitorPointer</a> <a class="code" href="classitk_1_1CellInterface_1_1MultiVisitor.html#2d6eb6dd70635f965c635dedd46eb645">m_Visitors</a>[<a class="code" href="classitk_1_1CellInterface.html#f0a3286a644617b2468edb596ba46199f2d4129622bbafb9382eeaf81d3195df">LAST_ITK_CELL</a>]; <span class="comment">// fixed array set to the size </span> <a name="l00236"></a>00236 <span class="comment">// from the enum</span> <a name="l00237"></a><a class="code" href="classitk_1_1CellInterface_1_1MultiVisitor.html#d2eed64dd0cde866ab2f200f28b25d53">00237</a> std::map<int,VisitorPointer> <a class="code" href="classitk_1_1CellInterface_1_1MultiVisitor.html#d2eed64dd0cde866ab2f200f28b25d53">m_UserDefined</a>; <span class="comment">// user defined cell types </span> <a name="l00238"></a>00238 <span class="comment">// go here</span> <a name="l00239"></a>00239 }; <a name="l00240"></a>00240 <a name="l00242"></a>00242 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classitk_1_1CellInterface.html#262fa18d492fd71f8e3ff68cd8664a8d">Accept</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> cellId, <a class="code" href="classitk_1_1CellInterface_1_1MultiVisitor.html" title="A visitor that can visit different cell types in a mesh. CellInterfaceVisitor instances...">MultiVisitor</a>*)= 0; <a name="l00243"></a>00243 <a name="l00246"></a>00246 <span class="keyword">virtual</span> <a class="code" href="classitk_1_1CellInterface.html#f0a3286a644617b2468edb596ba46199">CellGeometry</a> <a class="code" href="classitk_1_1CellInterface.html#19b466a1d109025c58efdbe4a45a9f16">GetType</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span> =0; <a name="l00247"></a>00247 <a name="l00250"></a>00250 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classitk_1_1CellInterface.html#f449e373de247dca626f65f37adc3403">MakeCopy</a>( <a class="code" href="classitk_1_1CellInterface.html#c5573ca4be06fc73221d175a5c888264">CellAutoPointer</a> & ) <span class="keyword">const</span> = 0; <a name="l00251"></a>00251 <a name="l00253"></a>00253 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classitk_1_1CellInterface.html#ee96c255d1cccc8378e39b4377008764">GetDimension</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>=0; <a name="l00254"></a>00254 <a name="l00256"></a>00256 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classitk_1_1CellInterface.html#cf13cd4c1c9a8fd3b3f93a8acb0c8a1c">GetInterpolationOrder</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>; <a name="l00257"></a>00257 <a name="l00259"></a>00259 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classitk_1_1CellInterface.html#68bfe8400d5eb7a9db84279fc85f732e">GetNumberOfPoints</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>=0; <a name="l00260"></a>00260 <a name="l00262"></a>00262 <span class="keyword">virtual</span> <a class="code" href="classitk_1_1CellInterface.html#ef49f6c839e54b16d66e18c7e41a228c">CellFeatureCount</a> <a class="code" href="classitk_1_1CellInterface.html#2ef7926ba252d1c669383bc1aa14125e">GetNumberOfBoundaryFeatures</a>(<span class="keywordtype">int</span> dimension) <span class="keyword">const</span> =0; <a name="l00263"></a>00263 <a name="l00265"></a>00265 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classitk_1_1CellInterface.html#254d1dec795fa29b2e92f8483722485a">GetBoundaryFeature</a>(<span class="keywordtype">int</span> dimension, <a class="code" href="classitk_1_1CellInterface.html#93e7805570f1ad6fa2adcc675c79a399">CellFeatureIdentifier</a>, <a name="l00266"></a>00266 <a class="code" href="classitk_1_1CellInterface.html#c5573ca4be06fc73221d175a5c888264">CellAutoPointer</a> & )=0; <a name="l00267"></a>00267 <a name="l00271"></a>00271 <span class="keyword">virtual</span> <a class="code" href="classitk_1_1CellInterface.html#83f560ee0ec24a243a43f7f5a591c0d8">PointIdConstIterator</a> <a class="code" href="classitk_1_1CellInterface.html#198ac59429cc0f034dae25830b36aa79">GetPointIds</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>; <a name="l00272"></a>00272 <a name="l00276"></a>00276 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classitk_1_1CellInterface.html#054857e515a11a2a0381949d42995b8a">SetPointIds</a>(<a class="code" href="classitk_1_1CellInterface.html#83f560ee0ec24a243a43f7f5a591c0d8">PointIdConstIterator</a> first)=0; <a name="l00277"></a>00277 <a name="l00282"></a>00282 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classitk_1_1CellInterface.html#054857e515a11a2a0381949d42995b8a">SetPointIds</a>(<a class="code" href="classitk_1_1CellInterface.html#83f560ee0ec24a243a43f7f5a591c0d8">PointIdConstIterator</a> first, <a name="l00283"></a>00283 <a class="code" href="classitk_1_1CellInterface.html#83f560ee0ec24a243a43f7f5a591c0d8">PointIdConstIterator</a> last)=0; <a name="l00284"></a>00284 <a name="l00287"></a>00287 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classitk_1_1CellInterface.html#1ace5cf564bce5dcfee42504bb98a7bf">SetPointId</a>(<span class="keywordtype">int</span> localId, <a class="code" href="classitk_1_1CellInterface.html#412afa10aeef5c020de2bdd077ead5f5">PointIdentifier</a>)=0; <a name="l00288"></a>00288 <a name="l00290"></a>00290 <span class="keyword">virtual</span> <a class="code" href="classitk_1_1CellInterface.html#6dd9b3cb49aa2bb68d4a806170b313aa">PointIdIterator</a> <a class="code" href="classitk_1_1CellInterface.html#7a0e28f16ee8c3ebcdc5e5170a7b7189">PointIdsBegin</a>(<span class="keywordtype">void</span>)=0; <a name="l00291"></a>00291 <a name="l00294"></a>00294 <span class="keyword">virtual</span> <a class="code" href="classitk_1_1CellInterface.html#83f560ee0ec24a243a43f7f5a591c0d8">PointIdConstIterator</a> <a class="code" href="classitk_1_1CellInterface.html#7a0e28f16ee8c3ebcdc5e5170a7b7189">PointIdsBegin</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span> =0; <a name="l00295"></a>00295 <a name="l00297"></a>00297 <span class="keyword">virtual</span> <a class="code" href="classitk_1_1CellInterface.html#6dd9b3cb49aa2bb68d4a806170b313aa">PointIdIterator</a> <a class="code" href="classitk_1_1CellInterface.html#476ba39755f56aa2175c5eddf9868990">PointIdsEnd</a>(<span class="keywordtype">void</span>)=0; <a name="l00298"></a>00298 <a name="l00301"></a>00301 <span class="keyword">virtual</span> <a class="code" href="classitk_1_1CellInterface.html#83f560ee0ec24a243a43f7f5a591c0d8">PointIdConstIterator</a> <a class="code" href="classitk_1_1CellInterface.html#476ba39755f56aa2175c5eddf9868990">PointIdsEnd</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span> =0; <a name="l00302"></a>00302 <a name="l00307"></a><a class="code" href="classitk_1_1CellInterface.html#93213d1a7ba83efa03763ba646864cbb">00307</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classitk_1_1CellInterface.html#93213d1a7ba83efa03763ba646864cbb">GetClosestBoundary</a>(<a class="code" href="classitk_1_1CellInterface.html#c79a2e9c8c66a4215786d5879f623de5">CoordRepType</a> [], <span class="keywordtype">bool</span>* , <a class="code" href="classitk_1_1CellInterface.html#c5573ca4be06fc73221d175a5c888264">CellAutoPointer</a> &) <a name="l00308"></a>00308 {<span class="keywordflow">return</span> <span class="keyword">false</span>;} <a name="l00309"></a>00309 <a name="l00326"></a><a class="code" href="classitk_1_1CellInterface.html#d69a70867d59543417869dfe943c9508">00326</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classitk_1_1CellInterface.html#d69a70867d59543417869dfe943c9508">EvaluatePosition</a>(<a class="code" href="classitk_1_1CellInterface.html#c79a2e9c8c66a4215786d5879f623de5">CoordRepType</a>* , <a name="l00327"></a>00327 <a class="code" href="classitk_1_1CellInterface.html#bbf907f597121cc09dc1d90b2d14d942">PointsContainer</a>* , <a name="l00328"></a>00328 <a class="code" href="classitk_1_1CellInterface.html#c79a2e9c8c66a4215786d5879f623de5">CoordRepType</a>* , <a name="l00329"></a>00329 <a class="code" href="classitk_1_1CellInterface.html#c79a2e9c8c66a4215786d5879f623de5">CoordRepType</a> [], <a name="l00330"></a>00330 <span class="keywordtype">double</span> *, <a name="l00331"></a>00331 <a class="code" href="classitk_1_1CellInterface.html#9bdd814aca10a36c6bb280690379b73f">InterpolationWeightType</a>*) <a name="l00332"></a>00332 {<span class="keywordflow">return</span> bool();} <a name="l00333"></a>00333 <a name="l00337"></a><a class="code" href="classitk_1_1CellInterface.html#345a9bbd442cf383938abc0de0084444">00337</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classitk_1_1CellInterface.html#345a9bbd442cf383938abc0de0084444">EvaluateShapeFunctions</a>( <a name="l00338"></a>00338 <span class="keyword">const</span> <a class="code" href="classitk_1_1Array.html" title="Array class with size defined at construction time.">ParametricCoordArrayType</a> &, <a name="l00339"></a>00339 <a class="code" href="classitk_1_1Array.html" title="Array class with size defined at construction time.">ShapeFunctionsArrayType</a> &)<span class="keyword"> const </span>{} <a name="l00340"></a>00340 <a name="l00356"></a><a class="code" href="classitk_1_1CellInterface.html#bb1345f8bb84923f11127b51d491b618">00356</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classitk_1_1CellInterface.html#bb1345f8bb84923f11127b51d491b618">IntersectWithLine</a>(<a class="code" href="classitk_1_1CellInterface.html#c79a2e9c8c66a4215786d5879f623de5">CoordRepType</a> [PointDimension], <a name="l00357"></a>00357 <a class="code" href="classitk_1_1CellInterface.html#c79a2e9c8c66a4215786d5879f623de5">CoordRepType</a> [PointDimension], <a name="l00358"></a>00358 <a class="code" href="classitk_1_1CellInterface.html#c79a2e9c8c66a4215786d5879f623de5">CoordRepType</a> , <a name="l00359"></a>00359 <a class="code" href="classitk_1_1CellInterface.html#c79a2e9c8c66a4215786d5879f623de5">CoordRepType</a> [PointDimension], <a name="l00360"></a>00360 <a class="code" href="classitk_1_1CellInterface.html#c79a2e9c8c66a4215786d5879f623de5">CoordRepType</a>*, <a name="l00361"></a>00361 <a class="code" href="classitk_1_1CellInterface.html#c79a2e9c8c66a4215786d5879f623de5">CoordRepType</a> []) {<span class="keywordflow">return</span> bool();} <a name="l00362"></a>00362 <a name="l00367"></a><a class="code" href="classitk_1_1CellInterface.html#934ae927ea21a3cf6e02b346fef45b81">00367</a> <a class="code" href="classitk_1_1CellInterface.html#c79a2e9c8c66a4215786d5879f623de5">CoordRepType</a>* <a class="code" href="classitk_1_1CellInterface.html#934ae927ea21a3cf6e02b346fef45b81">GetBoundingBox</a>(<a class="code" href="classitk_1_1CellInterface.html#c79a2e9c8c66a4215786d5879f623de5">CoordRepType</a> [PointDimension*2]) {<span class="keywordflow">return</span> <a class="code" href="itkVoronoiDiagram2D_8h.html#070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>;} <a name="l00369"></a>00369 <a name="l00371"></a><a class="code" href="classitk_1_1CellInterface.html#58042c7266a83507b196f6a866d3b4a7">00371</a> <a class="code" href="classitk_1_1CellInterface.html#c79a2e9c8c66a4215786d5879f623de5">CoordRepType</a> <a class="code" href="classitk_1_1CellInterface.html#58042c7266a83507b196f6a866d3b4a7">GetBoundingBoxDiagonalLength2</a>(<span class="keywordtype">void</span>) {<span class="keywordflow">return</span> <a class="code" href="itkVoronoiDiagram2D_8h.html#070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>;} <a name="l00372"></a>00372 <a name="l00385"></a><a class="code" href="classitk_1_1CellInterface.html#1f70b2190d0ecc337c68e8bc0465eab1">00385</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classitk_1_1CellInterface.html#1f70b2190d0ecc337c68e8bc0465eab1">IntersectBoundingBoxWithLine</a>(<a class="code" href="classitk_1_1CellInterface.html#c79a2e9c8c66a4215786d5879f623de5">CoordRepType</a> [PointDimension*2], <a name="l00386"></a>00386 <a class="code" href="classitk_1_1CellInterface.html#c79a2e9c8c66a4215786d5879f623de5">CoordRepType</a> [PointDimension], <a name="l00387"></a>00387 <a class="code" href="classitk_1_1CellInterface.html#c79a2e9c8c66a4215786d5879f623de5">CoordRepType</a> [PointDimension], <a name="l00388"></a>00388 <a class="code" href="classitk_1_1CellInterface.html#c79a2e9c8c66a4215786d5879f623de5">CoordRepType</a> [PointDimension], <a name="l00389"></a>00389 <a class="code" href="classitk_1_1CellInterface.html#c79a2e9c8c66a4215786d5879f623de5">CoordRepType</a>* ) {<span class="keywordflow">return</span> bool();} <a name="l00390"></a>00390 <a name="l00396"></a>00396 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classitk_1_1CellInterface.html#ecf033f28a9ce66ae70ab761c8944169">IsExplicitBoundary</a>(<span class="keywordtype">void</span>); <a name="l00397"></a>00397 <a name="l00402"></a>00402 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classitk_1_1CellInterface.html#5ba6546b209fae20124f871b6fb2ea61">AddUsingCell</a>(<a class="code" href="classitk_1_1CellInterface.html#ebf3f7ea6e09ace57840f021d725b04e">CellIdentifier</a> cellId); <a name="l00403"></a>00403 <a name="l00407"></a>00407 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classitk_1_1CellInterface.html#382bbf57376be3e185916d562f2f951f">RemoveUsingCell</a>(<a class="code" href="classitk_1_1CellInterface.html#ebf3f7ea6e09ace57840f021d725b04e">CellIdentifier</a> cellId); <a name="l00408"></a>00408 <a name="l00414"></a>00414 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classitk_1_1CellInterface.html#012489f1c94c7da138054eb64e133ae2">IsUsingCell</a>(<a class="code" href="classitk_1_1CellInterface.html#ebf3f7ea6e09ace57840f021d725b04e">CellIdentifier</a> cellId); <a name="l00415"></a>00415 <a name="l00419"></a>00419 <span class="keyword">virtual</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="classitk_1_1CellInterface.html#68d93e29776eba044dc0a34e936a565e">GetNumberOfUsingCells</a>(<span class="keywordtype">void</span>); <a name="l00420"></a>00420 <a name="l00424"></a>00424 <span class="keyword">virtual</span> <a class="code" href="classitk_1_1CellInterface.html#9289ee142165bfcc1c0a5f78f6387de3">UsingCellsContainerIterator</a> <a class="code" href="classitk_1_1CellInterface.html#873094e613fc087004b13571f9bb727d">UsingCellsBegin</a>(<span class="keywordtype">void</span>); <a name="l00425"></a>00425 <a name="l00429"></a>00429 <span class="keyword">virtual</span> <a class="code" href="classitk_1_1CellInterface.html#9289ee142165bfcc1c0a5f78f6387de3">UsingCellsContainerIterator</a> <a class="code" href="classitk_1_1CellInterface.html#86d465b3b4f35778e04c264c4712c9a7">UsingCellsEnd</a>(<span class="keywordtype">void</span>); <a name="l00430"></a>00430 <a name="l00432"></a>00432 <a class="code" href="itkMacro_8h.html#574c1f86661d409dd32c742307a0e96a">itkTypeMacro</a>(<a class="code" href="classitk_1_1CellInterface.html">CellInterface</a>, <a class="code" href="classitk_1_1LightObject.html" title="Light weight base class for most itk classes.">LightObject</a>); <a name="l00433"></a>00433 <a name="l00434"></a>00434 <span class="keyword">public</span>: <a name="l00435"></a><a class="code" href="classitk_1_1CellInterface.html#1a9aef7e5c583364d90f81ce8171ef89">00435</a> <a class="code" href="classitk_1_1CellInterface.html#1a9aef7e5c583364d90f81ce8171ef89">CellInterface</a>() {} <a name="l00436"></a><a class="code" href="classitk_1_1CellInterface.html#19e5cd7d4681a9352b52f73ab95c112b">00436</a> <span class="keyword">virtual</span> <a class="code" href="classitk_1_1CellInterface.html#19e5cd7d4681a9352b52f73ab95c112b">~CellInterface</a>() {} <a name="l00440"></a>00440 <span class="comment">// bool GetPointPosition(PointsContainer*, int localId, Point*)=0;</span> <a name="l00441"></a>00441 <a name="l00442"></a>00442 <span class="keyword">protected</span>: <a name="l00444"></a><a class="code" href="classitk_1_1CellInterface.html#0f298d9f3347f48950fff1ea760199d4">00444</a> <a class="code" href="classitk_1_1CellInterface.html#4b555206cd7ba5e5084a0695666cf6bc">UsingCellsContainer</a> <a class="code" href="classitk_1_1CellInterface.html#0f298d9f3347f48950fff1ea760199d4">m_UsingCells</a>; <a name="l00445"></a>00445 <a name="l00446"></a>00446 <span class="keyword">private</span>: <a name="l00447"></a>00447 <a class="code" href="classitk_1_1CellInterface.html#1a9aef7e5c583364d90f81ce8171ef89">CellInterface</a>(<span class="keyword">const</span> <a class="code" href="namespaceHardConnectedComponentImageFilter.html#ac7d0120fe5292cdcdddb6163b8cb150">Self</a>&); <span class="comment">//purposely not implemented</span> <a name="l00448"></a>00448 <span class="keywordtype">void</span> operator=(<span class="keyword">const</span> <a class="code" href="namespaceHardConnectedComponentImageFilter.html#ac7d0120fe5292cdcdddb6163b8cb150">Self</a>&); <span class="comment">//purposely not implemented </span> <a name="l00449"></a>00449 }; <a name="l00450"></a>00450 <a name="l00451"></a>00451 <a name="l00469"></a>00469 <span class="keyword">template</span> <<span class="keywordtype">int</span> VPointDimension, <span class="keyword">typename</span> TCoordRep, <a name="l00470"></a>00470 <span class="keyword">typename</span> TInterpolationWeight, <span class="keyword">typename</span> TPointIdentifier, <a name="l00471"></a>00471 <span class="keyword">typename</span> TCellIdentifier, <span class="keyword">typename</span> TCellFeatureIdentifier, <a name="l00472"></a>00472 <span class="keyword">typename</span> TPoint, <span class="keyword">typename</span> TPointsContainer, <a name="l00473"></a>00473 <span class="keyword">typename</span> TUsingCellsContainer> <a name="l00474"></a><a class="code" href="classitk_1_1CellTraitsInfo.html">00474</a> <span class="keyword">class </span><a class="code" href="classitk_1_1CellTraitsInfo.html" title="A simple utility class to define the cell type inside a mesh type structure definition...">CellTraitsInfo</a> <a name="l00475"></a>00475 { <a name="l00476"></a>00476 <span class="keyword">public</span>: <a name="l00477"></a>00477 <a class="code" href="classitk_1_1CellTraitsInfo.html#43cc715859ccfca351b8a4611506b01a">itkStaticConstMacro</a>(PointDimension, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>, VPointDimension); <a name="l00478"></a><a class="code" href="classitk_1_1CellTraitsInfo.html#732d334b365938f67507f532938f8cf4">00478</a> <span class="keyword">typedef</span> TCoordRep <a class="code" href="classitk_1_1CellTraitsInfo.html#732d334b365938f67507f532938f8cf4">CoordRepType</a>; <a name="l00479"></a><a class="code" href="classitk_1_1CellTraitsInfo.html#d5b98908e7d090d628134ce5c1a6a99f">00479</a> <span class="keyword">typedef</span> TInterpolationWeight <a class="code" href="classitk_1_1CellTraitsInfo.html#d5b98908e7d090d628134ce5c1a6a99f">InterpolationWeightType</a>; <a name="l00480"></a><a class="code" href="classitk_1_1CellTraitsInfo.html#07c08399261b6ae28cf95201cd9aec15">00480</a> <span class="keyword">typedef</span> TPointIdentifier <a class="code" href="classitk_1_1CellTraitsInfo.html#07c08399261b6ae28cf95201cd9aec15">PointIdentifier</a>; <a name="l00481"></a><a class="code" href="classitk_1_1CellTraitsInfo.html#0aafd825c33fd3419598bac8cefdf536">00481</a> <span class="keyword">typedef</span> TCellIdentifier <a class="code" href="classitk_1_1CellTraitsInfo.html#0aafd825c33fd3419598bac8cefdf536">CellIdentifier</a>; <a name="l00482"></a><a class="code" href="classitk_1_1CellTraitsInfo.html#ca92b51b00c910ac2f7af922c0aba476">00482</a> <span class="keyword">typedef</span> TCellFeatureIdentifier <a class="code" href="classitk_1_1CellTraitsInfo.html#ca92b51b00c910ac2f7af922c0aba476">CellFeatureIdentifier</a>; <a name="l00483"></a><a class="code" href="classitk_1_1CellTraitsInfo.html#6f4b5c19ae16782695d4eb7ea5140195">00483</a> <span class="keyword">typedef</span> TPoint <a class="code" href="classitk_1_1CellTraitsInfo.html#6f4b5c19ae16782695d4eb7ea5140195">PointType</a>; <a name="l00484"></a><a class="code" href="classitk_1_1CellTraitsInfo.html#da3ff1ae0ffb32b01816d847bf1781a3">00484</a> <span class="keyword">typedef</span> TPointsContainer <a class="code" href="classitk_1_1CellTraitsInfo.html#da3ff1ae0ffb32b01816d847bf1781a3">PointsContainer</a>; <a name="l00485"></a><a class="code" href="classitk_1_1CellTraitsInfo.html#d12e3d675f32d0425849d09ed83da766">00485</a> <span class="keyword">typedef</span> TUsingCellsContainer <a class="code" href="classitk_1_1CellTraitsInfo.html#d12e3d675f32d0425849d09ed83da766">UsingCellsContainer</a>; <a name="l00486"></a><a class="code" href="classitk_1_1CellTraitsInfo.html#d3a388ce1abd1ca0c0ae711752f22713">00486</a> <span class="keyword">typedef</span> <a class="code" href="classitk_1_1CellTraitsInfo.html#07c08399261b6ae28cf95201cd9aec15">PointIdentifier</a>* <a class="code" href="classitk_1_1CellTraitsInfo.html#d3a388ce1abd1ca0c0ae711752f22713">PointIdIterator</a>; <a name="l00487"></a><a class="code" href="classitk_1_1CellTraitsInfo.html#e51814a83aafacf6c436dab072fb0b1e">00487</a> <span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="classitk_1_1CellTraitsInfo.html#07c08399261b6ae28cf95201cd9aec15">PointIdentifier</a>* <a class="code" href="classitk_1_1CellTraitsInfo.html#e51814a83aafacf6c436dab072fb0b1e">PointIdConstIterator</a>; <a name="l00488"></a>00488 }; <a name="l00489"></a>00489 <a name="l00490"></a><a class="code" href="itkCellInterface_8h.html#27f99f1bc6b3eca8ab6058a2b2df233e">00490</a> <span class="preprocessor">#define itkMakeCellTraitsMacro \</span> <a name="l00491"></a>00491 <span class="preprocessor"> CellTraitsInfo<itkGetStaticConstMacro(PointDimension), CoordRepType, \</span> <a name="l00492"></a>00492 <span class="preprocessor"> InterpolationWeightType, \</span> <a name="l00493"></a>00493 <span class="preprocessor"> PointIdentifier, CellIdentifier, CellFeatureIdentifier, \</span> <a name="l00494"></a>00494 <span class="preprocessor"> PointType, PointsContainer, UsingCellsContainer></span> <a name="l00495"></a>00495 <span class="preprocessor"></span> <a name="l00496"></a>00496 } <span class="comment">// end namespace itk</span> <a name="l00497"></a>00497 <a name="l00498"></a>00498 <span class="preprocessor">#ifndef ITK_MANUAL_INSTANTIATION</span> <a name="l00499"></a>00499 <span class="preprocessor"></span><span class="preprocessor">#include "itkCellInterface.txx"</span> <a name="l00500"></a>00500 <span class="preprocessor">#endif</span> <a name="l00501"></a>00501 <span class="preprocessor"></span> <a name="l00502"></a>00502 <span class="preprocessor">#endif</span> <a name="l00503"></a>00503 <span class="preprocessor"></span> </pre></div></div> <hr><address><small> Generated at Thu May 7 22:21:33 2009 for ITK by <a href="http://www.stack.nl/~dimitri/doxygen/index.html"> <img src="http://www.stack.nl/~dimitri/doxygen/doxygen.png" alt="doxygen" align="middle" border=0 width=110 height=53> </a> 1.5.9 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>, © 1997-2000</small></address> </body> </html>