gtl_polygon_90_with_holes_concept.htm 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
  3. xmlns:v="urn:schemas-microsoft-com:vml"
  4. xmlns:o="urn:schemas-microsoft-com:office:office"
  5. xmlns:(null)1="http://www.w3.org/TR/REC-html40" lang="en">
  6. <head>
  7. <!--
  8. Copyright 2009-2010 Intel Corporation
  9. license banner
  10. -->
  11. <title>Boost Polygon Library: Polygon 90 With Holes Concept</title>
  12. <meta http-equiv="content-type" content="text/html;charset=ISO-8859-1" />
  13. <!-- <link type="text/css" rel="stylesheet" href="adobe_source.css"> -->
  14. </head>
  15. <body>
  16. <table style="margin: 0pt; padding: 0pt; width: 100%;" border="0"
  17. cellpadding="0" cellspacing="0">
  18. <tbody>
  19. <tr>
  20. <td style="background-color: rgb(238, 238, 238);" nowrap="1"
  21. valign="top">
  22. <div style="padding: 5px;" align="center"> <img
  23. src="images/boost.png" border="0" height="86" width="277" /><a
  24. title="www.boost.org home page" href="http://www.boost.org/"
  25. tabindex="2" style="border: medium none ;"> </a> </div>
  26. <div style="margin: 5px;">
  27. <h3 class="navbar">Contents</h3>
  28. <ul>
  29. <li><a href="index.htm">Boost.Polygon Main Page</a></li>
  30. <li><a href="gtl_design_overview.htm">Design Overview</a></li>
  31. <li><a href="gtl_isotropy.htm">Isotropy</a></li>
  32. <li><a href="gtl_coordinate_concept.htm">Coordinate Concept</a></li>
  33. <li><a href="gtl_interval_concept.htm">Interval Concept</a></li>
  34. <li><a href="gtl_point_concept.htm">Point Concept</a></li>
  35. <li><a href="gtl_segment_concept.htm">Segment Concept</a></li>
  36. <li><a href="gtl_rectangle_concept.htm">Rectangle Concept</a></li>
  37. <li><a href="gtl_polygon_90_concept.htm">Polygon 90 Concept</a></li>
  38. <li>Polygon 90 With Holes Concept</li>
  39. <li><a href="gtl_polygon_45_concept.htm">Polygon 45 Concept</a></li>
  40. <li><a href="gtl_polygon_45_with_holes_concept.htm">Polygon 45
  41. With Holes Concept</a></li>
  42. <li><a href="gtl_polygon_concept.htm">Polygon Concept</a></li>
  43. <li><a href="gtl_polygon_with_holes_concept.htm">Polygon With
  44. Holes Concept</a></li>
  45. <li><a href="gtl_polygon_90_set_concept.htm">Polygon 90 Set
  46. Concept</a></li>
  47. <li><a href="gtl_polygon_45_set_concept.htm">Polygon 45 Set
  48. Concept</a></li>
  49. <li><a href="gtl_polygon_set_concept.htm">Polygon Set Concept</a></li>
  50. <li><a href="gtl_connectivity_extraction_90.htm">Connectivity
  51. Extraction 90</a></li>
  52. <li><a href="gtl_connectivity_extraction_45.htm">Connectivity
  53. Extraction 45</a></li>
  54. <li><a href="gtl_connectivity_extraction.htm">Connectivity
  55. Extraction</a></li>
  56. <li><a href="gtl_property_merge_90.htm">Property Merge 90</a></li>
  57. <li><a href="gtl_property_merge_45.htm">Property Merge 45</a></li>
  58. <li><a href="gtl_property_merge.htm">Property Merge</a></li>
  59. <li><a href="voronoi_main.htm">Voronoi Main Page<br />
  60. </a></li>
  61. <li><a href="voronoi_benchmark.htm">Voronoi Benchmark</a><br />
  62. </li>
  63. <li><a href="voronoi_builder.htm">Voronoi Builder</a></li>
  64. <li><a href="voronoi_diagram.htm">Voronoi Diagram</a></li>
  65. </ul>
  66. <h3 class="navbar">Other Resources</h3>
  67. <ul>
  68. <li><a href="GTL_boostcon2009.pdf">GTL Boostcon 2009 Paper</a></li>
  69. <li><a href="GTL_boostcon_draft03.pdf">GTL Boostcon 2009
  70. Presentation</a></li>
  71. <li><a href="analysis.htm">Performance Analysis</a></li>
  72. <li><a href="gtl_tutorial.htm">Layout Versus Schematic Tutorial</a></li>
  73. <li><a href="gtl_minkowski_tutorial.htm">Minkowski Sum Tutorial</a></li>
  74. <li><a href="voronoi_basic_tutorial.htm">Voronoi Basic Tutorial</a></li>
  75. <li><a href="voronoi_advanced_tutorial.htm">Voronoi Advanced
  76. Tutorial</a></li>
  77. </ul>
  78. </div>
  79. <h3 class="navbar">Polygon Sponsor</h3>
  80. <div style="padding: 5px;" align="center"> <img
  81. src="images/intlogo.gif" border="0" height="51" width="127" /><a
  82. title="www.adobe.com home page" href="http://www.adobe.com/"
  83. tabindex="2" style="border: medium none ;"> </a> </div>
  84. </td>
  85. <td
  86. style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;"
  87. valign="top" width="100%">
  88. <!-- End Header --><br />
  89. <p>
  90. </p>
  91. <h1>Polygon 90 With Holes Concept</h1>
  92. <p> </p>
  93. <p>The polygon_90_with_holes concept tag is <font
  94. face="Courier New">
  95. polygon_90_with_holes_concept</font></p>
  96. <p> To register a user defined type as a model of <font
  97. face="Times New Roman">polygon_90_with_holes </font>concept,
  98. specialize the geometry concept meta-function for that type.&nbsp; In
  99. the example below CPolygon90WithHoles is registered as a model of
  100. polygon<font face="Times New Roman">_90_with_holes&nbsp;</font> concept.</p>
  101. <p> <font face="Courier New">template &lt;&gt;<br />
  102. struct geometry_concept&lt;CPolygon90WithHoles&gt; { typedef
  103. polygon_90_with_holes_concept type; };</font></p>
  104. <p> <font face="Times New Roman">The semantic of a
  105. polygon_90_with_holes is a polygon_90 that it can provide iterators
  106. over holes that are also polygon_90.&nbsp; A mutable
  107. polygon_90_with_holes must also be able to set its geometry based on an
  108. interator range over polygon_90 holes.&nbsp; There is no convention of
  109. winding of holes enforced within the library. </font></p>
  110. <p> <font face="Times New Roman">Below is shown the default
  111. polygon with holes traits.&nbsp; Specialization of these traits is
  112. required for types that don't conform to the default behavior.</font></p>
  113. <p><font face="Courier New">template &lt;typename T, typename
  114. enable = void&gt;<br />
  115. struct polygon_with_holes_traits {<br />
  116. &nbsp;&nbsp;&nbsp;&nbsp; typedef typename T::iterator_holes_type
  117. iterator_holes_type;<br />
  118. &nbsp;&nbsp;&nbsp;&nbsp; typedef typename T::hole_type hole_type;<br />
  119. &nbsp;&nbsp;&nbsp;&nbsp; static inline iterator_holes_type
  120. begin_holes(const T&amp; t) {<br />
  121. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return
  122. t.begin_holes();<br />
  123. &nbsp;&nbsp;&nbsp;&nbsp; }<br />
  124. &nbsp;&nbsp;&nbsp;&nbsp; static inline iterator_holes_type
  125. end_holes(const T&amp; t) {<br />
  126. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return
  127. t.end_holes();<br />
  128. &nbsp;&nbsp;&nbsp;&nbsp; }<br />
  129. &nbsp;&nbsp;&nbsp;&nbsp; static inline unsigned int size_holes(const
  130. T&amp; t) {<br />
  131. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return
  132. t.size_holes();<br />
  133. &nbsp;&nbsp;&nbsp;&nbsp; }<br />
  134. };</font></p>
  135. <p><font face="Courier New">template &lt;typename T, typename
  136. enable = void&gt;<br />
  137. struct polygon_with_holes_mutable_traits {<br />
  138. &nbsp;&nbsp;&nbsp;&nbsp; template &lt;typename iT&gt;<br />
  139. &nbsp;&nbsp;&nbsp;&nbsp; static inline T&amp; set_holes(T&amp; t, iT
  140. inputBegin, iT inputEnd) {<br />
  141. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  142. t.set_holes(inputBegin, inputEnd);<br />
  143. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return t;<br />
  144. &nbsp;&nbsp;&nbsp;&nbsp; }<br />
  145. };</font></p>
  146. <p>An object that is a model of <font face="Courier New">
  147. polygon_90_with_holes_concept</font> can be viewed as a model of any of
  148. its refinements if it is determined at runtime to conform to the
  149. restriction of those concepts.&nbsp; This concept casting is
  150. accomplished through the
  151. <font face="Courier New">view_as&lt;&gt;()</font> function.</p>
  152. <p><font face="Courier New">view_as&lt;rectangle_concept&gt;(polygon_90_with_holes_object)</font><br />
  153. <font face="Courier New">view_as&lt;polygon_90_concept&gt;(polygon_90_with_holes_object)</font></p>
  154. <p>The return value of <font face="Courier New">view_as&lt;&gt;()</font>
  155. can be passed into any interface that expects an object of the
  156. conceptual type specified in its template parameter.</p>
  157. <h2>Functions</h2>
  158. <table id="table1" border="1" width="100%">
  159. <tbody>
  160. <tr>
  161. <td width="586"><font face="Courier New">template
  162. &lt;typename T&gt;<br />
  163. compact_iterator_type <b>begin_compact</b>(const T&amp; polygon)</font></td>
  164. <td><font face="Times New Roman">Expects a model of
  165. polygon_90.&nbsp; Returns the begin iterator over the range of
  166. coordinates that correspond to horizontal and vertical edges.</font></td>
  167. </tr>
  168. <tr>
  169. <td width="586"><font face="Courier New">template
  170. &lt;typename T&gt;<br />
  171. compact_iterator_type <b>end_compact</b>(const T&amp; polygon)</font></td>
  172. <td><font face="Times New Roman">Expects a model of
  173. polygon_90.&nbsp; Returns the end iterator over the range of
  174. coordinates that correspond to horizontal and vertical edges.</font></td>
  175. </tr>
  176. <tr>
  177. <td width="586"><font face="Courier New">template
  178. &lt;typename T&gt;<br />
  179. point_iterator_type <b>begin_points</b>(const T&amp; polygon)</font></td>
  180. <td><font face="Times New Roman">Expects a model of
  181. polygon_90_with_holes.&nbsp; Returns the begin iterator over the range
  182. of points that correspond to vertices of the polygon.</font></td>
  183. </tr>
  184. <tr>
  185. <td width="586"><font face="Courier New">template
  186. &lt;typename T&gt;<br />
  187. point_iterator_type <b>end_points</b>(const T&amp; polygon)</font></td>
  188. <td><font face="Times New Roman">Expects a model of
  189. polygon_90_with_holes.&nbsp; Returns the end iterator over the range of
  190. points that correspond to vertices of the polygon.</font></td>
  191. </tr>
  192. <tr>
  193. <td width="586"><font face="Courier New">template
  194. &lt;typename T&gt;<br />
  195. hole_iterator_type <b>begin_holes</b>(const T&amp; polygon)</font></td>
  196. <td><font face="Times New Roman">Expects a model of
  197. polygon_90_with_holes.&nbsp; Returns the begin iterator over the range
  198. of coordinates that correspond to horizontal and vertical edges.</font></td>
  199. </tr>
  200. <tr>
  201. <td width="586"><font face="Courier New">template
  202. &lt;typename T&gt;<br />
  203. hole_iterator_type <b>end_</b><b>holes</b>(const T&amp; polygon)</font></td>
  204. <td><font face="Times New Roman">Expects a model of
  205. polygon_90_with_holes.&nbsp; Returns the end iterator over the range of
  206. coordinates that correspond to horizontal and vertical edges.</font></td>
  207. </tr>
  208. <tr>
  209. <td width="586"><font face="Courier New">template
  210. &lt;typename T, typename iterator&gt;<br />
  211. void <b>set_compact</b>(T&amp; polygon, iterator b, iterator e)</font></td>
  212. <td><font face="Times New Roman">Expects a model of
  213. polygon_90_with_holes.&nbsp;&nbsp; Sets the polygon to the coordinate
  214. data range [b,e) that corresponds to .horizontal and vertical edges.</font></td>
  215. </tr>
  216. <tr>
  217. <td width="586"><font face="Courier New">template
  218. &lt;typename T, typename iterator&gt;<br />
  219. void <b>set_points</b>(T&amp; polygon, iterator b, iterator e)</font></td>
  220. <td><font face="Times New Roman">Expects a model of
  221. polygon_90_with_holes.&nbsp;&nbsp; Sets the polygon to the point data
  222. range [b,e) that corresponds to vertices of a manhattan polygon.&nbsp;
  223. Non-manhattan edges between successive input points results in
  224. undefined behavior.</font></td>
  225. </tr>
  226. <tr>
  227. <td width="586"><font face="Courier New">template
  228. &lt;typename T, typename iterator&gt;<br />
  229. void <b>set_holes</b>(T&amp; polygon, iterator b, iterator e)</font></td>
  230. <td><font face="Times New Roman">Expects a model of
  231. polygon_90_with_holes.&nbsp;&nbsp; Sets the polygon holes to the hole
  232. data range [b,e)</font></td>
  233. </tr>
  234. <tr>
  235. <td width="586"><font face="Courier New">template
  236. &lt;typename T&gt;<br />
  237. unsigned int <b>size</b>(const T&amp; polygon)</font></td>
  238. <td><font face="Times New Roman">Returns the number of
  239. edges in the outer shell of the polygon_90_with_holes.&nbsp; Does not
  240. include sizes of the holes.</font></td>
  241. </tr>
  242. <tr>
  243. <td width="586"><font face="Courier New">template
  244. &lt;typename T1, typename T2&gt;<br />
  245. T1&amp; <b>assign</b>(T1&amp; left, const T2&amp; right)</font></td>
  246. <td>Copies data from right object that models
  247. polygon_90_with_holes or one of its refinements into left object that
  248. models polygon_90_with_holes.</td>
  249. </tr>
  250. <tr>
  251. <td width="586"><font face="Courier New">template
  252. &lt;typename T, typename point_type&gt;<br />
  253. bool <b>contains</b>(const T&amp;, const point_type&amp; point, <br />
  254. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  255. bool consider_touch=true)</font></td>
  256. <td>Given an object that models polygon_90_with_holes and
  257. an object that models point, returns true if the polygon shell contains
  258. the point and one of its holes does not contain the point.&nbsp; If the
  259. consider_touch flag is true will return true if the point lies along
  260. the boundary of the polygon or one of its holes.</td>
  261. </tr>
  262. <tr>
  263. <td width="586"><font face="Courier New">// get the center
  264. coordinate<br />
  265. template &lt;typename T, typename point_type&gt;<br />
  266. void <b>center</b>(point_type&amp; p, const T&amp; polygon)</font></td>
  267. <td>Sets object that models point to the center point of
  268. the bounding box of an object that models polygon_90_with_holes.</td>
  269. </tr>
  270. <tr>
  271. <td width="586"><font face="Courier New">template
  272. &lt;typename T, typename rectangle_type&gt;<br />
  273. bool <b>extents</b>(rectangle_type&amp; bbox, const T&amp; polygon)</font></td>
  274. <td>Sets object that models rectangle to the bounding box
  275. of an object that models polygon_90_with_holes and returns true.&nbsp;
  276. Returns false and leaves bbox unchanged if polygon is empty.</td>
  277. </tr>
  278. <tr>
  279. <td width="586"><font face="Courier New">template
  280. &lt;typename T&gt;<br />
  281. manhattan_area_type <b>area</b>(const T&amp; polygon)</font></td>
  282. <td>Returns the area of an object that models
  283. polygon_90_with_holes including subtracting the area of its holes from
  284. the area of the outer shell polygon.</td>
  285. </tr>
  286. <tr>
  287. <td width="586"><font face="Courier New">template
  288. &lt;typename T&gt;<br />
  289. direction_1d <b>winding</b>(const T&amp; polygon)</font></td>
  290. <td>Returns the winding direction of an object that models
  291. polygon_90_with_holes, LOW == CLOCKWISE, HIGH = COUNTERCLOCKWISE.</td>
  292. </tr>
  293. <tr>
  294. <td width="586"><font face="Courier New">template
  295. &lt;typename T&gt;<br />
  296. coordinate_difference <b>perimeter</b>(const T&amp; polygon)</font></td>
  297. <td>Returns the perimeter length of an object that models
  298. polygon_90, including the perimeters of the holes.</td>
  299. </tr>
  300. <tr>
  301. <td width="586"><font face="Courier New">template
  302. &lt;typename T, typename transform_type&gt;<br />
  303. T&amp; <b>transform</b>(T&amp; polygon, const transform_type&amp;)</font></td>
  304. <td>Applies transform() on the vertices of polygon and sets
  305. the polygon to that described by the result of transforming its
  306. vertices.&nbsp; Also applies transform() on the holes of the polygon.</td>
  307. </tr>
  308. <tr>
  309. <td width="586"><font face="Courier New">template
  310. &lt;typename T&gt;<br />
  311. T&amp; <b>scale_up</b>(T&amp; polygon, unsigned_area_type factor)</font></td>
  312. <td>Scales up outer shell and holes of an object that
  313. models polygon_90 by unsigned factor.</td>
  314. </tr>
  315. <tr>
  316. <td width="586"><font face="Courier New">template
  317. &lt;typename T&gt;<br />
  318. T&amp; <b>scale_down</b>(T&amp; polygon, unsigned_area_type factor)</font></td>
  319. <td>Scales down outer shell and holes of an object that
  320. models polygon_90 by unsigned factor.</td>
  321. </tr>
  322. <tr>
  323. <td width="586"><font face="Courier New">template
  324. &lt;typename T, scaling_type&gt;<br />
  325. T&amp; <b>scale</b>(T&amp; rectangle, double scaling) </font></td>
  326. <td>Scales outer shell and holes of an object that models
  327. polygon_90 by floating point factor.</td>
  328. </tr>
  329. <tr>
  330. <td width="586"><font face="Courier New">template
  331. &lt;typename T&gt;<br />
  332. T&amp; <b>move</b>(T&amp; polygon, orientation_2d,<br />
  333. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; coordinate_difference
  334. displacement)</font></td>
  335. <td>Adds displacement value to coordinate indicated by
  336. orientation_2d of vertices of an object that models polygon_90 .</td>
  337. </tr>
  338. <tr>
  339. <td width="586"><font face="Courier New">template
  340. &lt;typename polygon_type, typename point_type&gt;<br />
  341. polygon_type&amp; <b>convolve</b>(polygon_type&amp; polygon,<br />
  342. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  343. const point_type&amp; point)</font></td>
  344. <td>Convolves coordinate values of point with the outer
  345. shell and holes of an object that models polygon_90_with_holes.</td>
  346. </tr>
  347. </tbody>
  348. </table>
  349. <h1>Polygon 90 With Holes Data</h1>
  350. <p> </p>
  351. <p>The library provides a model of polygon 90 with holes concept
  352. declared
  353. <font face="Courier New">template&lt;typename T&gt;
  354. polygon_90_with_holes_data </font>where T is the coordinate type.</p>
  355. <p>This data type is used internally when a Manhattan polygon
  356. with holes is needed and is available to the library user who finds it
  357. convenient to use a library polygon data type instead of providing
  358. their own.&nbsp; The data type is implemented to be convenient to use
  359. with the library traits.</p>
  360. <h2>Members</h2>
  361. <table id="table2" border="1" width="100%">
  362. <tbody>
  363. <tr>
  364. <td width="586"><b><font face="Courier New">geometry_type</font></b></td>
  365. <td><font face="Times New Roman">polygon_90_with_holes_concept</font></td>
  366. </tr>
  367. <tr>
  368. <td width="586"><b><font face="Courier New">coordinate_type</font></b></td>
  369. <td><font face="Times New Roman">T</font></td>
  370. </tr>
  371. <tr>
  372. <td width="586"><b><font face="Courier New">iterator_type</font></b></td>
  373. <td>Iterator over vertices point_data&lt;T&gt; vertices of
  374. polygon</td>
  375. </tr>
  376. <tr>
  377. <td width="586"><b><font face="Courier New">compact_iterator_type</font></b></td>
  378. <td><font face="Times New Roman">Iterator over
  379. non-redundant coordinates of the polygon, alternating x, y, x, y
  380. starting with an x, where each x corresponds to a vertical edge and
  381. each y corresponds to a horizontal edge.</font></td>
  382. </tr>
  383. <tr>
  384. <td width="586"><b><font face="Courier New">iterator_holes_type</font></b></td>
  385. <td><font face="Times New Roman">Iterator over hole
  386. polygons of type polygon_90_data&lt;T&gt;.</font></td>
  387. </tr>
  388. <tr>
  389. <td width="586"><font face="Courier New"><b>polygon_90_with_holes_data</b>()</font></td>
  390. <td><font face="Times New Roman">Default constructs the </font>polygon.</td>
  391. </tr>
  392. <tr>
  393. <td width="586"><font face="Courier New"><b>polygon_90_with_holes_data</b>(const
  394. polygon_90_with_holes_data&amp; that)</font></td>
  395. <td><font face="Times New Roman">Copy construct</font></td>
  396. </tr>
  397. <tr>
  398. <td width="586"><font face="Courier New">polygon_90_with_holes_data&amp;
  399. <b> <br />
  400. operator=</b>(const polygon_90_with_holes_data&amp; that)</font></td>
  401. <td>Assignment operator.</td>
  402. </tr>
  403. <tr>
  404. <td width="586"><font face="Courier New">template
  405. &lt;typename T2&gt;<b> </b>polygon_90_with_holes_data&amp;<b>&nbsp; <br />
  406. operator=</b>(const T2&amp; that) const</font></td>
  407. <td>Assign from an object that is a model of polygon 90
  408. with holes.</td>
  409. </tr>
  410. <tr>
  411. <td width="586"><font face="Courier New">iterator_type <b>begin</b>()
  412. const</font></td>
  413. <td>Get the begin iterator over vertices of the polygon.</td>
  414. </tr>
  415. <tr>
  416. <td width="586"><font face="Courier New">iterator_type <b>end</b>()
  417. const</font></td>
  418. <td>Get the end iterator over vertices of the polygon.</td>
  419. </tr>
  420. <tr>
  421. <td width="586"><font face="Courier New">compact_iterator_type
  422. <b>begin_compact</b>() const</font></td>
  423. <td>Get the begin compact iterator over non-redundant
  424. coordinates of the polygon.</td>
  425. </tr>
  426. <tr>
  427. <td width="586"><font face="Courier New">compact_iterator_type
  428. <b>end_compact</b>() const</font></td>
  429. <td>Get the end compact iterator over non-redundant
  430. coordinates of the polygon.</td>
  431. </tr>
  432. <tr>
  433. <td width="586"><font face="Courier New">iterator_hole_type
  434. <b>begin_holes</b>() const</font></td>
  435. <td>Get the begin compact iterator over non-redundant
  436. coordinates of the polygon.</td>
  437. </tr>
  438. <tr>
  439. <td width="586"><font face="Courier New">iterator_hole_type
  440. <b>end_holes</b>() const</font></td>
  441. <td>Get the end compact iterator over non-redundant
  442. coordinates of the polygon.</td>
  443. </tr>
  444. <tr>
  445. <td width="586"><font face="Courier New">std::size_t <b>size</b>()
  446. const</font></td>
  447. <td>Get the number of elements in the sequence stored to
  448. the polygon, usually equal to the number of edges of the polygon.</td>
  449. </tr>
  450. <tr>
  451. <td width="586"><font face="Courier New">std::size_t <b>size_holes</b>()
  452. const</font></td>
  453. <td>Get the number of holes in the polygon</td>
  454. </tr>
  455. <tr>
  456. <td width="586"><font face="Courier New">template
  457. &lt;typename iT&gt;<b>&nbsp; <br />
  458. </b>void <b>set</b>(iT begin_points, iT end_points)</font></td>
  459. <td>Sets the polygon to the iterator range of points.&nbsp;
  460. No check is performed to ensure the points describe a Manhattan figure,
  461. every other x and y value of the points is used to initialize the
  462. polygon.</td>
  463. </tr>
  464. <tr>
  465. <td width="586"><font face="Courier New">template
  466. &lt;typename iT&gt;<b>&nbsp; <br />
  467. </b>void <b>set_compact</b>(iT begin_coords, iT end_coords)</font></td>
  468. <td>Sets the polygon to the iterator range of
  469. coordinates.&nbsp; These coordinates correspond to the x values of
  470. vertical edges and y values of horizontal edges.&nbsp; It is expected
  471. that the sequence start with an x value and proceed x then y then x
  472. then y.</td>
  473. </tr>
  474. <tr>
  475. <td width="586"><font face="Courier New">template
  476. &lt;typename iT&gt;<b>&nbsp; <br />
  477. </b>void <b>set_holes</b>(iT begin_holes, iT end_choless)</font></td>
  478. <td>Sets the polygon holes the iterator range of hole
  479. polygons.&nbsp; These polygons in the input range may be either
  480. polygon_90_data or polygon_90_with_holes_data or any type that provides
  481. begin_compact and end_compact member functions.</td>
  482. </tr>
  483. </tbody>
  484. </table>
  485. </td>
  486. </tr>
  487. <tr>
  488. <td style="background-color: rgb(238, 238, 238);" nowrap="1"
  489. valign="top"> &nbsp;</td>
  490. <td
  491. style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;"
  492. valign="top" width="100%">
  493. <table class="docinfo" id="table3" frame="void" rules="none">
  494. <colgroup> <col class="docinfo-name" /><col
  495. class="docinfo-content" /> </colgroup> <tbody valign="top">
  496. <tr>
  497. <th class="docinfo-name">Copyright:</th>
  498. <td>Copyright © Intel Corporation 2008-2010.</td>
  499. </tr>
  500. <tr class="field">
  501. <th class="docinfo-name">License:</th>
  502. <td class="field-body">Distributed under the Boost Software
  503. License, Version 1.0. (See accompanying file <tt class="literal"> <span
  504. class="pre">LICENSE_1_0.txt</span></tt> or copy at <a
  505. class="reference" target="_top"
  506. href="http://www.boost.org/LICENSE_1_0.txt">
  507. http://www.boost.org/LICENSE_1_0.txt</a>)</td>
  508. </tr>
  509. </tbody>
  510. </table>
  511. </td>
  512. </tr>
  513. </tbody>
  514. </table>
  515. </body>
  516. </html>