Files
recastnavigation/classdtObstacleAvoidanceQuery.html

522 lines
22 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Recast Navigation: dtObstacleAvoidanceQuery Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Recast Navigation
</div>
<div id="projectbrief">Navigation-mesh Toolset for Games</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classdtObstacleAvoidanceQuery.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classdtObstacleAvoidanceQuery-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">dtObstacleAvoidanceQuery Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="DetourObstacleAvoidance_8h_source.html">DetourObstacleAvoidance.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a353d5b1f7b8feb1e5867528255924968"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtObstacleAvoidanceQuery.html#a353d5b1f7b8feb1e5867528255924968">dtObstacleAvoidanceQuery</a> ()</td></tr>
<tr class="separator:a353d5b1f7b8feb1e5867528255924968"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a56a81340e58ae836f32c802ab3531772"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtObstacleAvoidanceQuery.html#a56a81340e58ae836f32c802ab3531772">~dtObstacleAvoidanceQuery</a> ()</td></tr>
<tr class="separator:a56a81340e58ae836f32c802ab3531772"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f927e4f09b35473853be3bf7f28129a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtObstacleAvoidanceQuery.html#a9f927e4f09b35473853be3bf7f28129a">init</a> (const int maxCircles, const int maxSegments)</td></tr>
<tr class="separator:a9f927e4f09b35473853be3bf7f28129a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a993c62548ead013ac1cb622c43c175ad"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtObstacleAvoidanceQuery.html#a993c62548ead013ac1cb622c43c175ad">reset</a> ()</td></tr>
<tr class="separator:a993c62548ead013ac1cb622c43c175ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca861fb3e13b8785124b655b8313de45"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtObstacleAvoidanceQuery.html#aca861fb3e13b8785124b655b8313de45">addCircle</a> (const float *pos, const float rad, const float *vel, const float *dvel)</td></tr>
<tr class="separator:aca861fb3e13b8785124b655b8313de45"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab0abab88b2cba7747e6ed38470ca6eff"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtObstacleAvoidanceQuery.html#ab0abab88b2cba7747e6ed38470ca6eff">addSegment</a> (const float *p, const float *q)</td></tr>
<tr class="separator:ab0abab88b2cba7747e6ed38470ca6eff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5209e8625a0618fd9c96ba2d0374d90f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtObstacleAvoidanceQuery.html#a5209e8625a0618fd9c96ba2d0374d90f">sampleVelocityGrid</a> (const float *pos, const float rad, const float vmax, const float *vel, const float *dvel, float *nvel, const <a class="el" href="structdtObstacleAvoidanceParams.html">dtObstacleAvoidanceParams</a> *params, <a class="el" href="classdtObstacleAvoidanceDebugData.html">dtObstacleAvoidanceDebugData</a> *debug=0)</td></tr>
<tr class="separator:a5209e8625a0618fd9c96ba2d0374d90f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aecf2d1d53bc0c74997ff3aac1587c242"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtObstacleAvoidanceQuery.html#aecf2d1d53bc0c74997ff3aac1587c242">sampleVelocityAdaptive</a> (const float *pos, const float rad, const float vmax, const float *vel, const float *dvel, float *nvel, const <a class="el" href="structdtObstacleAvoidanceParams.html">dtObstacleAvoidanceParams</a> *params, <a class="el" href="classdtObstacleAvoidanceDebugData.html">dtObstacleAvoidanceDebugData</a> *debug=0)</td></tr>
<tr class="separator:aecf2d1d53bc0c74997ff3aac1587c242"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae520788c1150ae9c0efa15ddee6b44a6"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtObstacleAvoidanceQuery.html#ae520788c1150ae9c0efa15ddee6b44a6">getObstacleCircleCount</a> () const</td></tr>
<tr class="separator:ae520788c1150ae9c0efa15ddee6b44a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2de5b7639831faa59a708b2ed3cd6f15"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structdtObstacleCircle.html">dtObstacleCircle</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtObstacleAvoidanceQuery.html#a2de5b7639831faa59a708b2ed3cd6f15">getObstacleCircle</a> (const int i)</td></tr>
<tr class="separator:a2de5b7639831faa59a708b2ed3cd6f15"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a38c5fdba38e19e6c7481b75d089e45b6"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtObstacleAvoidanceQuery.html#a38c5fdba38e19e6c7481b75d089e45b6">getObstacleSegmentCount</a> () const</td></tr>
<tr class="separator:a38c5fdba38e19e6c7481b75d089e45b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60779b0d519def7ae2101ad153266cd2"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structdtObstacleSegment.html">dtObstacleSegment</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classdtObstacleAvoidanceQuery.html#a60779b0d519def7ae2101ad153266cd2">getObstacleSegment</a> (const int i)</td></tr>
<tr class="separator:a60779b0d519def7ae2101ad153266cd2"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a353d5b1f7b8feb1e5867528255924968"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a353d5b1f7b8feb1e5867528255924968">&#9670;&nbsp;</a></span>dtObstacleAvoidanceQuery()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">dtObstacleAvoidanceQuery::dtObstacleAvoidanceQuery </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a56a81340e58ae836f32c802ab3531772"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a56a81340e58ae836f32c802ab3531772">&#9670;&nbsp;</a></span>~dtObstacleAvoidanceQuery()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">dtObstacleAvoidanceQuery::~dtObstacleAvoidanceQuery </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="aca861fb3e13b8785124b655b8313de45"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aca861fb3e13b8785124b655b8313de45">&#9670;&nbsp;</a></span>addCircle()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void dtObstacleAvoidanceQuery::addCircle </td>
<td>(</td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>pos</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float&#160;</td>
<td class="paramname"><em>rad</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>vel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>dvel</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ab0abab88b2cba7747e6ed38470ca6eff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab0abab88b2cba7747e6ed38470ca6eff">&#9670;&nbsp;</a></span>addSegment()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void dtObstacleAvoidanceQuery::addSegment </td>
<td>(</td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>p</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>q</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a2de5b7639831faa59a708b2ed3cd6f15"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2de5b7639831faa59a708b2ed3cd6f15">&#9670;&nbsp;</a></span>getObstacleCircle()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="structdtObstacleCircle.html">dtObstacleCircle</a>* dtObstacleAvoidanceQuery::getObstacleCircle </td>
<td>(</td>
<td class="paramtype">const int&#160;</td>
<td class="paramname"><em>i</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="ae520788c1150ae9c0efa15ddee6b44a6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae520788c1150ae9c0efa15ddee6b44a6">&#9670;&nbsp;</a></span>getObstacleCircleCount()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int dtObstacleAvoidanceQuery::getObstacleCircleCount </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a60779b0d519def7ae2101ad153266cd2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a60779b0d519def7ae2101ad153266cd2">&#9670;&nbsp;</a></span>getObstacleSegment()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const <a class="el" href="structdtObstacleSegment.html">dtObstacleSegment</a>* dtObstacleAvoidanceQuery::getObstacleSegment </td>
<td>(</td>
<td class="paramtype">const int&#160;</td>
<td class="paramname"><em>i</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a38c5fdba38e19e6c7481b75d089e45b6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a38c5fdba38e19e6c7481b75d089e45b6">&#9670;&nbsp;</a></span>getObstacleSegmentCount()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int dtObstacleAvoidanceQuery::getObstacleSegmentCount </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a9f927e4f09b35473853be3bf7f28129a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9f927e4f09b35473853be3bf7f28129a">&#9670;&nbsp;</a></span>init()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool dtObstacleAvoidanceQuery::init </td>
<td>(</td>
<td class="paramtype">const int&#160;</td>
<td class="paramname"><em>maxCircles</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int&#160;</td>
<td class="paramname"><em>maxSegments</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a993c62548ead013ac1cb622c43c175ad"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a993c62548ead013ac1cb622c43c175ad">&#9670;&nbsp;</a></span>reset()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void dtObstacleAvoidanceQuery::reset </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="aecf2d1d53bc0c74997ff3aac1587c242"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aecf2d1d53bc0c74997ff3aac1587c242">&#9670;&nbsp;</a></span>sampleVelocityAdaptive()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int dtObstacleAvoidanceQuery::sampleVelocityAdaptive </td>
<td>(</td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>pos</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float&#160;</td>
<td class="paramname"><em>rad</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float&#160;</td>
<td class="paramname"><em>vmax</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>vel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>dvel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>nvel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structdtObstacleAvoidanceParams.html">dtObstacleAvoidanceParams</a> *&#160;</td>
<td class="paramname"><em>params</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classdtObstacleAvoidanceDebugData.html">dtObstacleAvoidanceDebugData</a> *&#160;</td>
<td class="paramname"><em>debug</em> = <code>0</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a5209e8625a0618fd9c96ba2d0374d90f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5209e8625a0618fd9c96ba2d0374d90f">&#9670;&nbsp;</a></span>sampleVelocityGrid()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int dtObstacleAvoidanceQuery::sampleVelocityGrid </td>
<td>(</td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>pos</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float&#160;</td>
<td class="paramname"><em>rad</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float&#160;</td>
<td class="paramname"><em>vmax</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>vel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const float *&#160;</td>
<td class="paramname"><em>dvel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">float *&#160;</td>
<td class="paramname"><em>nvel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="structdtObstacleAvoidanceParams.html">dtObstacleAvoidanceParams</a> *&#160;</td>
<td class="paramname"><em>params</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classdtObstacleAvoidanceDebugData.html">dtObstacleAvoidanceDebugData</a> *&#160;</td>
<td class="paramname"><em>debug</em> = <code>0</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="DetourObstacleAvoidance_8h_source.html">DetourObstacleAvoidance.h</a></li>
<li><a class="el" href="DetourObstacleAvoidance_8cpp.html">DetourObstacleAvoidance.cpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.6-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="classdtObstacleAvoidanceQuery.html">dtObstacleAvoidanceQuery</a></li>
&nbsp;&nbsp;<a href="https://github.com/recastnavigation/recastnavigation">Project Home</a>
| <a href="./License.txt">Licence (ZLib)</a>
| Copyright 2009 Mikko Mononen
</ul>
</div>
</body>
</html>