<!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"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <title>FingerprintRecognition: PatternRecognition.FingerprintRecognition.Core.Minutia 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="navtree.js"></script> <script type="text/javascript"> $(document).ready(initResizable); </script> <link href="search/search.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="search/search.js"></script> <script type="text/javascript"> $(document).ready(function() { searchBox.OnSelectItem(0); }); </script> <link href="doxygen.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 style="padding-left: 0.5em;"> <div id="projectname">FingerprintRecognition </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.1 --> <script type="text/javascript"> var searchBox = new SearchBox("searchBox", "search",false,'Search'); </script> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="namespaces.html"><span>Packages</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li> <div id="MSearchBox" class="MSearchBoxInactive"> <span class="left"> <img id="MSearchSelect" src="search/mag_sel.png" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" alt=""/> <input type="text" id="MSearchField" value="Search" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)" onkeyup="searchBox.OnSearchFieldChange(event)"/> </span><span class="right"> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> </span> </div> </li> </ul> </div> <div id="navrow2" class="tabs2"> <ul class="tablist"> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="classes.html"><span>Class Index</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> </div><!-- top --> <div id="side-nav" class="ui-resizable side-nav-resizable"> <div id="nav-tree"> <div id="nav-tree-contents"> </div> </div> <div id="splitbar" style="-moz-user-select:none;" class="ui-resizable-handle"> </div> </div> <script type="text/javascript"> $(document).ready(function(){initNavTree('class_pattern_recognition_1_1_fingerprint_recognition_1_1_core_1_1_minutia.html','');}); </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)"> <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Properties</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Events</a></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> | <a href="#pub-static-methods">Static Public Member Functions</a> | <a href="#properties">Properties</a> </div> <div class="headertitle"> <div class="title">PatternRecognition.FingerprintRecognition.Core.Minutia Class Reference</div> </div> </div><!--header--> <div class="contents"> <p>Represents a minutia. <a href="class_pattern_recognition_1_1_fingerprint_recognition_1_1_core_1_1_minutia.html#details">More...</a></p> <p><a href="class_pattern_recognition_1_1_fingerprint_recognition_1_1_core_1_1_minutia-members.html">List of all members.</a></p> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a> Public Member Functions</h2></td></tr> <tr class="memitem:a9fbd2852a0d14c987a1588d34749bf42"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_pattern_recognition_1_1_fingerprint_recognition_1_1_core_1_1_minutia.html#a9fbd2852a0d14c987a1588d34749bf42">Minutia</a> (Int16 x, Int16 y, double angle)</td></tr> <tr class="memdesc:a9fbd2852a0d14c987a1588d34749bf42"><td class="mdescLeft"> </td><td class="mdescRight">Initializes a new instance of the <a class="el" href="class_pattern_recognition_1_1_fingerprint_recognition_1_1_core_1_1_minutia.html" title="Represents a minutia.">Minutia</a> class using the specified location and angle. <a href="#a9fbd2852a0d14c987a1588d34749bf42"></a><br/></td></tr> <tr class="memitem:a6440f6f1d8e552a0c69d7c071ad47a34"><td class="memItemLeft" align="right" valign="top">override int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_pattern_recognition_1_1_fingerprint_recognition_1_1_core_1_1_minutia.html#a6440f6f1d8e552a0c69d7c071ad47a34">GetHashCode</a> ()</td></tr> <tr class="memdesc:a6440f6f1d8e552a0c69d7c071ad47a34"><td class="mdescLeft"> </td><td class="mdescRight">Returns a hash code for the current minutia. <a href="#a6440f6f1d8e552a0c69d7c071ad47a34"></a><br/></td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2><a name="pub-static-methods"></a> Static Public Member Functions</h2></td></tr> <tr class="memitem:a14d75d06545dd8e557f050946052fc54"><td class="memItemLeft" align="right" valign="top">static bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_pattern_recognition_1_1_fingerprint_recognition_1_1_core_1_1_minutia.html#a14d75d06545dd8e557f050946052fc54">operator==</a> (<a class="el" href="class_pattern_recognition_1_1_fingerprint_recognition_1_1_core_1_1_minutia.html">Minutia</a> m1, <a class="el" href="class_pattern_recognition_1_1_fingerprint_recognition_1_1_core_1_1_minutia.html">Minutia</a> m2)</td></tr> <tr class="memdesc:a14d75d06545dd8e557f050946052fc54"><td class="mdescLeft"> </td><td class="mdescRight">Determines whether two specified minutiae have the same property values. <a href="#a14d75d06545dd8e557f050946052fc54"></a><br/></td></tr> <tr class="memitem:a4b17a35e428fdf8034ec9eb731c5bf02"><td class="memItemLeft" align="right" valign="top">static bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_pattern_recognition_1_1_fingerprint_recognition_1_1_core_1_1_minutia.html#a4b17a35e428fdf8034ec9eb731c5bf02">operator!=</a> (<a class="el" href="class_pattern_recognition_1_1_fingerprint_recognition_1_1_core_1_1_minutia.html">Minutia</a> m1, <a class="el" href="class_pattern_recognition_1_1_fingerprint_recognition_1_1_core_1_1_minutia.html">Minutia</a> m2)</td></tr> <tr class="memdesc:a4b17a35e428fdf8034ec9eb731c5bf02"><td class="mdescLeft"> </td><td class="mdescRight">Determines whether two specified minutiae have different property values. <a href="#a4b17a35e428fdf8034ec9eb731c5bf02"></a><br/></td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2><a name="properties"></a> Properties</h2></td></tr> <tr class="memitem:a0c8bdca5256958838986c47a1c6630f9"><td class="memItemLeft" align="right" valign="top">Int16 </td><td class="memItemRight" valign="bottom"><a class="el" href="class_pattern_recognition_1_1_fingerprint_recognition_1_1_core_1_1_minutia.html#a0c8bdca5256958838986c47a1c6630f9">X</a><code> [get, set]</code></td></tr> <tr class="memdesc:a0c8bdca5256958838986c47a1c6630f9"><td class="mdescLeft"> </td><td class="mdescRight">Gets or sets the horizontal position of the minutia. <a href="#a0c8bdca5256958838986c47a1c6630f9"></a><br/></td></tr> <tr class="memitem:a2d9934e52a6e0106b519b46ef07b46bf"><td class="memItemLeft" align="right" valign="top">Int16 </td><td class="memItemRight" valign="bottom"><a class="el" href="class_pattern_recognition_1_1_fingerprint_recognition_1_1_core_1_1_minutia.html#a2d9934e52a6e0106b519b46ef07b46bf">Y</a><code> [get, set]</code></td></tr> <tr class="memdesc:a2d9934e52a6e0106b519b46ef07b46bf"><td class="mdescLeft"> </td><td class="mdescRight">Gets or sets the vertical position of the minutia. <a href="#a2d9934e52a6e0106b519b46ef07b46bf"></a><br/></td></tr> <tr class="memitem:a8b8dba2de0b6f57beae29ec105576676"><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="class_pattern_recognition_1_1_fingerprint_recognition_1_1_core_1_1_minutia.html#a8b8dba2de0b6f57beae29ec105576676">Angle</a><code> [get, set]</code></td></tr> <tr class="memdesc:a8b8dba2de0b6f57beae29ec105576676"><td class="mdescLeft"> </td><td class="mdescRight">Gets or sets the angle of the minutia in radians. <a href="#a8b8dba2de0b6f57beae29ec105576676"></a><br/></td></tr> <tr class="memitem:ae1f7d377f35dbb5190800ae72993a89c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespace_pattern_recognition_1_1_fingerprint_recognition_1_1_core.html#a17740064fa94de0b99c95ea2998f2683">MinutiaType</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_pattern_recognition_1_1_fingerprint_recognition_1_1_core_1_1_minutia.html#ae1f7d377f35dbb5190800ae72993a89c">MinutiaType</a><code> [get, set]</code></td></tr> <tr class="memdesc:ae1f7d377f35dbb5190800ae72993a89c"><td class="mdescLeft"> </td><td class="mdescRight">Gets or sets the minutia type. <a href="#ae1f7d377f35dbb5190800ae72993a89c"></a><br/></td></tr> <tr class="memitem:a247d71e1dc34f3c2b1773f274ad73ddd"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_pattern_recognition_1_1_fingerprint_recognition_1_1_core_1_1_minutia.html#a247d71e1dc34f3c2b1773f274ad73ddd">Flag</a><code> [get, set]</code></td></tr> <tr class="memdesc:a247d71e1dc34f3c2b1773f274ad73ddd"><td class="mdescLeft"> </td><td class="mdescRight">Allows flagging the minutia;. <a href="#a247d71e1dc34f3c2b1773f274ad73ddd"></a><br/></td></tr> </table> <hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <div class="textblock"><p>Represents a minutia. </p> <p>This minutia representation assumes that the angle is represented in radians. </p> <p>The hash code of these objects uses four bytes per minutia: <a class="el" href="class_pattern_recognition_1_1_fingerprint_recognition_1_1_core_1_1_minutia.html#a0c8bdca5256958838986c47a1c6630f9" title="Gets or sets the horizontal position of the minutia.">Minutia.X</a> in the left most 11 bits; <a class="el" href="class_pattern_recognition_1_1_fingerprint_recognition_1_1_core_1_1_minutia.html#a2d9934e52a6e0106b519b46ef07b46bf" title="Gets or sets the vertical position of the minutia.">Minutia.Y</a> in the next 11 bits; <a class="el" href="class_pattern_recognition_1_1_fingerprint_recognition_1_1_core_1_1_minutia.html#a8b8dba2de0b6f57beae29ec105576676" title="Gets or sets the angle of the minutia in radians.">Minutia.Angle</a> in the next eight bits; and <a class="el" href="class_pattern_recognition_1_1_fingerprint_recognition_1_1_core_1_1_minutia.html#ae1f7d377f35dbb5190800ae72993a89c" title="Gets or sets the minutia type.">Minutia.MinutiaType</a> in the last two bits. Therefore, this method is ineffective for values of <a class="el" href="class_pattern_recognition_1_1_fingerprint_recognition_1_1_core_1_1_minutia.html#a0c8bdca5256958838986c47a1c6630f9" title="Gets or sets the horizontal position of the minutia.">Minutia.X</a> or <a class="el" href="class_pattern_recognition_1_1_fingerprint_recognition_1_1_core_1_1_minutia.html#a2d9934e52a6e0106b519b46ef07b46bf" title="Gets or sets the vertical position of the minutia.">Minutia.Y</a> greater than 2047. </p> </div><hr/><h2>Constructor & Destructor Documentation</h2> <a class="anchor" id="a9fbd2852a0d14c987a1588d34749bf42"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">PatternRecognition.FingerprintRecognition.Core.Minutia.Minutia </td> <td>(</td> <td class="paramtype">Int16 </td> <td class="paramname"><em>x</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">Int16 </td> <td class="paramname"><em>y</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">double </td> <td class="paramname"><em>angle</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Initializes a new instance of the <a class="el" href="class_pattern_recognition_1_1_fingerprint_recognition_1_1_core_1_1_minutia.html" title="Represents a minutia.">Minutia</a> class using the specified location and angle. </p> <pre class="fragment">The default value of <see cref="MinutiaType"/> is <see cref="Core.MinutiaType.Unknown"/>. </pre><dl class="params"><dt>Parameters:</dt><dd> <table class="params"> <tr><td class="paramname">x</td><td>The horizontal position of the minutia. </td></tr> <tr><td class="paramname">y</td><td>The vertical position of the minutia. </td></tr> <tr><td class="paramname">angle</td><td>The angle of the minutia. </td></tr> </table> </dd> </dl> </div> </div> <hr/><h2>Member Function Documentation</h2> <a class="anchor" id="a6440f6f1d8e552a0c69d7c071ad47a34"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">override int PatternRecognition.FingerprintRecognition.Core.Minutia.GetHashCode </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Returns a hash code for the current minutia. </p> <pre class="fragment">When building hash code, this method stores value X in the left most 11 bits; value Y, in the next 11 bits; value Angle, in the next 8 bits; and value MinutiaType, in the last 2 bits. Therefore, this method could be ineffective for values of X or Y greater than 2047. </pre><dl class="section return"><dt>Returns:</dt><dd>A hash code for the current minutia. </dd></dl> </div> </div> <a class="anchor" id="a4b17a35e428fdf8034ec9eb731c5bf02"></a> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">static bool PatternRecognition.FingerprintRecognition.Core.Minutia.operator!= </td> <td>(</td> <td class="paramtype"><a class="el" href="class_pattern_recognition_1_1_fingerprint_recognition_1_1_core_1_1_minutia.html">Minutia</a> </td> <td class="paramname"><em>m1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="class_pattern_recognition_1_1_fingerprint_recognition_1_1_core_1_1_minutia.html">Minutia</a> </td> <td class="paramname"><em>m2</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">static</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Determines whether two specified minutiae have different property values. </p> <dl class="params"><dt>Parameters:</dt><dd> <table class="params"> <tr><td class="paramname">m1</td><td>A minutia.</td></tr> <tr><td class="paramname">m2</td><td>A minutia.</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns:</dt><dd>True if every property value of <em>m1</em> is different from the respective property value of <em>m2</em> ; otherwise, false. </dd></dl> </div> </div> <a class="anchor" id="a14d75d06545dd8e557f050946052fc54"></a> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">static bool PatternRecognition.FingerprintRecognition.Core.Minutia.operator== </td> <td>(</td> <td class="paramtype"><a class="el" href="class_pattern_recognition_1_1_fingerprint_recognition_1_1_core_1_1_minutia.html">Minutia</a> </td> <td class="paramname"><em>m1</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="class_pattern_recognition_1_1_fingerprint_recognition_1_1_core_1_1_minutia.html">Minutia</a> </td> <td class="paramname"><em>m2</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">static</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Determines whether two specified minutiae have the same property values. </p> <dl class="params"><dt>Parameters:</dt><dd> <table class="params"> <tr><td class="paramname">m1</td><td>A minutia.</td></tr> <tr><td class="paramname">m2</td><td>A minutia.</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns:</dt><dd>True if every property value of <em>m1</em> is equal to the respective property value of <em>m2</em> ; otherwise, false. </dd></dl> </div> </div> <hr/><h2>Property Documentation</h2> <a class="anchor" id="a8b8dba2de0b6f57beae29ec105576676"></a> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">double PatternRecognition.FingerprintRecognition.Core.Minutia.Angle</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">get</span><span class="mlabel">set</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Gets or sets the angle of the minutia in radians. </p> </div> </div> <a class="anchor" id="a247d71e1dc34f3c2b1773f274ad73ddd"></a> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">bool PatternRecognition.FingerprintRecognition.Core.Minutia.Flag</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">get</span><span class="mlabel">set</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Allows flagging the minutia;. </p> </div> </div> <a class="anchor" id="ae1f7d377f35dbb5190800ae72993a89c"></a> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="namespace_pattern_recognition_1_1_fingerprint_recognition_1_1_core.html#a17740064fa94de0b99c95ea2998f2683">MinutiaType</a> PatternRecognition.FingerprintRecognition.Core.Minutia.MinutiaType</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">get</span><span class="mlabel">set</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Gets or sets the minutia type. </p> </div> </div> <a class="anchor" id="a0c8bdca5256958838986c47a1c6630f9"></a> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">Int16 PatternRecognition.FingerprintRecognition.Core.Minutia.X</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">get</span><span class="mlabel">set</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Gets or sets the horizontal position of the minutia. </p> </div> </div> <a class="anchor" id="a2d9934e52a6e0106b519b46ef07b46bf"></a> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">Int16 PatternRecognition.FingerprintRecognition.Core.Minutia.Y</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">get</span><span class="mlabel">set</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Gets or sets the vertical position of the minutia. </p> </div> </div> <hr/>The documentation for this class was generated from the following file:<ul> <li>D:/Migue/Code/FingerprintRecognition/CodeProject/[2012-05-16] FingerprintRecognition/FingerprintRecognition/FR.Core/Minutia.cs</li> </ul> </div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> <li class="navelem"><a class="el" href="namespace_pattern_recognition.html">PatternRecognition</a></li><li class="navelem"><a class="el" href="namespace_pattern_recognition_1_1_fingerprint_recognition.html">FingerprintRecognition</a></li><li class="navelem"><a class="el" href="namespace_pattern_recognition_1_1_fingerprint_recognition_1_1_core.html">Core</a></li><li class="navelem"><a class="el" href="class_pattern_recognition_1_1_fingerprint_recognition_1_1_core_1_1_minutia.html">Minutia</a></li> <li class="footer">Generated on Mon May 21 2012 20:06:34 for FingerprintRecognition by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.1 </li> </ul> </div> </body> </html>
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.
This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)