geos_390_docs/classgeos_1_1operation_1_1o...

533 lines
28 KiB
HTML

<!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"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>GEOS: geos::operation::overlayng::MaximalEdgeRing 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="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 id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">GEOS
&#160;<span id="projectnumber">3.9.1dev</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacegeos.html">geos</a></li><li class="navelem"><a class="el" href="namespacegeos_1_1operation.html">operation</a></li><li class="navelem"><a class="el" href="namespacegeos_1_1operation_1_1overlayng.html">overlayng</a></li><li class="navelem"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1MaximalEdgeRing.html">MaximalEdgeRing</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-static-methods">Static Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="#pri-static-attribs">Static Private Attributes</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="classgeos_1_1operation_1_1overlayng_1_1MaximalEdgeRing-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">geos::operation::overlayng::MaximalEdgeRing Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="g_2MaximalEdgeRing_8h_source.html">MaximalEdgeRing.h</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for geos::operation::overlayng::MaximalEdgeRing:</div>
<div class="dyncontent">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="classgeos_1_1operation_1_1overlayng_1_1MaximalEdgeRing__coll__graph.svg" width="100%" height="589"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<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:ad42165d43fc1c1fd10578d49447d7f4e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1MaximalEdgeRing.html#ad42165d43fc1c1fd10578d49447d7f4e">MaximalEdgeRing</a> (<a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *e)</td></tr>
<tr class="separator:ad42165d43fc1c1fd10578d49447d7f4e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a92ec346ab33996b0db780f37b026dc66"><td class="memItemLeft" align="right" valign="top">std::vector&lt; std::unique_ptr&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdgeRing.html">OverlayEdgeRing</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1MaximalEdgeRing.html#a92ec346ab33996b0db780f37b026dc66">buildMinimalRings</a> (const <a class="el" href="classgeos_1_1geom_1_1GeometryFactory.html">GeometryFactory</a> *geometryFactory)</td></tr>
<tr class="separator:a92ec346ab33996b0db780f37b026dc66"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:aa541145a4e7afb0233784eefa481de07"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1MaximalEdgeRing.html#aa541145a4e7afb0233784eefa481de07">linkResultAreaMaxRingAtNode</a> (<a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *nodeEdge)</td></tr>
<tr class="separator:aa541145a4e7afb0233784eefa481de07"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:ac68386ba385c938d3f9fb9d692cc06de"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1MaximalEdgeRing.html#ac68386ba385c938d3f9fb9d692cc06de">attachEdges</a> (<a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *<a class="el" href="classgeos_1_1operation_1_1overlayng_1_1MaximalEdgeRing.html#a324ec251ae7f463c6c7cf3973798249d">startEdge</a>)</td></tr>
<tr class="separator:ac68386ba385c938d3f9fb9d692cc06de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a67251a3896424f4cb3894b5e9ffe7bbb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1MaximalEdgeRing.html#a67251a3896424f4cb3894b5e9ffe7bbb">linkMinimalRings</a> ()</td></tr>
<tr class="separator:a67251a3896424f4cb3894b5e9ffe7bbb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-static-methods"></a>
Static Private Member Functions</h2></td></tr>
<tr class="memitem:adeb4f86089831590af4a56b0a94f060d"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1MaximalEdgeRing.html#adeb4f86089831590af4a56b0a94f060d">linkMinRingEdgesAtNode</a> (<a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *nodeEdge, <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1MaximalEdgeRing.html">MaximalEdgeRing</a> *maxRing)</td></tr>
<tr class="separator:adeb4f86089831590af4a56b0a94f060d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac52334bbcc40cb265a9d9dc8e8ca8d84"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1MaximalEdgeRing.html#ac52334bbcc40cb265a9d9dc8e8ca8d84">isAlreadyLinked</a> (<a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *edge, <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1MaximalEdgeRing.html">MaximalEdgeRing</a> *maxRing)</td></tr>
<tr class="separator:ac52334bbcc40cb265a9d9dc8e8ca8d84"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab2d8865653d9a4771079db550789c940"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1MaximalEdgeRing.html#ab2d8865653d9a4771079db550789c940">selectMaxOutEdge</a> (<a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *currOut, <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1MaximalEdgeRing.html">MaximalEdgeRing</a> *maxEdgeRing)</td></tr>
<tr class="separator:ab2d8865653d9a4771079db550789c940"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a976167b60d6ee4d0332f602acfe7716c"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1MaximalEdgeRing.html#a976167b60d6ee4d0332f602acfe7716c">linkMaxInEdge</a> (<a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *currOut, <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *currMaxRingOut, <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1MaximalEdgeRing.html">MaximalEdgeRing</a> *maxEdgeRing)</td></tr>
<tr class="separator:a976167b60d6ee4d0332f602acfe7716c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:a324ec251ae7f463c6c7cf3973798249d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1MaximalEdgeRing.html#a324ec251ae7f463c6c7cf3973798249d">startEdge</a></td></tr>
<tr class="separator:a324ec251ae7f463c6c7cf3973798249d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-static-attribs"></a>
Static Private Attributes</h2></td></tr>
<tr class="memitem:a2b928039561b115101c8fda501e487b5"><td class="memItemLeft" align="right" valign="top">static constexpr int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1MaximalEdgeRing.html#a2b928039561b115101c8fda501e487b5">STATE_FIND_INCOMING</a> = 1</td></tr>
<tr class="separator:a2b928039561b115101c8fda501e487b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a35bab4135f6d17f16a0e70766054ebbe"><td class="memItemLeft" align="right" valign="top">static constexpr int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1MaximalEdgeRing.html#a35bab4135f6d17f16a0e70766054ebbe">STATE_LINK_OUTGOING</a> = 2</td></tr>
<tr class="separator:a35bab4135f6d17f16a0e70766054ebbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:a87533bafe2be6fdcb33b0eee879080db"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1MaximalEdgeRing.html#a87533bafe2be6fdcb33b0eee879080db">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1MaximalEdgeRing.html">MaximalEdgeRing</a> &amp;mer)</td></tr>
<tr class="separator:a87533bafe2be6fdcb33b0eee879080db"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock">
<p>Definition at line <a class="el" href="g_2MaximalEdgeRing_8h_source.html#l00044">44</a> of file <a class="el" href="g_2MaximalEdgeRing_8h_source.html">g/MaximalEdgeRing.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="ad42165d43fc1c1fd10578d49447d7f4e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">geos::operation::overlayng::MaximalEdgeRing::MaximalEdgeRing </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *&#160;</td>
<td class="paramname"><em>e</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">
<p>Definition at line <a class="el" href="g_2MaximalEdgeRing_8h_source.html#l00092">92</a> of file <a class="el" href="g_2MaximalEdgeRing_8h_source.html">g/MaximalEdgeRing.h</a>.</p>
<p>References <a class="el" href="namespacegeos_1_1geom.html#a2031e0143940407ca589d3216cf0eb06">geos::geom::operator&lt;&lt;()</a>.</p>
<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classgeos_1_1operation_1_1overlayng_1_1MaximalEdgeRing_ad42165d43fc1c1fd10578d49447d7f4e_cgraph.svg" width="508" height="55"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="ac68386ba385c938d3f9fb9d692cc06de"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::operation::overlayng::MaximalEdgeRing::attachEdges </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *&#160;</td>
<td class="paramname"><em>startEdge</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a92ec346ab33996b0db780f37b026dc66"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;std::unique_ptr&lt;<a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdgeRing.html">OverlayEdgeRing</a>&gt; &gt; geos::operation::overlayng::MaximalEdgeRing::buildMinimalRings </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1GeometryFactory.html">GeometryFactory</a> *&#160;</td>
<td class="paramname"><em>geometryFactory</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ac52334bbcc40cb265a9d9dc8e8ca8d84"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static bool geos::operation::overlayng::MaximalEdgeRing::isAlreadyLinked </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *&#160;</td>
<td class="paramname"><em>edge</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1MaximalEdgeRing.html">MaximalEdgeRing</a> *&#160;</td>
<td class="paramname"><em>maxRing</em>&#160;</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 class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Tests if an edge of the maximal edge ring is already linked into a minimal <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdgeRing.html">OverlayEdgeRing</a>. If so, this node has already been processed earlier in the maximal edgering linking scan.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">edge</td><td>an edge of a maximal edgering </td></tr>
<tr><td class="paramname">maxRing</td><td>the maximal edgering </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if the edge has already been linked into a minimal edgering. </dd></dl>
</div>
</div>
<a class="anchor" id="a976167b60d6ee4d0332f602acfe7716c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a>* geos::operation::overlayng::MaximalEdgeRing::linkMaxInEdge </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *&#160;</td>
<td class="paramname"><em>currOut</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *&#160;</td>
<td class="paramname"><em>currMaxRingOut</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1MaximalEdgeRing.html">MaximalEdgeRing</a> *&#160;</td>
<td class="paramname"><em>maxEdgeRing</em>&#160;</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 class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a67251a3896424f4cb3894b5e9ffe7bbb"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void geos::operation::overlayng::MaximalEdgeRing::linkMinimalRings </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="adeb4f86089831590af4a56b0a94f060d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void geos::operation::overlayng::MaximalEdgeRing::linkMinRingEdgesAtNode </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *&#160;</td>
<td class="paramname"><em>nodeEdge</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1MaximalEdgeRing.html">MaximalEdgeRing</a> *&#160;</td>
<td class="paramname"><em>maxRing</em>&#160;</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 class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Links the edges of a <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1MaximalEdgeRing.html">MaximalEdgeRing</a> around this node into minimal edge rings (<a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdgeRing.html">OverlayEdgeRing</a>s). Minimal ring edges are linked in the opposite orientation (CW) to the maximal ring. This changes self-touching rings into a two or more separate rings, as per the OGC SFS polygon topology semantics. This relinking must be done to each max ring separately, rather than all the node result edges, since there may be more than one max ring incident at the node.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">nodeEdge</td><td>an edge originating at this node </td></tr>
<tr><td class="paramname">maxRing</td><td>the maximal ring to link </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="aa541145a4e7afb0233784eefa481de07"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void geos::operation::overlayng::MaximalEdgeRing::linkResultAreaMaxRingAtNode </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *&#160;</td>
<td class="paramname"><em>nodeEdge</em></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>Traverses the star of edges originating at a node and links consecutive result edges together into maximal edge rings. To link two edges the resultNextMax&lt; pointer for an incoming&lt; result edge is set to the next outgoing result edge.</p>
<p>Edges are linked when:</p><ul>
<li>they belong to an area (i.e. they have sides)</li>
<li>they are marked as being in the result</li>
</ul>
<p>Edges are linked in CCW order (which is the order they are linked in the underlying graph). This means that rings have their face on the Right (in other words, the topological location of the face is given by the RHS label of the DirectedEdge). This produces rings with CW orientation.</p>
<p>PRECONDITIONS:</p><ul>
<li>This edge is in the result</li>
<li>This edge is not yet linked</li>
<li>The edge and its sym are NOT both marked as being in the result </li>
</ul>
</div>
</div>
<a class="anchor" id="ab2d8865653d9a4771079db550789c940"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a>* geos::operation::overlayng::MaximalEdgeRing::selectMaxOutEdge </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> *&#160;</td>
<td class="paramname"><em>currOut</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1MaximalEdgeRing.html">MaximalEdgeRing</a> *&#160;</td>
<td class="paramname"><em>maxEdgeRing</em>&#160;</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 class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Friends And Related Function Documentation</h2>
<a class="anchor" id="a87533bafe2be6fdcb33b0eee879080db"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::ostream&amp; operator&lt;&lt; </td>
<td>(</td>
<td class="paramtype">std::ostream &amp;&#160;</td>
<td class="paramname"><em>os</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1MaximalEdgeRing.html">MaximalEdgeRing</a> &amp;&#160;</td>
<td class="paramname"><em>mer</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">friend</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="a324ec251ae7f463c6c7cf3973798249d"></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="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a>* geos::operation::overlayng::MaximalEdgeRing::startEdge</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="g_2MaximalEdgeRing_8h_source.html#l00053">53</a> of file <a class="el" href="g_2MaximalEdgeRing_8h_source.html">g/MaximalEdgeRing.h</a>.</p>
</div>
</div>
<a class="anchor" id="a2b928039561b115101c8fda501e487b5"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constexpr int geos::operation::overlayng::MaximalEdgeRing::STATE_FIND_INCOMING = 1</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="g_2MaximalEdgeRing_8h_source.html#l00049">49</a> of file <a class="el" href="g_2MaximalEdgeRing_8h_source.html">g/MaximalEdgeRing.h</a>.</p>
</div>
</div>
<a class="anchor" id="a35bab4135f6d17f16a0e70766054ebbe"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">constexpr int geos::operation::overlayng::MaximalEdgeRing::STATE_LINK_OUTGOING = 2</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="g_2MaximalEdgeRing_8h_source.html#l00050">50</a> of file <a class="el" href="g_2MaximalEdgeRing_8h_source.html">g/MaximalEdgeRing.h</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="g_2MaximalEdgeRing_8h_source.html">g/MaximalEdgeRing.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>