geos_390_docs/classgeos_1_1operation_1_1i...

645 lines
33 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::intersection::RectangleIntersectionBuilder 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_1intersection.html">intersection</a></li><li class="navelem"><a class="el" href="classgeos_1_1operation_1_1intersection_1_1RectangleIntersectionBuilder.html">RectangleIntersectionBuilder</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="#friends">Friends</a> &#124;
<a href="classgeos_1_1operation_1_1intersection_1_1RectangleIntersectionBuilder-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">geos::operation::intersection::RectangleIntersectionBuilder Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Rebuild geometries from subpaths left by clipping with a rectangle.
<a href="classgeos_1_1operation_1_1intersection_1_1RectangleIntersectionBuilder.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="RectangleIntersectionBuilder_8h_source.html">RectangleIntersectionBuilder.h</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for geos::operation::intersection::RectangleIntersectionBuilder:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classgeos_1_1operation_1_1intersection_1_1RectangleIntersectionBuilder__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:acf3ea11d830fbd31abf5aa3c8b5b6178"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1intersection_1_1RectangleIntersectionBuilder.html#acf3ea11d830fbd31abf5aa3c8b5b6178">~RectangleIntersectionBuilder</a> ()</td></tr>
<tr class="separator:acf3ea11d830fbd31abf5aa3c8b5b6178"><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:abf6d587b88eac5e12f96b892919a6293"><td class="memItemLeft" align="right" valign="top">std::unique_ptr&lt; <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1intersection_1_1RectangleIntersectionBuilder.html#abf6d587b88eac5e12f96b892919a6293">build</a> ()</td></tr>
<tr class="memdesc:abf6d587b88eac5e12f96b892919a6293"><td class="mdescLeft">&#160;</td><td class="mdescRight">Build the result geometry from partial results and clean up. <a href="#abf6d587b88eac5e12f96b892919a6293">More...</a><br /></td></tr>
<tr class="separator:abf6d587b88eac5e12f96b892919a6293"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a761e194726a14c10c3f603cde5d2d7ea"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1intersection_1_1RectangleIntersectionBuilder.html#a761e194726a14c10c3f603cde5d2d7ea">reconnectPolygons</a> (const <a class="el" href="classgeos_1_1operation_1_1intersection_1_1Rectangle.html">Rectangle</a> &amp;rect)</td></tr>
<tr class="memdesc:a761e194726a14c10c3f603cde5d2d7ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Build polygons from parts left by clipping one. <a href="#a761e194726a14c10c3f603cde5d2d7ea">More...</a><br /></td></tr>
<tr class="separator:a761e194726a14c10c3f603cde5d2d7ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad58f8807531a7e53e9cb39e1badc6108"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1intersection_1_1RectangleIntersectionBuilder.html#ad58f8807531a7e53e9cb39e1badc6108">reconnect</a> ()</td></tr>
<tr class="separator:ad58f8807531a7e53e9cb39e1badc6108"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a406bef2bfee831f2e573732b24b1b1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1intersection_1_1RectangleIntersectionBuilder.html#a8a406bef2bfee831f2e573732b24b1b1">reverseLines</a> ()</td></tr>
<tr class="separator:a8a406bef2bfee831f2e573732b24b1b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeaeb7f82ee08ea02a53545f23e11b8c3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1intersection_1_1RectangleIntersectionBuilder.html#aeaeb7f82ee08ea02a53545f23e11b8c3">release</a> (<a class="el" href="classgeos_1_1operation_1_1intersection_1_1RectangleIntersectionBuilder.html">RectangleIntersectionBuilder</a> &amp;parts)</td></tr>
<tr class="separator:aeaeb7f82ee08ea02a53545f23e11b8c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a43ede4f5f740de7baf2b562f1cc28807"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1intersection_1_1RectangleIntersectionBuilder.html#a43ede4f5f740de7baf2b562f1cc28807">add</a> (<a class="el" href="classgeos_1_1geom_1_1Polygon.html">geom::Polygon</a> *g)</td></tr>
<tr class="separator:a43ede4f5f740de7baf2b562f1cc28807"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acdacc25934c6befd91a64d418ce1e182"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1intersection_1_1RectangleIntersectionBuilder.html#acdacc25934c6befd91a64d418ce1e182">add</a> (<a class="el" href="classgeos_1_1geom_1_1LineString.html">geom::LineString</a> *g)</td></tr>
<tr class="separator:acdacc25934c6befd91a64d418ce1e182"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7519b538b9ff2cff8c6bd09b44c2d50a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1intersection_1_1RectangleIntersectionBuilder.html#a7519b538b9ff2cff8c6bd09b44c2d50a">add</a> (<a class="el" href="classgeos_1_1geom_1_1Point.html">geom::Point</a> *g)</td></tr>
<tr class="separator:a7519b538b9ff2cff8c6bd09b44c2d50a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a204c642c87709b20c705aee95471d872"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1intersection_1_1RectangleIntersectionBuilder.html#a204c642c87709b20c705aee95471d872">empty</a> () const </td></tr>
<tr class="separator:a204c642c87709b20c705aee95471d872"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a69d5735811622263bbb89fe195f96a18"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1intersection_1_1RectangleIntersectionBuilder.html#a69d5735811622263bbb89fe195f96a18">clear</a> ()</td></tr>
<tr class="separator:a69d5735811622263bbb89fe195f96a18"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd98ed6f36d52f230d353a4d87df418c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1intersection_1_1RectangleIntersectionBuilder.html#abd98ed6f36d52f230d353a4d87df418c">close_boundary</a> (const <a class="el" href="classgeos_1_1operation_1_1intersection_1_1Rectangle.html">Rectangle</a> &amp;rect, std::vector&lt; <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &gt; *ring, double x1, double y1, double x2, double y2)</td></tr>
<tr class="memdesc:abd98ed6f36d52f230d353a4d87df418c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Close a ring clockwise along rectangle edges. <a href="#abd98ed6f36d52f230d353a4d87df418c">More...</a><br /></td></tr>
<tr class="separator:abd98ed6f36d52f230d353a4d87df418c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1245b31ef590a15c696b4b7e7fe8a9b3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1intersection_1_1RectangleIntersectionBuilder.html#a1245b31ef590a15c696b4b7e7fe8a9b3">close_ring</a> (const <a class="el" href="classgeos_1_1operation_1_1intersection_1_1Rectangle.html">Rectangle</a> &amp;rect, std::vector&lt; <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &gt; *ring)</td></tr>
<tr class="separator:a1245b31ef590a15c696b4b7e7fe8a9b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac873005e873567f5ff590e8ebb6512c9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1intersection_1_1RectangleIntersectionBuilder.html#ac873005e873567f5ff590e8ebb6512c9">RectangleIntersectionBuilder</a> (const <a class="el" href="classgeos_1_1geom_1_1GeometryFactory.html">geom::GeometryFactory</a> &amp;f)</td></tr>
<tr class="separator:ac873005e873567f5ff590e8ebb6512c9"><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:a3d9416ce3cab8eb643b24aeaeaf60d2a"><td class="memItemLeft" align="right" valign="top">std::list&lt; <a class="el" href="classgeos_1_1geom_1_1Polygon.html">geom::Polygon</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1intersection_1_1RectangleIntersectionBuilder.html#a3d9416ce3cab8eb643b24aeaeaf60d2a">polygons</a></td></tr>
<tr class="separator:a3d9416ce3cab8eb643b24aeaeaf60d2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1da9eb6640b683b7551d41f51193bdf6"><td class="memItemLeft" align="right" valign="top">std::list&lt; <a class="el" href="classgeos_1_1geom_1_1LineString.html">geom::LineString</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1intersection_1_1RectangleIntersectionBuilder.html#a1da9eb6640b683b7551d41f51193bdf6">lines</a></td></tr>
<tr class="separator:a1da9eb6640b683b7551d41f51193bdf6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adf397d9d962e22bdb4cc55bf8cbcacf9"><td class="memItemLeft" align="right" valign="top">std::list&lt; <a class="el" href="classgeos_1_1geom_1_1Point.html">geom::Point</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1intersection_1_1RectangleIntersectionBuilder.html#adf397d9d962e22bdb4cc55bf8cbcacf9">points</a></td></tr>
<tr class="separator:adf397d9d962e22bdb4cc55bf8cbcacf9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a627a74327d39f7184017b28a382ac6fb"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classgeos_1_1geom_1_1GeometryFactory.html">geom::GeometryFactory</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1intersection_1_1RectangleIntersectionBuilder.html#a627a74327d39f7184017b28a382ac6fb">_gf</a></td></tr>
<tr class="separator:a627a74327d39f7184017b28a382ac6fb"><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:ad2b514c8884b03852eb0a609f0193c53"><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1intersection_1_1RectangleIntersectionBuilder.html#ad2b514c8884b03852eb0a609f0193c53">RectangleIntersection</a></td></tr>
<tr class="separator:ad2b514c8884b03852eb0a609f0193c53"><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>Rebuild geometries from subpaths left by clipping with a rectangle. </p>
<p>The <a class="el" href="classgeos_1_1operation_1_1intersection_1_1RectangleIntersectionBuilder.html" title="Rebuild geometries from subpaths left by clipping with a rectangle. ">RectangleIntersectionBuilder</a> is used to maintain lists of polygons, linestrings and points left from clipping a <a class="el" href="classgeos_1_1geom_1_1Geometry.html" title="Basic implementation of Geometry, constructed and destructed by GeometryFactory. ">geom::Geometry</a> with a <a class="el" href="classgeos_1_1operation_1_1intersection_1_1Rectangle.html" title="Clipping rectangle. ">Rectangle</a>. Once all clipping has been done, the class builds a valid <a class="el" href="classgeos_1_1geom_1_1Geometry.html" title="Basic implementation of Geometry, constructed and destructed by GeometryFactory. ">geom::Geometry</a> from the components.</p>
<dl class="section note"><dt>Note</dt><dd>This is a utility class needed by <a class="el" href="classgeos_1_1operation_1_1intersection_1_1RectangleIntersection.html" title="Speed-optimized clipping of a Geometry with a rectangle. ">RectangleIntersection</a>, and is not intended for public use. </dd></dl>
<p>Definition at line <a class="el" href="RectangleIntersectionBuilder_8h_source.html#l00063">63</a> of file <a class="el" href="RectangleIntersectionBuilder_8h_source.html">RectangleIntersectionBuilder.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="acf3ea11d830fbd31abf5aa3c8b5b6178"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">geos::operation::intersection::RectangleIntersectionBuilder::~RectangleIntersectionBuilder </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ac873005e873567f5ff590e8ebb6512c9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">geos::operation::intersection::RectangleIntersectionBuilder::RectangleIntersectionBuilder </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1GeometryFactory.html">geom::GeometryFactory</a> &amp;&#160;</td>
<td class="paramname"><em>f</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="RectangleIntersectionBuilder_8h_source.html#l00149">149</a> of file <a class="el" href="RectangleIntersectionBuilder_8h_source.html">RectangleIntersectionBuilder.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a43ede4f5f740de7baf2b562f1cc28807"></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::intersection::RectangleIntersectionBuilder::add </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1geom_1_1Polygon.html">geom::Polygon</a> *&#160;</td>
<td class="paramname"><em>g</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="acdacc25934c6befd91a64d418ce1e182"></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::intersection::RectangleIntersectionBuilder::add </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1geom_1_1LineString.html">geom::LineString</a> *&#160;</td>
<td class="paramname"><em>g</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="a7519b538b9ff2cff8c6bd09b44c2d50a"></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::intersection::RectangleIntersectionBuilder::add </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1geom_1_1Point.html">geom::Point</a> *&#160;</td>
<td class="paramname"><em>g</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="abf6d587b88eac5e12f96b892919a6293"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::unique_ptr&lt;<a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a>&gt; geos::operation::intersection::RectangleIntersectionBuilder::build </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">
<p>Build the result geometry from partial results and clean up. </p>
</div>
</div>
<a class="anchor" id="a69d5735811622263bbb89fe195f96a18"></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::intersection::RectangleIntersectionBuilder::clear </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="abd98ed6f36d52f230d353a4d87df418c"></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::intersection::RectangleIntersectionBuilder::close_boundary </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1operation_1_1intersection_1_1Rectangle.html">Rectangle</a> &amp;&#160;</td>
<td class="paramname"><em>rect</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &gt; *&#160;</td>
<td class="paramname"><em>ring</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>x1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>y1</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>x2</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>y2</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>Close a ring clockwise along rectangle edges. </p>
<p>Only the 4 corners and x1,y1 need to be considered. The possible cases are:</p>
<p>x1,y1 corner1 x1,y1 corner1 corner2 x1,y1 corner1 corner2 corner3 x1,y1 corner1 corner2 corner3 corner4 x1,y1 </p>
</div>
</div>
<a class="anchor" id="a1245b31ef590a15c696b4b7e7fe8a9b3"></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::intersection::RectangleIntersectionBuilder::close_ring </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1operation_1_1intersection_1_1Rectangle.html">Rectangle</a> &amp;&#160;</td>
<td class="paramname"><em>rect</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; <a class="el" href="classgeos_1_1geom_1_1Coordinate.html">geom::Coordinate</a> &gt; *&#160;</td>
<td class="paramname"><em>ring</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">
</div>
</div>
<a class="anchor" id="a204c642c87709b20c705aee95471d872"></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::intersection::RectangleIntersectionBuilder::empty </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">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="ad58f8807531a7e53e9cb39e1badc6108"></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::intersection::RectangleIntersectionBuilder::reconnect </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">
<p>Reconnect disjointed parts</p>
<p>When we clip a LinearRing we may get multiple linestrings. Often the first and last ones can be reconnected to simplify output.</p>
<p>Sample clip with a rectangle 0,0 &ndash;&gt; 10,10 without reconnecting:</p>
<p>Input: POLYGON ((5 10,0 0,10 0,5 10)) Output: MULTILINESTRING ((5 10,0 0),(10 0,5 10)) Desired: LINESTRING (10 0,5 10,0 0)</p>
<p>TODO: If there is a very sharp spike from inside the rectangle outside, and then back in, it is possible that the intersection points at the edge are equal. In this case we could reconnect the linestrings. The task is the same we're already doing for the 1st/last linestrings, we'd just do it for any adjacent pair as well. </p>
</div>
</div>
<a class="anchor" id="a761e194726a14c10c3f603cde5d2d7ea"></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::intersection::RectangleIntersectionBuilder::reconnectPolygons </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1operation_1_1intersection_1_1Rectangle.html">Rectangle</a> &amp;&#160;</td>
<td class="paramname"><em>rect</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>Build polygons from parts left by clipping one. </p>
<ol type="1">
<li>Build exterior ring(s) from lines</li>
<li>Attach polygons as holes to the exterior ring(s) </li>
</ol>
</div>
</div>
<a class="anchor" id="aeaeb7f82ee08ea02a53545f23e11b8c3"></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::intersection::RectangleIntersectionBuilder::release </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1operation_1_1intersection_1_1RectangleIntersectionBuilder.html">RectangleIntersectionBuilder</a> &amp;&#160;</td>
<td class="paramname"><em>parts</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>Export parts to another container </p>
</div>
</div>
<a class="anchor" id="a8a406bef2bfee831f2e573732b24b1b1"></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::intersection::RectangleIntersectionBuilder::reverseLines </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>
<h2 class="groupheader">Friends And Related Function Documentation</h2>
<a class="anchor" id="ad2b514c8884b03852eb0a609f0193c53"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">friend class <a class="el" href="classgeos_1_1operation_1_1intersection_1_1RectangleIntersection.html">RectangleIntersection</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">friend</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="RectangleIntersectionBuilder_8h_source.html#l00065">65</a> of file <a class="el" href="RectangleIntersectionBuilder_8h_source.html">RectangleIntersectionBuilder.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="a627a74327d39f7184017b28a382ac6fb"></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>&amp; geos::operation::intersection::RectangleIntersectionBuilder::_gf</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="RectangleIntersectionBuilder_8h_source.html#l00152">152</a> of file <a class="el" href="RectangleIntersectionBuilder_8h_source.html">RectangleIntersectionBuilder.h</a>.</p>
</div>
</div>
<a class="anchor" id="a1da9eb6640b683b7551d41f51193bdf6"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::list&lt;<a class="el" href="classgeos_1_1geom_1_1LineString.html">geom::LineString</a>*&gt; geos::operation::intersection::RectangleIntersectionBuilder::lines</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="RectangleIntersectionBuilder_8h_source.html#l00126">126</a> of file <a class="el" href="RectangleIntersectionBuilder_8h_source.html">RectangleIntersectionBuilder.h</a>.</p>
</div>
</div>
<a class="anchor" id="adf397d9d962e22bdb4cc55bf8cbcacf9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::list&lt;<a class="el" href="classgeos_1_1geom_1_1Point.html">geom::Point</a>*&gt; geos::operation::intersection::RectangleIntersectionBuilder::points</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="RectangleIntersectionBuilder_8h_source.html#l00127">127</a> of file <a class="el" href="RectangleIntersectionBuilder_8h_source.html">RectangleIntersectionBuilder.h</a>.</p>
</div>
</div>
<a class="anchor" id="a3d9416ce3cab8eb643b24aeaeaf60d2a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::list&lt;<a class="el" href="classgeos_1_1geom_1_1Polygon.html">geom::Polygon</a>*&gt; geos::operation::intersection::RectangleIntersectionBuilder::polygons</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="RectangleIntersectionBuilder_8h_source.html#l00125">125</a> of file <a class="el" href="RectangleIntersectionBuilder_8h_source.html">RectangleIntersectionBuilder.h</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="RectangleIntersectionBuilder_8h_source.html">RectangleIntersectionBuilder.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>