1<HTML> 2<!-- Copyright 2007 Aaron Windsor 3 4 Distributed under the Boost Software License, Version 1.0. 5 (See accompanying file LICENSE_1_0.txt or copy at 6 http://www.boost.org/LICENSE_1_0.txt) 7 8 --> 9<HEAD> 10<TITLE>Planar Face Visitor Concept</TITLE> 11</HEAD> 12<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" 13 ALINK="#ff0000"> 14<IMG SRC="../../../boost.png" 15 ALT="C++ Boost" width="277" height="86"> 16 17<BR Clear> 18 19<H1>Planar Face Visitor Concept</H1> 20 21This concept defines the visitor interface for 22<a href="./planar_face_traversal.html"><tt>planar_face_traversal</tt></a>. 23Users can define a class with the Planar Face Visitor interface and pass an 24object of the class to <tt>planar_face_traversal</tt>, thereby augmenting the 25actions taken during the traversal. Note that objects passed to 26<tt>planar_face_traversal</tt> are passed by reference. 27 28<h3>Notation</h3> 29 30<table> 31<tbody><tr> 32<td><tt>V</tt></td> 33<td>A type that is a model of Planar Face Visitor.</td> 34</tr> 35 36<tr> 37<td><tt>vis</tt></td> 38<td>An object of type <tt>V</tt>.</td> 39</tr> 40 41<tr> 42<td><tt>G</tt></td> 43<td>A type that is a model of Graph.</td> 44</tr> 45 46<tr> 47<td><tt>e</tt></td> 48<td>An object of type <tt>boost::graph_traits<G>::edge_descriptor</tt>. 49</td> 50</tr> 51 52<tr> 53<td><tt>v</tt></td> 54<td>An object of type <tt>boost::graph_traits<G>::vertex_descriptor</tt>. 55</td> 56</tr> 57 58</tbody></table> 59 60 61<h3>Valid Expressions</h3> 62 63<table border="1"> 64<tbody><tr> 65<th>Name</th><th>Expression</th><th>Return Type</th><th>Description</th> 66</tr> 67 68<tr> 69<td>Begin Traversal</td> 70<td><tt>vis.begin_traversal()</tt></td> 71<td><tt>void</tt></td> 72<td> 73This is invoked once per traversal, before the traversal begins. 74</td> 75</tr> 76 77<tr> 78<td>Begin Face</td> 79<td><tt>vis.begin_face()</tt></td> 80<td><tt>void</tt></td> 81<td> 82This is invoked once for each face, before any vertices or edges on the face 83are visited. 84</td> 85</tr> 86 87<tr> 88<td>Next Vertex</td> 89<td><tt>vis.next_vertex(v)</tt></td> 90<td><tt>void</tt></td> 91<td> 92This is invoked when a vertex is encountered while traversing a face. 93</td> 94</tr> 95 96 97<tr> 98<td>Next Edge</td> 99<td><tt>vis.next_edge(e)</tt></td> 100<td><tt>void</tt></td> 101<td> 102This is invoked when an edge is encountered while traversing a face. 103</td> 104</tr> 105 106<tr> 107<td>End Face</td> 108<td><tt>vis.end_face()</tt></td> 109<td><tt>void</tt></td> 110<td> 111This is invoked once for each face, after all vertices and edges on the face 112are visited. 113</td> 114</tr> 115 116 117<tr> 118<td>End Traversal</td> 119<td><tt>vis.end_traversal()</tt></td> 120<td><tt>void</tt></td> 121<td> 122This is invoked once per traversal, after the traversal ends. 123</td> 124</tr> 125 126</tbody></table> 127 128<h3>Models</h3> 129 130<ul> 131 <li> The file <a href="../../../boost/graph/planar_face_traversal.hpp"> 132<tt>planar_face_traversal.hpp</tt></a> contains a class 133<tt>planar_face_traversal_visitor</tt> that implements empty actions for 134all event points of a Planar Face Visitor. In the case where only a few of the 135event points of Planar Face Visitor need to be implemented, one can derive from 136<tt>planar_face_traversal_visitor</tt> and only implement the necessary event 137points. <li> The implementation of <a href="./make_maximal_planar.html"> 138<tt>make_maximal_planar</tt></a> uses a <tt>triangulation_visitor</tt> that is 139a model of Planar Face Visitor. 140</li> 141</ul> 142 143<br> 144<HR> 145Copyright © 2007 Aaron Windsor (<a href="mailto:aaron.windsor@gmail.com"> 146aaron.windsor@gmail.com</a>) 147</BODY> 148</HTML> 149