geos_390_docs/classgeos_1_1operation_1_1o...

681 lines
37 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::PolygonBuilder 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_1PolygonBuilder.html">PolygonBuilder</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classgeos_1_1operation_1_1overlayng_1_1PolygonBuilder-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">geos::operation::overlayng::PolygonBuilder Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="g_2PolygonBuilder_8h_source.html">PolygonBuilder.h</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for geos::operation::overlayng::PolygonBuilder:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classgeos_1_1operation_1_1overlayng_1_1PolygonBuilder__coll__graph.svg" width="480" height="255"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</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:a1d31ea6fdd4610ff36ec55a6353b389d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1PolygonBuilder.html#a1d31ea6fdd4610ff36ec55a6353b389d">PolygonBuilder</a> (std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> * &gt; &amp;resultAreaEdges, const <a class="el" href="classgeos_1_1geom_1_1GeometryFactory.html">geom::GeometryFactory</a> *geomFact)</td></tr>
<tr class="separator:a1d31ea6fdd4610ff36ec55a6353b389d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0a6eab7ca22e47be6f8b70f0bcc168e8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1PolygonBuilder.html#a0a6eab7ca22e47be6f8b70f0bcc168e8">PolygonBuilder</a> (std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> * &gt; &amp;resultAreaEdges, const <a class="el" href="classgeos_1_1geom_1_1GeometryFactory.html">geom::GeometryFactory</a> *geomFact, bool p_isEnforcePolygonal)</td></tr>
<tr class="separator:a0a6eab7ca22e47be6f8b70f0bcc168e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe041f0251357677de8fe70c7efeaa6a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1PolygonBuilder.html#afe041f0251357677de8fe70c7efeaa6a">PolygonBuilder</a> (const <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1PolygonBuilder.html">PolygonBuilder</a> &amp;)=delete</td></tr>
<tr class="separator:afe041f0251357677de8fe70c7efeaa6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6e0c9e81666c97ff0a2c26a6f8555bd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1PolygonBuilder.html">PolygonBuilder</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1PolygonBuilder.html#ac6e0c9e81666c97ff0a2c26a6f8555bd">operator=</a> (const <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1PolygonBuilder.html">PolygonBuilder</a> &amp;)=delete</td></tr>
<tr class="separator:ac6e0c9e81666c97ff0a2c26a6f8555bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad2785a8dec1a562adbc858c15833ce01"><td class="memItemLeft" align="right" valign="top">std::vector&lt; std::unique_ptr&lt; <a class="el" href="classgeos_1_1geom_1_1Polygon.html">geom::Polygon</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1PolygonBuilder.html#ad2785a8dec1a562adbc858c15833ce01">getPolygons</a> ()</td></tr>
<tr class="separator:ad2785a8dec1a562adbc858c15833ce01"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c5b65cd23bf105fca2d01fd38c3cef2"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdgeRing.html">OverlayEdgeRing</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1PolygonBuilder.html#a5c5b65cd23bf105fca2d01fd38c3cef2">getShellRings</a> ()</td></tr>
<tr class="separator:a5c5b65cd23bf105fca2d01fd38c3cef2"><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:aee680b7fccbf72411a842580a6801682"><td class="memItemLeft" align="right" valign="top">std::vector&lt; std::unique_ptr&lt; <a class="el" href="classgeos_1_1geom_1_1Polygon.html">geom::Polygon</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1PolygonBuilder.html#aee680b7fccbf72411a842580a6801682">computePolygons</a> (std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdgeRing.html">OverlayEdgeRing</a> * &gt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1PolygonBuilder.html#a7e19ae7f3d7baf7c7916fffed143c5fa">shellList</a>)</td></tr>
<tr class="separator:aee680b7fccbf72411a842580a6801682"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af868662318cd8153c1337a0149ced67b"><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_1PolygonBuilder.html#af868662318cd8153c1337a0149ced67b">buildRings</a> (std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> * &gt; &amp;resultAreaEdges)</td></tr>
<tr class="separator:af868662318cd8153c1337a0149ced67b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a76b80a0c0ef71c74f95cfb3c6553eb6e"><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_1PolygonBuilder.html#a76b80a0c0ef71c74f95cfb3c6553eb6e">linkResultAreaEdgesMax</a> (std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> * &gt; &amp;resultEdges)</td></tr>
<tr class="separator:a76b80a0c0ef71c74f95cfb3c6553eb6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6bdae1e4c20be77a2f460f37a9732717"><td class="memItemLeft" align="right" valign="top">std::vector&lt; std::unique_ptr&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1MaximalEdgeRing.html">MaximalEdgeRing</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1PolygonBuilder.html#a6bdae1e4c20be77a2f460f37a9732717">buildMaximalRings</a> (std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> * &gt; &amp;edges)</td></tr>
<tr class="separator:a6bdae1e4c20be77a2f460f37a9732717"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a14c0d069e6fa3fdf3c3c2f4c7e03bf23"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdgeRing.html">OverlayEdgeRing</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1PolygonBuilder.html#a14c0d069e6fa3fdf3c3c2f4c7e03bf23">storeMinimalRings</a> (std::vector&lt; std::unique_ptr&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdgeRing.html">OverlayEdgeRing</a> &gt;&gt; &amp;minRings)</td></tr>
<tr class="separator:a14c0d069e6fa3fdf3c3c2f4c7e03bf23"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8cc6b438fddecd3d1e056a1a72367027"><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_1PolygonBuilder.html#a8cc6b438fddecd3d1e056a1a72367027">buildMinimalRings</a> (std::vector&lt; std::unique_ptr&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1MaximalEdgeRing.html">MaximalEdgeRing</a> &gt;&gt; &amp;maxRings)</td></tr>
<tr class="separator:a8cc6b438fddecd3d1e056a1a72367027"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2aa48e6eceb8a1939afeb4173c040359"><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_1PolygonBuilder.html#a2aa48e6eceb8a1939afeb4173c040359">assignShellsAndHoles</a> (std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdgeRing.html">OverlayEdgeRing</a> * &gt; &amp;minRings)</td></tr>
<tr class="separator:a2aa48e6eceb8a1939afeb4173c040359"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae26dc47bfabdbdff1d3a6a21a290b73c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdgeRing.html">OverlayEdgeRing</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1PolygonBuilder.html#ae26dc47bfabdbdff1d3a6a21a290b73c">findSingleShell</a> (std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdgeRing.html">OverlayEdgeRing</a> * &gt; &amp;edgeRings) const </td></tr>
<tr class="separator:ae26dc47bfabdbdff1d3a6a21a290b73c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae1a0b942db88de656574d74f35f84b3f"><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_1PolygonBuilder.html#ae1a0b942db88de656574d74f35f84b3f">assignHoles</a> (<a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdgeRing.html">OverlayEdgeRing</a> *shell, std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdgeRing.html">OverlayEdgeRing</a> * &gt; &amp;edgeRings)</td></tr>
<tr class="separator:ae1a0b942db88de656574d74f35f84b3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa68f97bc90fbc03d38ba79ffa38b74f4"><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_1PolygonBuilder.html#aa68f97bc90fbc03d38ba79ffa38b74f4">placeFreeHoles</a> (std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdgeRing.html">OverlayEdgeRing</a> * &gt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1PolygonBuilder.html#a7e19ae7f3d7baf7c7916fffed143c5fa">shellList</a>, std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdgeRing.html">OverlayEdgeRing</a> * &gt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1PolygonBuilder.html#a863d762e416ab5505687af242bdebd34">freeHoleList</a>)</td></tr>
<tr class="separator:aa68f97bc90fbc03d38ba79ffa38b74f4"><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:a31723922b99ce49c53e01165f34e9585"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classgeos_1_1geom_1_1GeometryFactory.html">geom::GeometryFactory</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1PolygonBuilder.html#a31723922b99ce49c53e01165f34e9585">geometryFactory</a></td></tr>
<tr class="separator:a31723922b99ce49c53e01165f34e9585"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7e19ae7f3d7baf7c7916fffed143c5fa"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdgeRing.html">OverlayEdgeRing</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1PolygonBuilder.html#a7e19ae7f3d7baf7c7916fffed143c5fa">shellList</a></td></tr>
<tr class="separator:a7e19ae7f3d7baf7c7916fffed143c5fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a863d762e416ab5505687af242bdebd34"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdgeRing.html">OverlayEdgeRing</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1PolygonBuilder.html#a863d762e416ab5505687af242bdebd34">freeHoleList</a></td></tr>
<tr class="separator:a863d762e416ab5505687af242bdebd34"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac0d0fd244cea1ec86ba5cda0a0c52f3d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1PolygonBuilder.html#ac0d0fd244cea1ec86ba5cda0a0c52f3d">isEnforcePolygonal</a></td></tr>
<tr class="separator:ac0d0fd244cea1ec86ba5cda0a0c52f3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ce0029c20edc6be7ea97a7af9492c14"><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_1PolygonBuilder.html#a5ce0029c20edc6be7ea97a7af9492c14">vecOER</a></td></tr>
<tr class="separator:a5ce0029c20edc6be7ea97a7af9492c14"><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_2PolygonBuilder_8h_source.html#l00045">45</a> of file <a class="el" href="g_2PolygonBuilder_8h_source.html">g/PolygonBuilder.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a1d31ea6fdd4610ff36ec55a6353b389d"></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::PolygonBuilder::PolygonBuilder </td>
<td>(</td>
<td class="paramtype">std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> * &gt; &amp;&#160;</td>
<td class="paramname"><em>resultAreaEdges</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1GeometryFactory.html">geom::GeometryFactory</a> *&#160;</td>
<td class="paramname"><em>geomFact</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">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="g_2PolygonBuilder_8h_source.html#l00123">123</a> of file <a class="el" href="g_2PolygonBuilder_8h_source.html">g/PolygonBuilder.h</a>.</p>
</div>
</div>
<a class="anchor" id="a0a6eab7ca22e47be6f8b70f0bcc168e8"></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::PolygonBuilder::PolygonBuilder </td>
<td>(</td>
<td class="paramtype">std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> * &gt; &amp;&#160;</td>
<td class="paramname"><em>resultAreaEdges</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1GeometryFactory.html">geom::GeometryFactory</a> *&#160;</td>
<td class="paramname"><em>geomFact</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>p_isEnforcePolygonal</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">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="g_2PolygonBuilder_8h_source.html#l00130">130</a> of file <a class="el" href="g_2PolygonBuilder_8h_source.html">g/PolygonBuilder.h</a>.</p>
</div>
</div>
<a class="anchor" id="afe041f0251357677de8fe70c7efeaa6a"></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::PolygonBuilder::PolygonBuilder </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1PolygonBuilder.html">PolygonBuilder</a> &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="ae1a0b942db88de656574d74f35f84b3f"></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::PolygonBuilder::assignHoles </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdgeRing.html">OverlayEdgeRing</a> *&#160;</td>
<td class="paramname"><em>shell</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdgeRing.html">OverlayEdgeRing</a> * &gt; &amp;&#160;</td>
<td class="paramname"><em>edgeRings</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">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>For the set of minimal rings comprising a maximal ring, assigns the holes to the shell known to contain them. Assigning the holes directly to the shell serves two purposes:</p>
<ul>
<li>it is faster than using a point-in-polygon check later on.</li>
<li>it ensures correctness, since if the PIP test was used the point chosen might lie on the shell, which might return an incorrect result from the PIP test </li>
</ul>
</div>
</div>
<a class="anchor" id="a2aa48e6eceb8a1939afeb4173c040359"></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::PolygonBuilder::assignShellsAndHoles </td>
<td>(</td>
<td class="paramtype">std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdgeRing.html">OverlayEdgeRing</a> * &gt; &amp;&#160;</td>
<td class="paramname"><em>minRings</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="a6bdae1e4c20be77a2f460f37a9732717"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;std::unique_ptr&lt;<a class="el" href="classgeos_1_1operation_1_1overlayng_1_1MaximalEdgeRing.html">MaximalEdgeRing</a>&gt; &gt; geos::operation::overlayng::PolygonBuilder::buildMaximalRings </td>
<td>(</td>
<td class="paramtype">std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> * &gt; &amp;&#160;</td>
<td class="paramname"><em>edges</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">
<p>For all OverlayEdge*s in result, form them into MaximalEdgeRings </p>
</div>
</div>
<a class="anchor" id="a8cc6b438fddecd3d1e056a1a72367027"></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::PolygonBuilder::buildMinimalRings </td>
<td>(</td>
<td class="paramtype">std::vector&lt; std::unique_ptr&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1MaximalEdgeRing.html">MaximalEdgeRing</a> &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>maxRings</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="af868662318cd8153c1337a0149ced67b"></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::PolygonBuilder::buildRings </td>
<td>(</td>
<td class="paramtype">std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> * &gt; &amp;&#160;</td>
<td class="paramname"><em>resultAreaEdges</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="aee680b7fccbf72411a842580a6801682"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;std::unique_ptr&lt;<a class="el" href="classgeos_1_1geom_1_1Polygon.html">geom::Polygon</a>&gt; &gt; geos::operation::overlayng::PolygonBuilder::computePolygons </td>
<td>(</td>
<td class="paramtype">std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdgeRing.html">OverlayEdgeRing</a> * &gt;&#160;</td>
<td class="paramname"><em>shellList</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="ae26dc47bfabdbdff1d3a6a21a290b73c"></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_1OverlayEdgeRing.html">OverlayEdgeRing</a>* geos::operation::overlayng::PolygonBuilder::findSingleShell </td>
<td>(</td>
<td class="paramtype">std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdgeRing.html">OverlayEdgeRing</a> * &gt; &amp;&#160;</td>
<td class="paramname"><em>edgeRings</em></td><td>)</td>
<td> const</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>Finds the single shell, if any, out of a list of minimal rings derived from a maximal ring. The other possibility is that they are a set of (connected) holes, in which case no shell will be found.</p>
<dl class="section return"><dt>Returns</dt><dd>the shell ring, if there is one or null, if all rings are holes </dd></dl>
</div>
</div>
<a class="anchor" id="ad2785a8dec1a562adbc858c15833ce01"></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_1geom_1_1Polygon.html">geom::Polygon</a>&gt; &gt; geos::operation::overlayng::PolygonBuilder::getPolygons </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a5c5b65cd23bf105fca2d01fd38c3cef2"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;<a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdgeRing.html">OverlayEdgeRing</a>*&gt; geos::operation::overlayng::PolygonBuilder::getShellRings </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a76b80a0c0ef71c74f95cfb3c6553eb6e"></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::PolygonBuilder::linkResultAreaEdgesMax </td>
<td>(</td>
<td class="paramtype">std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdge.html">OverlayEdge</a> * &gt; &amp;&#160;</td>
<td class="paramname"><em>resultEdges</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="ac6e0c9e81666c97ff0a2c26a6f8555bd"></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_1PolygonBuilder.html">PolygonBuilder</a>&amp; geos::operation::overlayng::PolygonBuilder::operator= </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1PolygonBuilder.html">PolygonBuilder</a> &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">delete</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="aa68f97bc90fbc03d38ba79ffa38b74f4"></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::PolygonBuilder::placeFreeHoles </td>
<td>(</td>
<td class="paramtype">std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdgeRing.html">OverlayEdgeRing</a> * &gt;&#160;</td>
<td class="paramname"><em>shellList</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdgeRing.html">OverlayEdgeRing</a> * &gt;&#160;</td>
<td class="paramname"><em>freeHoleList</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">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Place holes have not yet been assigned to a shell. These "free" holes should all be <b>properly</b> contained in their parent shells, so it is safe to use the <code>findEdgeRingContaining</code> method. (This is the case because any holes which are NOT properly contained (i.e. are connected to their parent shell) would have formed part of a <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1MaximalEdgeRing.html">MaximalEdgeRing</a> and been handled in a previous step).</p>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname">TopologyException</td><td>if a hole cannot be assigned to a shell </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="a14c0d069e6fa3fdf3c3c2f4c7e03bf23"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;<a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdgeRing.html">OverlayEdgeRing</a>*&gt; geos::operation::overlayng::PolygonBuilder::storeMinimalRings </td>
<td>(</td>
<td class="paramtype">std::vector&lt; std::unique_ptr&lt; <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdgeRing.html">OverlayEdgeRing</a> &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>minRings</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">
<p>The lifespan of the OverlayEdgeRings is tieds to the lifespan of the <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1PolygonBuilder.html">PolygonBuilder</a>, so we hold them on the <a class="el" href="classgeos_1_1operation_1_1overlayng_1_1PolygonBuilder.html">PolygonBuilder</a> and use bare pointers for managing the relationships </p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="a863d762e416ab5505687af242bdebd34"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;<a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdgeRing.html">OverlayEdgeRing</a>*&gt; geos::operation::overlayng::PolygonBuilder::freeHoleList</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_2PolygonBuilder_8h_source.html#l00052">52</a> of file <a class="el" href="g_2PolygonBuilder_8h_source.html">g/PolygonBuilder.h</a>.</p>
</div>
</div>
<a class="anchor" id="a31723922b99ce49c53e01165f34e9585"></a>
<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="classgeos_1_1geom_1_1GeometryFactory.html">geom::GeometryFactory</a>* geos::operation::overlayng::PolygonBuilder::geometryFactory</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_2PolygonBuilder_8h_source.html#l00050">50</a> of file <a class="el" href="g_2PolygonBuilder_8h_source.html">g/PolygonBuilder.h</a>.</p>
</div>
</div>
<a class="anchor" id="ac0d0fd244cea1ec86ba5cda0a0c52f3d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool geos::operation::overlayng::PolygonBuilder::isEnforcePolygonal</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_2PolygonBuilder_8h_source.html#l00053">53</a> of file <a class="el" href="g_2PolygonBuilder_8h_source.html">g/PolygonBuilder.h</a>.</p>
</div>
</div>
<a class="anchor" id="a7e19ae7f3d7baf7c7916fffed143c5fa"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::vector&lt;<a class="el" href="classgeos_1_1operation_1_1overlayng_1_1OverlayEdgeRing.html">OverlayEdgeRing</a>*&gt; geos::operation::overlayng::PolygonBuilder::shellList</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_2PolygonBuilder_8h_source.html#l00051">51</a> of file <a class="el" href="g_2PolygonBuilder_8h_source.html">g/PolygonBuilder.h</a>.</p>
</div>
</div>
<a class="anchor" id="a5ce0029c20edc6be7ea97a7af9492c14"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<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::PolygonBuilder::vecOER</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_2PolygonBuilder_8h_source.html#l00056">56</a> of file <a class="el" href="g_2PolygonBuilder_8h_source.html">g/PolygonBuilder.h</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="g_2PolygonBuilder_8h_source.html">g/PolygonBuilder.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>