geos_390_docs/classgeos_1_1operation_1_1b...

778 lines
40 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::buffer::BufferBuilder 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_1buffer.html">buffer</a></li><li class="navelem"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferBuilder.html">BufferBuilder</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-static-methods">Static Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classgeos_1_1operation_1_1buffer_1_1BufferBuilder-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">geos::operation::buffer::BufferBuilder Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Builds the buffer geometry for a given input geometry and precision model.
<a href="classgeos_1_1operation_1_1buffer_1_1BufferBuilder.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="BufferBuilder_8h_source.html">BufferBuilder.h</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for geos::operation::buffer::BufferBuilder:</div>
<div class="dyncontent">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="classgeos_1_1operation_1_1buffer_1_1BufferBuilder__coll__graph.svg" width="100%" height="600"><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:a1cf94a4a5f9fbea4f7e8536715818748"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferBuilder.html#a1cf94a4a5f9fbea4f7e8536715818748">BufferBuilder</a> (const <a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferParameters.html">BufferParameters</a> &amp;nBufParams)</td></tr>
<tr class="separator:a1cf94a4a5f9fbea4f7e8536715818748"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac4ddd0046c996c838f970238745e71b7"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferBuilder.html#ac4ddd0046c996c838f970238745e71b7">~BufferBuilder</a> ()</td></tr>
<tr class="separator:ac4ddd0046c996c838f970238745e71b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d3a4a70193f95b181d5e8d51c8d10f2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferBuilder.html#a8d3a4a70193f95b181d5e8d51c8d10f2">setWorkingPrecisionModel</a> (const <a class="el" href="classgeos_1_1geom_1_1PrecisionModel.html">geom::PrecisionModel</a> *pm)</td></tr>
<tr class="separator:a8d3a4a70193f95b181d5e8d51c8d10f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a65ecd460185da1dcf1248b2471c33bca"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferBuilder.html#a65ecd460185da1dcf1248b2471c33bca">setNoder</a> (<a class="el" href="classgeos_1_1noding_1_1Noder.html">noding::Noder</a> *newNoder)</td></tr>
<tr class="separator:a65ecd460185da1dcf1248b2471c33bca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad40baf34b7d7db1aa3762b52b662df10"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferBuilder.html#ad40baf34b7d7db1aa3762b52b662df10">buffer</a> (const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *g, double distance)</td></tr>
<tr class="separator:ad40baf34b7d7db1aa3762b52b662df10"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a19a3128c8a6769ffc65613b5ecdf42ea"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferBuilder.html#a19a3128c8a6769ffc65613b5ecdf42ea">bufferLineSingleSided</a> (const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *g, double distance, bool leftSide)</td></tr>
<tr class="separator:a19a3128c8a6769ffc65613b5ecdf42ea"><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:a2f6f7bca36b5512a6c15b3b1b8b3be7f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferBuilder.html#a2f6f7bca36b5512a6c15b3b1b8b3be7f">computeNodedEdges</a> (std::vector&lt; <a class="el" href="classgeos_1_1noding_1_1SegmentString.html">noding::SegmentString</a> * &gt; &amp;bufSegStr, const <a class="el" href="classgeos_1_1geom_1_1PrecisionModel.html">geom::PrecisionModel</a> *precisionModel)</td></tr>
<tr class="separator:a2f6f7bca36b5512a6c15b3b1b8b3be7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a418de0beb6704f562d7146c2a6570447"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferBuilder.html#a418de0beb6704f562d7146c2a6570447">insertUniqueEdge</a> (<a class="el" href="classgeos_1_1geomgraph_1_1Edge.html">geomgraph::Edge</a> *e)</td></tr>
<tr class="separator:a418de0beb6704f562d7146c2a6570447"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a70864441daf200dacabc21cacd0a02cb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferBuilder.html#a70864441daf200dacabc21cacd0a02cb">createSubgraphs</a> (<a class="el" href="classgeos_1_1geomgraph_1_1PlanarGraph.html">geomgraph::PlanarGraph</a> *graph, std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferSubgraph.html">BufferSubgraph</a> * &gt; &amp;list)</td></tr>
<tr class="separator:a70864441daf200dacabc21cacd0a02cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a834f03073a3e7abbff057f5b97d5322b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferBuilder.html#a834f03073a3e7abbff057f5b97d5322b">buildSubgraphs</a> (const std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferSubgraph.html">BufferSubgraph</a> * &gt; &amp;subgraphList, <a class="el" href="classgeos_1_1operation_1_1overlay_1_1PolygonBuilder.html">overlay::PolygonBuilder</a> &amp;polyBuilder)</td></tr>
<tr class="separator:a834f03073a3e7abbff057f5b97d5322b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d29ef822d68da70ee89ff7d05e9b76d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1noding_1_1Noder.html">noding::Noder</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferBuilder.html#a7d29ef822d68da70ee89ff7d05e9b76d">getNoder</a> (const <a class="el" href="classgeos_1_1geom_1_1PrecisionModel.html">geom::PrecisionModel</a> *precisionModel)</td></tr>
<tr class="memdesc:a7d29ef822d68da70ee89ff7d05e9b76d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the externally-set <a class="el" href="classgeos_1_1noding_1_1Noder.html" title="Computes all intersections between segments in a set of SegmentString. ">noding::Noder</a> OR a newly created one using the given precisionModel. <a href="#a7d29ef822d68da70ee89ff7d05e9b76d">More...</a><br /></td></tr>
<tr class="separator:a7d29ef822d68da70ee89ff7d05e9b76d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0dad8fd9e597a5adf317ff0aae9faa1b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferBuilder.html#a0dad8fd9e597a5adf317ff0aae9faa1b">createEmptyResultGeometry</a> () const </td></tr>
<tr class="separator:a0dad8fd9e597a5adf317ff0aae9faa1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a32b696e2ad1ac8be1251140874df531c"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferBuilder.html#a32b696e2ad1ac8be1251140874df531c">BufferBuilder</a> (const <a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferBuilder.html">BufferBuilder</a> &amp;other)=delete</td></tr>
<tr class="separator:a32b696e2ad1ac8be1251140874df531c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9fa81a977a015ad358e8c7fab043ad9f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferBuilder.html">BufferBuilder</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferBuilder.html#a9fa81a977a015ad358e8c7fab043ad9f">operator=</a> (const <a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferBuilder.html">BufferBuilder</a> &amp;rhs)=delete</td></tr>
<tr class="separator:a9fa81a977a015ad358e8c7fab043ad9f"><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:a89ee526cfc4503ad0d494624bbed7203"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferBuilder.html#a89ee526cfc4503ad0d494624bbed7203">depthDelta</a> (const <a class="el" href="classgeos_1_1geomgraph_1_1Label.html">geomgraph::Label</a> &amp;label)</td></tr>
<tr class="separator:a89ee526cfc4503ad0d494624bbed7203"><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:a45a3d81dcf126602c38ba7326579a5c5"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferParameters.html">BufferParameters</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferBuilder.html#a45a3d81dcf126602c38ba7326579a5c5">bufParams</a></td></tr>
<tr class="separator:a45a3d81dcf126602c38ba7326579a5c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7fcd9eff913c6edb06e48af61b56b9ae"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classgeos_1_1geom_1_1PrecisionModel.html">geom::PrecisionModel</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferBuilder.html#a7fcd9eff913c6edb06e48af61b56b9ae">workingPrecisionModel</a></td></tr>
<tr class="separator:a7fcd9eff913c6edb06e48af61b56b9ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad3792803418da99af652f83895fe704f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1algorithm_1_1LineIntersector.html">algorithm::LineIntersector</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferBuilder.html#ad3792803418da99af652f83895fe704f">li</a></td></tr>
<tr class="separator:ad3792803418da99af652f83895fe704f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a256bc79be60c253179140bfb83f9a962"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1noding_1_1IntersectionAdder.html">noding::IntersectionAdder</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferBuilder.html#a256bc79be60c253179140bfb83f9a962">intersectionAdder</a></td></tr>
<tr class="separator:a256bc79be60c253179140bfb83f9a962"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa49f06f07635d95eeea6ca1fbbaa57a0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1noding_1_1Noder.html">noding::Noder</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferBuilder.html#aa49f06f07635d95eeea6ca1fbbaa57a0">workingNoder</a></td></tr>
<tr class="separator:aa49f06f07635d95eeea6ca1fbbaa57a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afeb98554f7226da6cc5185cf2ab9a276"><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_1buffer_1_1BufferBuilder.html#afeb98554f7226da6cc5185cf2ab9a276">geomFact</a></td></tr>
<tr class="separator:afeb98554f7226da6cc5185cf2ab9a276"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9d88040f7bdce508bcad6a5d31e3c4e6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classgeos_1_1geomgraph_1_1EdgeList.html">geomgraph::EdgeList</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferBuilder.html#a9d88040f7bdce508bcad6a5d31e3c4e6">edgeList</a></td></tr>
<tr class="separator:a9d88040f7bdce508bcad6a5d31e3c4e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a78a629622eafe5355d70cf2557d9dfc7"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classgeos_1_1geomgraph_1_1Label.html">geomgraph::Label</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferBuilder.html#a78a629622eafe5355d70cf2557d9dfc7">newLabels</a></td></tr>
<tr class="separator:a78a629622eafe5355d70cf2557d9dfc7"><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>Builds the buffer geometry for a given input geometry and precision model. </p>
<p>Allows setting the level of approximation for circular arcs, and the precision model in which to carry out the computation.</p>
<p>When computing buffers in floating point double-precision it can happen that the process of iterated noding can fail to converge (terminate).</p>
<p>In this case a TopologyException will be thrown. Retrying the computation in a fixed precision can produce more robust results. </p>
<p>Definition at line <a class="el" href="BufferBuilder_8h_source.html#l00088">88</a> of file <a class="el" href="BufferBuilder_8h_source.html">BufferBuilder.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a1cf94a4a5f9fbea4f7e8536715818748"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">geos::operation::buffer::BufferBuilder::BufferBuilder </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferParameters.html">BufferParameters</a> &amp;&#160;</td>
<td class="paramname"><em>nBufParams</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>Creates a new <a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferBuilder.html" title="Builds the buffer geometry for a given input geometry and precision model. ">BufferBuilder</a></p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">nBufParams</td><td>buffer parameters, this object will keep a reference to the passed parameters so caller must make sure the object is kept alive for the whole lifetime of the buffer builder. </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="BufferBuilder_8h_source.html#l00100">100</a> of file <a class="el" href="BufferBuilder_8h_source.html">BufferBuilder.h</a>.</p>
</div>
</div>
<a class="anchor" id="ac4ddd0046c996c838f970238745e71b7"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">geos::operation::buffer::BufferBuilder::~BufferBuilder </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a32b696e2ad1ac8be1251140874df531c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">geos::operation::buffer::BufferBuilder::BufferBuilder </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferBuilder.html">BufferBuilder</a> &amp;&#160;</td>
<td class="paramname"><em>other</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span><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="ad40baf34b7d7db1aa3762b52b662df10"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a>* geos::operation::buffer::BufferBuilder::buffer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *&#160;</td>
<td class="paramname"><em>g</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>distance</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a19a3128c8a6769ffc65613b5ecdf42ea"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a>* geos::operation::buffer::BufferBuilder::bufferLineSingleSided </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1Geometry.html">geom::Geometry</a> *&#160;</td>
<td class="paramname"><em>g</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double&#160;</td>
<td class="paramname"><em>distance</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>leftSide</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Generates offset curve for linear geometry.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">g</td><td>non-areal geometry object </td></tr>
<tr><td class="paramname">distance</td><td>width of offset </td></tr>
<tr><td class="paramname">leftSide</td><td>controls on which side of the input geometry offset curve is generated.</td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>For left-side offset curve, the offset will be at the left side of the input line and retain the same direction. For right-side offset curve, it'll be at the right side and in the opposite direction.</dd>
<dd>
<a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferParameters.html#ae2a7d92145547fb6e2852c41c5353700">BufferParameters::setSingleSided</a> parameter, which is specific to areal geometries only, is ignored by this routine.</dd>
<dd>
Not in JTS: this is a GEOS extension </dd></dl>
</div>
</div>
<a class="anchor" id="a834f03073a3e7abbff057f5b97d5322b"></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::buffer::BufferBuilder::buildSubgraphs </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferSubgraph.html">BufferSubgraph</a> * &gt; &amp;&#160;</td>
<td class="paramname"><em>subgraphList</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classgeos_1_1operation_1_1overlay_1_1PolygonBuilder.html">overlay::PolygonBuilder</a> &amp;&#160;</td>
<td class="paramname"><em>polyBuilder</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>Completes the building of the input subgraphs by depth-labelling them, and adds them to the PolygonBuilder. The subgraph list must be sorted in rightmost-coordinate order.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">subgraphList</td><td>the subgraphs to build </td></tr>
<tr><td class="paramname">polyBuilder</td><td>the PolygonBuilder which will build the final polygons </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="a2f6f7bca36b5512a6c15b3b1b8b3be7f"></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::buffer::BufferBuilder::computeNodedEdges </td>
<td>(</td>
<td class="paramtype">std::vector&lt; <a class="el" href="classgeos_1_1noding_1_1SegmentString.html">noding::SegmentString</a> * &gt; &amp;&#160;</td>
<td class="paramname"><em>bufSegStr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1PrecisionModel.html">geom::PrecisionModel</a> *&#160;</td>
<td class="paramname"><em>precisionModel</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="a0dad8fd9e597a5adf317ff0aae9faa1b"></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_1geom_1_1Geometry.html">geom::Geometry</a>* geos::operation::buffer::BufferBuilder::createEmptyResultGeometry </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">
<p>Gets the standard result for an empty buffer. Since buffer always returns a polygonal result, this is chosen to be an empty polygon.</p>
<dl class="section return"><dt>Returns</dt><dd>the empty result geometry, transferring ownership to caller. </dd></dl>
</div>
</div>
<a class="anchor" id="a70864441daf200dacabc21cacd0a02cb"></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::buffer::BufferBuilder::createSubgraphs </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1geomgraph_1_1PlanarGraph.html">geomgraph::PlanarGraph</a> *&#160;</td>
<td class="paramname"><em>graph</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; <a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferSubgraph.html">BufferSubgraph</a> * &gt; &amp;&#160;</td>
<td class="paramname"><em>list</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="a89ee526cfc4503ad0d494624bbed7203"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static int geos::operation::buffer::BufferBuilder::depthDelta </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geomgraph_1_1Label.html">geomgraph::Label</a> &amp;&#160;</td>
<td class="paramname"><em>label</em></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>Compute the change in depth as an edge is crossed from R to L </p>
</div>
</div>
<a class="anchor" id="a7d29ef822d68da70ee89ff7d05e9b76d"></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_1noding_1_1Noder.html">noding::Noder</a>* geos::operation::buffer::BufferBuilder::getNoder </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1PrecisionModel.html">geom::PrecisionModel</a> *&#160;</td>
<td class="paramname"><em>precisionModel</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>Return the externally-set <a class="el" href="classgeos_1_1noding_1_1Noder.html" title="Computes all intersections between segments in a set of SegmentString. ">noding::Noder</a> OR a newly created one using the given precisionModel. </p>
<p>NOTE: if an externally-set <a class="el" href="classgeos_1_1noding_1_1Noder.html" title="Computes all intersections between segments in a set of SegmentString. ">noding::Noder</a> is available no check is performed to ensure it will use the given PrecisionModel </p>
</div>
</div>
<a class="anchor" id="a418de0beb6704f562d7146c2a6570447"></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::buffer::BufferBuilder::insertUniqueEdge </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1geomgraph_1_1Edge.html">geomgraph::Edge</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">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Inserted edges are checked to see if an identical edge already exists. If so, the edge is not inserted, but its label is merged with the existing edge.</p>
<p>The function takes responsability of releasing the Edge parameter memory when appropriate. </p>
</div>
</div>
<a class="anchor" id="a9fa81a977a015ad358e8c7fab043ad9f"></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_1buffer_1_1BufferBuilder.html">BufferBuilder</a>&amp; geos::operation::buffer::BufferBuilder::operator= </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1operation_1_1buffer_1_1BufferBuilder.html">BufferBuilder</a> &amp;&#160;</td>
<td class="paramname"><em>rhs</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span><span class="mlabel">delete</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a class="anchor" id="a65ecd460185da1dcf1248b2471c33bca"></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::buffer::BufferBuilder::setNoder </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classgeos_1_1noding_1_1Noder.html">noding::Noder</a> *&#160;</td>
<td class="paramname"><em>newNoder</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>Sets the <a class="el" href="classgeos_1_1noding_1_1Noder.html">noding::Noder</a> to use during noding. This allows choosing fast but non-robust noding, or slower but robust noding.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">newNoder</td><td>the noder to use </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="BufferBuilder_8h_source.html#l00138">138</a> of file <a class="el" href="BufferBuilder_8h_source.html">BufferBuilder.h</a>.</p>
</div>
</div>
<a class="anchor" id="a8d3a4a70193f95b181d5e8d51c8d10f2"></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::buffer::BufferBuilder::setWorkingPrecisionModel </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classgeos_1_1geom_1_1PrecisionModel.html">geom::PrecisionModel</a> *&#160;</td>
<td class="paramname"><em>pm</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>Sets the precision model to use during the curve computation and noding, if it is different to the precision model of the Geometry. If the precision model is less than the precision of the Geometry precision model, the Geometry must have previously been rounded to that precision.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">pm</td><td>the precision model to use </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="BufferBuilder_8h_source.html#l00125">125</a> of file <a class="el" href="BufferBuilder_8h_source.html">BufferBuilder.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="a45a3d81dcf126602c38ba7326579a5c5"></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_1operation_1_1buffer_1_1BufferParameters.html">BufferParameters</a>&amp; geos::operation::buffer::BufferBuilder::bufParams</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="BufferBuilder_8h_source.html#l00175">175</a> of file <a class="el" href="BufferBuilder_8h_source.html">BufferBuilder.h</a>.</p>
</div>
</div>
<a class="anchor" id="a9d88040f7bdce508bcad6a5d31e3c4e6"></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_1geomgraph_1_1EdgeList.html">geomgraph::EdgeList</a> geos::operation::buffer::BufferBuilder::edgeList</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="BufferBuilder_8h_source.html#l00187">187</a> of file <a class="el" href="BufferBuilder_8h_source.html">BufferBuilder.h</a>.</p>
</div>
</div>
<a class="anchor" id="afeb98554f7226da6cc5185cf2ab9a276"></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::buffer::BufferBuilder::geomFact</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="BufferBuilder_8h_source.html#l00185">185</a> of file <a class="el" href="BufferBuilder_8h_source.html">BufferBuilder.h</a>.</p>
</div>
</div>
<a class="anchor" id="a256bc79be60c253179140bfb83f9a962"></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_1noding_1_1IntersectionAdder.html">noding::IntersectionAdder</a>* geos::operation::buffer::BufferBuilder::intersectionAdder</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="BufferBuilder_8h_source.html#l00181">181</a> of file <a class="el" href="BufferBuilder_8h_source.html">BufferBuilder.h</a>.</p>
</div>
</div>
<a class="anchor" id="ad3792803418da99af652f83895fe704f"></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_1algorithm_1_1LineIntersector.html">algorithm::LineIntersector</a>* geos::operation::buffer::BufferBuilder::li</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="BufferBuilder_8h_source.html#l00179">179</a> of file <a class="el" href="BufferBuilder_8h_source.html">BufferBuilder.h</a>.</p>
</div>
</div>
<a class="anchor" id="a78a629622eafe5355d70cf2557d9dfc7"></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_1geomgraph_1_1Label.html">geomgraph::Label</a>*&gt; geos::operation::buffer::BufferBuilder::newLabels</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="BufferBuilder_8h_source.html#l00189">189</a> of file <a class="el" href="BufferBuilder_8h_source.html">BufferBuilder.h</a>.</p>
</div>
</div>
<a class="anchor" id="aa49f06f07635d95eeea6ca1fbbaa57a0"></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_1noding_1_1Noder.html">noding::Noder</a>* geos::operation::buffer::BufferBuilder::workingNoder</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="BufferBuilder_8h_source.html#l00183">183</a> of file <a class="el" href="BufferBuilder_8h_source.html">BufferBuilder.h</a>.</p>
</div>
</div>
<a class="anchor" id="a7fcd9eff913c6edb06e48af61b56b9ae"></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_1PrecisionModel.html">geom::PrecisionModel</a>* geos::operation::buffer::BufferBuilder::workingPrecisionModel</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="BufferBuilder_8h_source.html#l00177">177</a> of file <a class="el" href="BufferBuilder_8h_source.html">BufferBuilder.h</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="BufferBuilder_8h_source.html">BufferBuilder.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>