<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <title>Mercator: TerrainMod.h Source File</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body> <!-- Generated by Doxygen 1.7.3 --> <div id="top"> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">Mercator</div> </td> </tr> </tbody> </table> </div> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> </ul> </div> <div id="navrow2" class="tabs2"> <ul class="tablist"> <li><a href="files.html"><span>File List</span></a></li> </ul> </div> <div class="header"> <div class="headertitle"> <h1>TerrainMod.h</h1> </div> </div> <div class="contents"> <div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// This file may be redistributed and modified only under the terms of</span> <a name="l00002"></a>00002 <span class="comment">// the GNU General Public License (See COPYING for details).</span> <a name="l00003"></a>00003 <span class="comment">// Copyright (C) 2003 Damien McGinnes, Alistair Riddoch</span> <a name="l00004"></a>00004 <a name="l00005"></a>00005 <span class="preprocessor">#ifndef MERCATOR_TERRAIN_MOD_H</span> <a name="l00006"></a>00006 <span class="preprocessor"></span><span class="preprocessor">#define MERCATOR_TERRAIN_MOD_H</span> <a name="l00007"></a>00007 <span class="preprocessor"></span> <a name="l00008"></a>00008 <span class="preprocessor">#include <wfmath/intersect.h></span> <a name="l00009"></a>00009 <span class="preprocessor">#include <wfmath/axisbox.h></span> <a name="l00010"></a>00010 <span class="preprocessor">#include <wfmath/ball.h></span> <a name="l00011"></a>00011 <a name="l00012"></a>00012 <span class="keyword">namespace </span>Mercator { <a name="l00013"></a>00013 <a name="l00017"></a><a class="code" href="classMercator_1_1TerrainMod.html">00017</a> <span class="keyword">class </span><a class="code" href="classMercator_1_1TerrainMod.html" title="Base class for modifiers to the procedurally generated terrain.">TerrainMod</a> <a name="l00018"></a>00018 { <a name="l00019"></a>00019 <span class="keyword">public</span>: <a name="l00020"></a>00020 <span class="keyword">virtual</span> ~<a class="code" href="classMercator_1_1TerrainMod.html" title="Base class for modifiers to the procedurally generated terrain.">TerrainMod</a>(); <a name="l00021"></a>00021 <a name="l00026"></a>00026 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classMercator_1_1TerrainMod.html#a89b94b74a24df696460e4a8b9bc06fe9" title="Apply this modifier on a terrain segment.">apply</a>(<span class="keywordtype">float</span> &point, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y) <span class="keyword">const</span> = 0; <a name="l00027"></a>00027 <a name="l00029"></a>00029 <span class="keyword">virtual</span> WFMath::AxisBox<2> <a class="code" href="classMercator_1_1TerrainMod.html#ae06969bb6863ee497cf58fd3b2f277c0" title="Get the boundingbox of the modifier.">bbox</a>() <span class="keyword">const</span> = 0; <a name="l00030"></a>00030 <a name="l00032"></a>00032 <span class="keyword">virtual</span> <a class="code" href="classMercator_1_1TerrainMod.html" title="Base class for modifiers to the procedurally generated terrain.">TerrainMod</a> *<a class="code" href="classMercator_1_1TerrainMod.html#a2a5708a72384c888c6924bbf77363887" title="Create a copy of this modifier.">clone</a>() <span class="keyword">const</span> = 0; <a name="l00033"></a>00033 }; <a name="l00034"></a>00034 <a name="l00039"></a>00039 <span class="keyword">template</span> <<span class="keyword">typename</span> Shape> <a name="l00040"></a><a class="code" href="classMercator_1_1ShapeTerrainMod.html">00040</a> <span class="keyword">class </span><a class="code" href="classMercator_1_1ShapeTerrainMod.html" title="Terrain modifier which is defined by a shape variable.">ShapeTerrainMod</a> : <span class="keyword">public</span> <a class="code" href="classMercator_1_1TerrainMod.html" title="Base class for modifiers to the procedurally generated terrain.">TerrainMod</a> <a name="l00041"></a>00041 { <a name="l00042"></a>00042 <span class="keyword">public</span>: <a name="l00046"></a><a class="code" href="classMercator_1_1ShapeTerrainMod.html#afcfe06ebd0caef49a7ac0c188bc2a1e9">00046</a> <a class="code" href="classMercator_1_1ShapeTerrainMod.html#afcfe06ebd0caef49a7ac0c188bc2a1e9" title="Constructor.">ShapeTerrainMod</a>(<span class="keyword">const</span> Shape &s) : <a class="code" href="classMercator_1_1ShapeTerrainMod.html#a85d01efd5d3a5b75f6c89680ceef6dde" title="Shape of the modifier.">m_shape</a>(s) {} <a name="l00047"></a>00047 <span class="keyword">virtual</span> ~<a class="code" href="classMercator_1_1ShapeTerrainMod.html" title="Terrain modifier which is defined by a shape variable.">ShapeTerrainMod</a>(); <span class="comment">// {}</span> <a name="l00048"></a>00048 <a name="l00049"></a>00049 <span class="keyword">virtual</span> WFMath::AxisBox<2> <a class="code" href="classMercator_1_1ShapeTerrainMod.html#ac67d6265b49d874220a0576047658b1c" title="Get the boundingbox of the modifier.">bbox</a>() <span class="keyword">const</span>; <span class="comment">// { return m_shape.boundingBox(); }</span> <a name="l00050"></a>00050 <a name="l00051"></a>00051 <span class="keyword">protected</span>: <a name="l00053"></a><a class="code" href="classMercator_1_1ShapeTerrainMod.html#a85d01efd5d3a5b75f6c89680ceef6dde">00053</a> Shape <a class="code" href="classMercator_1_1ShapeTerrainMod.html#a85d01efd5d3a5b75f6c89680ceef6dde" title="Shape of the modifier.">m_shape</a>; <a name="l00054"></a>00054 }; <a name="l00055"></a>00055 <a name="l00056"></a>00056 <a name="l00060"></a>00060 <span class="keyword">template</span> <<span class="keyword">typename</span> Shape> <a name="l00061"></a><a class="code" href="classMercator_1_1LevelTerrainMod.html">00061</a> <span class="keyword">class </span><a class="code" href="classMercator_1_1LevelTerrainMod.html" title="Terrain modifier that defines an area of fixed height.">LevelTerrainMod</a> : <span class="keyword">public</span> <a class="code" href="classMercator_1_1ShapeTerrainMod.html" title="Terrain modifier which is defined by a shape variable.">ShapeTerrainMod</a><Shape> <a name="l00062"></a>00062 { <a name="l00063"></a>00063 <span class="keyword">public</span>: <a name="l00068"></a><a class="code" href="classMercator_1_1LevelTerrainMod.html#ae5883a9223f7a737bddcc113c4ddd6c3">00068</a> <a class="code" href="classMercator_1_1LevelTerrainMod.html#ae5883a9223f7a737bddcc113c4ddd6c3" title="Constructor.">LevelTerrainMod</a>(<span class="keywordtype">float</span> level, <span class="keyword">const</span> Shape &s) <a name="l00069"></a>00069 : <a class="code" href="classMercator_1_1ShapeTerrainMod.html" title="Terrain modifier which is defined by a shape variable.">ShapeTerrainMod</a><Shape>(s), <a class="code" href="classMercator_1_1LevelTerrainMod.html#a457f28e8e854be6c2618e24a01c4ccb8" title="The height level of all points affected.">m_level</a>(level) {} <a name="l00070"></a>00070 <a name="l00071"></a>00071 <span class="keyword">virtual</span> ~<a class="code" href="classMercator_1_1LevelTerrainMod.html" title="Terrain modifier that defines an area of fixed height.">LevelTerrainMod</a>(); <a name="l00072"></a>00072 <a name="l00073"></a>00073 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classMercator_1_1LevelTerrainMod.html#a7e3eda235fa6b99f5115a4c34cae7072" title="Apply this modifier on a terrain segment.">apply</a>(<span class="keywordtype">float</span> &point, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y) <span class="keyword">const</span>; <a name="l00074"></a>00074 <span class="keyword">virtual</span> <a class="code" href="classMercator_1_1TerrainMod.html" title="Base class for modifiers to the procedurally generated terrain.">TerrainMod</a> *<a class="code" href="classMercator_1_1LevelTerrainMod.html#a783e4b9e7d837806529e85b9ae2efc8e" title="Create a copy of this modifier.">clone</a>() <span class="keyword">const</span>; <a name="l00075"></a>00075 <a name="l00076"></a>00076 <span class="keyword">private</span>: <a name="l00078"></a>00078 <a class="code" href="classMercator_1_1LevelTerrainMod.html#ae5883a9223f7a737bddcc113c4ddd6c3" title="Constructor.">LevelTerrainMod</a>(<a class="code" href="classMercator_1_1LevelTerrainMod.html" title="Terrain modifier that defines an area of fixed height.">LevelTerrainMod</a>&); <span class="comment">// {}</span> <a name="l00079"></a>00079 <a name="l00080"></a>00080 <span class="keyword">protected</span>: <a name="l00082"></a><a class="code" href="classMercator_1_1LevelTerrainMod.html#a457f28e8e854be6c2618e24a01c4ccb8">00082</a> <span class="keywordtype">float</span> <a class="code" href="classMercator_1_1LevelTerrainMod.html#a457f28e8e854be6c2618e24a01c4ccb8" title="The height level of all points affected.">m_level</a>; <a name="l00083"></a>00083 }; <a name="l00084"></a>00084 <a name="l00089"></a>00089 <span class="keyword">template</span> <<span class="keyword">typename</span> Shape> <a name="l00090"></a><a class="code" href="classMercator_1_1AdjustTerrainMod.html">00090</a> <span class="keyword">class </span><a class="code" href="classMercator_1_1AdjustTerrainMod.html" title="Terrain modifier that defines an area of adjusted height.">AdjustTerrainMod</a> : <span class="keyword">public</span> <a class="code" href="classMercator_1_1ShapeTerrainMod.html" title="Terrain modifier which is defined by a shape variable.">ShapeTerrainMod</a><Shape> <a name="l00091"></a>00091 { <a name="l00092"></a>00092 <span class="keyword">public</span>: <a name="l00093"></a>00093 <a name="l00098"></a><a class="code" href="classMercator_1_1AdjustTerrainMod.html#acc2c69d315e0ffabc3d2e4ee0e03df16">00098</a> <a class="code" href="classMercator_1_1AdjustTerrainMod.html#acc2c69d315e0ffabc3d2e4ee0e03df16" title="Constructor.">AdjustTerrainMod</a>(<span class="keywordtype">float</span> dist, <span class="keyword">const</span> Shape &s) <a name="l00099"></a>00099 : <a class="code" href="classMercator_1_1ShapeTerrainMod.html" title="Terrain modifier which is defined by a shape variable.">ShapeTerrainMod</a><Shape>(s), <a class="code" href="classMercator_1_1AdjustTerrainMod.html#a7374bd2d177526c830b9483a34bc4af7" title="Adjustment to the height of all points affected.">m_dist</a>(dist) {} <a name="l00100"></a>00100 <a name="l00101"></a>00101 <span class="keyword">virtual</span> ~<a class="code" href="classMercator_1_1AdjustTerrainMod.html" title="Terrain modifier that defines an area of adjusted height.">AdjustTerrainMod</a>(); <a name="l00102"></a>00102 <a name="l00103"></a>00103 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classMercator_1_1AdjustTerrainMod.html#a3c41c52f0978f526b3d33465a3bf2b49" title="Apply this modifier on a terrain segment.">apply</a>(<span class="keywordtype">float</span> &point, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y) <span class="keyword">const</span>; <a name="l00104"></a>00104 <span class="keyword">virtual</span> <a class="code" href="classMercator_1_1TerrainMod.html" title="Base class for modifiers to the procedurally generated terrain.">TerrainMod</a> *<a class="code" href="classMercator_1_1AdjustTerrainMod.html#a6b9ec88bd3acd18262aa540d0bb09e39" title="Create a copy of this modifier.">clone</a>() <span class="keyword">const</span>; <a name="l00105"></a>00105 <a name="l00106"></a>00106 <span class="keyword">private</span>: <a name="l00108"></a><a class="code" href="classMercator_1_1AdjustTerrainMod.html#ac9d659b437b63fbae391aec7c4c5a3fb">00108</a> <a class="code" href="classMercator_1_1AdjustTerrainMod.html#ac9d659b437b63fbae391aec7c4c5a3fb" title="Copy constructor.">AdjustTerrainMod</a>(<a class="code" href="classMercator_1_1AdjustTerrainMod.html" title="Terrain modifier that defines an area of adjusted height.">AdjustTerrainMod</a>&) {} <a name="l00109"></a>00109 <a name="l00110"></a>00110 <span class="keyword">protected</span>: <a name="l00112"></a><a class="code" href="classMercator_1_1AdjustTerrainMod.html#a7374bd2d177526c830b9483a34bc4af7">00112</a> <span class="keywordtype">float</span> <a class="code" href="classMercator_1_1AdjustTerrainMod.html#a7374bd2d177526c830b9483a34bc4af7" title="Adjustment to the height of all points affected.">m_dist</a>; <a name="l00113"></a>00113 }; <a name="l00114"></a>00114 <a name="l00119"></a>00119 <span class="keyword">template</span> <<span class="keyword">typename</span> Shape> <a name="l00120"></a><a class="code" href="classMercator_1_1SlopeTerrainMod.html">00120</a> <span class="keyword">class </span><a class="code" href="classMercator_1_1SlopeTerrainMod.html" title="Terrain modifier that defines an area of sloped height.">SlopeTerrainMod</a> : <span class="keyword">public</span> <a class="code" href="classMercator_1_1ShapeTerrainMod.html" title="Terrain modifier which is defined by a shape variable.">ShapeTerrainMod</a><Shape> <a name="l00121"></a>00121 { <a name="l00122"></a>00122 <span class="keyword">public</span>: <a name="l00123"></a>00123 <a name="l00130"></a><a class="code" href="classMercator_1_1SlopeTerrainMod.html#ad809238daa1065341fa72cb293a2b645">00130</a> <a class="code" href="classMercator_1_1SlopeTerrainMod.html#ad809238daa1065341fa72cb293a2b645" title="Constructor.">SlopeTerrainMod</a>(<span class="keywordtype">float</span> level, <span class="keywordtype">float</span> dx, <span class="keywordtype">float</span> dy, <span class="keyword">const</span> Shape &s) <a name="l00131"></a>00131 : <a class="code" href="classMercator_1_1ShapeTerrainMod.html" title="Terrain modifier which is defined by a shape variable.">ShapeTerrainMod</a><Shape>(s), <a class="code" href="classMercator_1_1SlopeTerrainMod.html#ac52f66b771efa864734925d80270b4d0" title="The height of the centre point.">m_level</a>(level), <a class="code" href="classMercator_1_1SlopeTerrainMod.html#a7452905554a5a0640afbfc8264166147" title="The rate of change of the height along X.">m_dx</a>(dx), <a class="code" href="classMercator_1_1SlopeTerrainMod.html#a4338bd0e2ddb4f827786865ef1393d0c" title="The rate of change of the height along Y.">m_dy</a>(dy) {} <a name="l00132"></a>00132 <a name="l00133"></a>00133 <span class="keyword">virtual</span> ~<a class="code" href="classMercator_1_1SlopeTerrainMod.html" title="Terrain modifier that defines an area of sloped height.">SlopeTerrainMod</a>(); <a name="l00134"></a>00134 <a name="l00135"></a>00135 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classMercator_1_1SlopeTerrainMod.html#a4d7909ab5bb4e8e22a2c94802e71a131" title="Apply this modifier on a terrain segment.">apply</a>(<span class="keywordtype">float</span> &point, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y) <span class="keyword">const</span>; <a name="l00136"></a>00136 <span class="keyword">virtual</span> <a class="code" href="classMercator_1_1TerrainMod.html" title="Base class for modifiers to the procedurally generated terrain.">TerrainMod</a> *<a class="code" href="classMercator_1_1SlopeTerrainMod.html#ac5276a2506e728a14ef5bfced6ef5984" title="Create a copy of this modifier.">clone</a>() <span class="keyword">const</span>; <a name="l00137"></a>00137 <a name="l00138"></a>00138 <span class="keyword">private</span>: <a name="l00140"></a><a class="code" href="classMercator_1_1SlopeTerrainMod.html#a4f6218455fa4306bc73a7655db0d227c">00140</a> <a class="code" href="classMercator_1_1SlopeTerrainMod.html#a4f6218455fa4306bc73a7655db0d227c" title="Copy constructor.">SlopeTerrainMod</a>(<a class="code" href="classMercator_1_1SlopeTerrainMod.html" title="Terrain modifier that defines an area of sloped height.">SlopeTerrainMod</a>&) {} <a name="l00141"></a>00141 <a name="l00142"></a>00142 <span class="keyword">protected</span>: <a name="l00144"></a><a class="code" href="classMercator_1_1SlopeTerrainMod.html#ac52f66b771efa864734925d80270b4d0">00144</a> <span class="keywordtype">float</span> <a class="code" href="classMercator_1_1SlopeTerrainMod.html#ac52f66b771efa864734925d80270b4d0" title="The height of the centre point.">m_level</a>; <a name="l00146"></a><a class="code" href="classMercator_1_1SlopeTerrainMod.html#a7452905554a5a0640afbfc8264166147">00146</a> <span class="keywordtype">float</span> <a class="code" href="classMercator_1_1SlopeTerrainMod.html#a7452905554a5a0640afbfc8264166147" title="The rate of change of the height along X.">m_dx</a>; <a name="l00148"></a><a class="code" href="classMercator_1_1SlopeTerrainMod.html#a4338bd0e2ddb4f827786865ef1393d0c">00148</a> <span class="keywordtype">float</span> <a class="code" href="classMercator_1_1SlopeTerrainMod.html#a4338bd0e2ddb4f827786865ef1393d0c" title="The rate of change of the height along Y.">m_dy</a>; <a name="l00149"></a>00149 }; <a name="l00150"></a>00150 <a name="l00155"></a><a class="code" href="classMercator_1_1CraterTerrainMod.html">00155</a> <span class="keyword">class </span><a class="code" href="classMercator_1_1CraterTerrainMod.html" title="Terrain modifier that defines a crater.">CraterTerrainMod</a> : <span class="keyword">public</span> <a class="code" href="classMercator_1_1TerrainMod.html" title="Base class for modifiers to the procedurally generated terrain.">TerrainMod</a> <a name="l00156"></a>00156 { <a name="l00157"></a>00157 <span class="keyword">public</span>: <a name="l00161"></a><a class="code" href="classMercator_1_1CraterTerrainMod.html#a973d07906d10ec2f9008bca3e44c73da">00161</a> <a class="code" href="classMercator_1_1CraterTerrainMod.html#a973d07906d10ec2f9008bca3e44c73da" title="Constructor.">CraterTerrainMod</a>(<span class="keyword">const</span> WFMath::Ball<3> &s) : <a class="code" href="classMercator_1_1CraterTerrainMod.html#a88a411f6f0a28a5444c428349ab7a006" title="Sphere that defines the shape of the crater.">m_shape</a>(s) { <a name="l00162"></a>00162 WFMath::AxisBox<3> bb=<a class="code" href="classMercator_1_1CraterTerrainMod.html#a88a411f6f0a28a5444c428349ab7a006" title="Sphere that defines the shape of the crater.">m_shape</a>.boundingBox(); <a name="l00163"></a>00163 <a class="code" href="classMercator_1_1CraterTerrainMod.html#a5983da9e3a2f13563a8b58a244877929" title="Box containing this modification.">ab</a> = WFMath::AxisBox<2> ( <a name="l00164"></a>00164 WFMath::Point<2>(bb.lowerBound(0), bb.lowerBound(1)), <a name="l00165"></a>00165 WFMath::Point<2>(bb.upperBound(0), bb.upperBound(1)) <a name="l00166"></a>00166 ); <a name="l00167"></a>00167 } <a name="l00168"></a>00168 <a name="l00169"></a>00169 <span class="keyword">virtual</span> ~<a class="code" href="classMercator_1_1CraterTerrainMod.html" title="Terrain modifier that defines a crater.">CraterTerrainMod</a>(); <span class="comment">// {}</span> <a name="l00170"></a>00170 <a name="l00171"></a>00171 <span class="keyword">virtual</span> WFMath::AxisBox<2> <a class="code" href="classMercator_1_1CraterTerrainMod.html#a77201e5192b03d176b618f0bc5ac337a" title="Get the boundingbox of the modifier.">bbox</a>() <span class="keyword">const</span>; <a name="l00172"></a>00172 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classMercator_1_1CraterTerrainMod.html#aca2a508b943e2009ae1b4285d6af4024" title="Apply this modifier on a terrain segment.">apply</a>(<span class="keywordtype">float</span> &point, <span class="keywordtype">int</span> x, <span class="keywordtype">int</span> y) <span class="keyword">const</span>; <a name="l00173"></a>00173 <span class="keyword">virtual</span> <a class="code" href="classMercator_1_1TerrainMod.html" title="Base class for modifiers to the procedurally generated terrain.">TerrainMod</a> *<a class="code" href="classMercator_1_1CraterTerrainMod.html#a9a727ffabd6d94ab04b18219f4095811" title="Create a copy of this modifier.">clone</a>() <span class="keyword">const</span>; <a name="l00174"></a>00174 <a name="l00175"></a>00175 <span class="keyword">private</span>: <a name="l00177"></a><a class="code" href="classMercator_1_1CraterTerrainMod.html#a4e366ea3a1265d687177c375d7bd31b2">00177</a> <a class="code" href="classMercator_1_1CraterTerrainMod.html#a4e366ea3a1265d687177c375d7bd31b2" title="Copy constructor.">CraterTerrainMod</a>(<a class="code" href="classMercator_1_1CraterTerrainMod.html" title="Terrain modifier that defines a crater.">CraterTerrainMod</a>&) {} <a name="l00178"></a>00178 <a name="l00180"></a><a class="code" href="classMercator_1_1CraterTerrainMod.html#a88a411f6f0a28a5444c428349ab7a006">00180</a> WFMath::Ball<3> <a class="code" href="classMercator_1_1CraterTerrainMod.html#a88a411f6f0a28a5444c428349ab7a006" title="Sphere that defines the shape of the crater.">m_shape</a>; <a name="l00182"></a><a class="code" href="classMercator_1_1CraterTerrainMod.html#a5983da9e3a2f13563a8b58a244877929">00182</a> WFMath::AxisBox<2> <a class="code" href="classMercator_1_1CraterTerrainMod.html#a5983da9e3a2f13563a8b58a244877929" title="Box containing this modification.">ab</a>; <a name="l00183"></a>00183 <a name="l00184"></a>00184 }; <a name="l00185"></a>00185 <a name="l00186"></a>00186 } <span class="comment">//namespace Mercator</span> <a name="l00187"></a>00187 <a name="l00188"></a>00188 <span class="preprocessor">#endif // MERCATOR_TERRAIN_MOD_H</span> </pre></div></div> </div> <hr class="footer"/><address class="footer"><small>Generated for Mercator by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.3 </small></address> </body> </html>