Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > by-pkgid > 052d79447130ebaf90b2730395954d11 > files > 383

openvrml-doc-0.18.3-1mdv2010.0.i586.rpm

<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"
               "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<title>OpenVRML: openvrml::scene Class Reference</title>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<link rel="icon" href="../vrml-16">
<link rel="start" href="http://openvrml.org/index" title="OpenVRML Home">
<link rel="prev" href="http://openvrml.org/discussion" title="Discussion">
<link rel="contents" href="index" title="Documentation Main Page">
<link rel="index" href="functions" title="OpenVRML Compound Members">
<link rel="appendix" href="conformance" title="Conformance Test Results">
<style type="text/css">
@import url("tabs.css");
@import url("http://openvrml.org/openvrml.css");

table {
  width: 100%;
}

h2 {
  border-bottom-style: solid;
  border-bottom-width: 1px;
}

/*
 * Doxygen as of 1.5.4-20071217 uses the class "navpath" instead of "nav".
 * For now, we'll do both.
 */

div.nav,
div.navpath {
  background-color: transparent;
  text-align: left;
  margin-top: 1em;
  margin-bottom: 1em;
  border-color: black;
  border-left: none;
  border-right: none;
  padding-top: 0.5em;
  padding-bottom: 0.5em;
}

div.nav :link, div.nav :visited,
div.navpath :link, div.navpath :visited {
  border-width: 1px;
  border-style: solid;
  border-color: silver;
  padding: 2px;
}

div.nav :link:hover, div.nav :visited:hover,
div.navpath :link:hover, div.navpath :visited:hover {
  border-style: outset;
  border-color: gray;
}

div.nav :active,
div.navpath :active {
  border-style: inset;
  border-color: gray;
}

.body td {
  background-color: transparent;
}

.el {
  text-decoration: inherit;
  font-weight: inherit
}
.elRef {
  font-weight: inherit
}
.code:link, .code:visited {
  text-decoration: inherit;
  font-weight: inherit;
  color: inherit;
}
.codeRef:link {
  font-weight: normal;
  color: inherit;
}
:visited {
  color: silver;
}
:link:hover {
  color: inherit;
  text-decoration: inherit;
  background-color: transparent;
}

h1 {
  line-height: 1.2em;
}

td.memItemLeft, td.memItemRight,
td.memTemplParams, td.memTemplItemLeft, td.memTemplItemRight,
.memtemplate, .memname td {
  font-family: Consolas, "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Lucida Console", LucidaTypewriter, monospace;
}

td.memItemLeft, td.memItemRight, td.mdescLeft, td.mdescRight {
  background-color: rgb(95%, 95%, 95%);
  border-color: rgb(65%, 65%, 65%);
  border-width: 1px;
  font-size: smaller;
}

.memItemLeft {
  margin-top: 0.5em;
  border-top-style: solid;
}
.mdescLeft {
  border-bottom-style: solid;
}
.memItemRight {
  border-top-style: solid;
  margin-top: 0.5em;
}
.mdescRight {
  border-bottom-style: solid;
}

.mdescRight {
  font-style: italic;
}

.mdTable {
  background-color: rgb(95%, 95%, 95%);
}

.memproto td code {
  font-family: inherit;
  font-style: italic;
}

td.pass {
  background-color: rgb(50%, 100%, 50%);
}

td.fail {
  background-color: rgb(100%, 50%, 50%);
}

td.invalid {
  background-color: rgb(75%, 75%, 75%);
}

.memitem {
  padding: 0;
}

.memitem table {
  width: auto;
}

.memproto, .memdoc {
  border-width: 1px;
  border-color: rgb(65%, 65%, 65%);
}

.memproto {
  background-color: rgb(90%, 90%, 90%);
  font-weight: inherit;
  font-size: smaller;
  border-top-style: solid;
  border-left-style: solid;
  border-right-style: solid;
  -webkit-border-top-left-radius: 0.6em;
  -webkit-border-top-right-radius: 0.6em;
  -moz-border-radius-topleft: 0.6em;
  -moz-border-radius-topright: 0.6em;
}

.memdoc {
  background-color: rgb(95%, 95%, 95%);
  padding: 2px 5px;
  border-style: solid;
  -webkit-border-bottom-left-radius: 0.6em;
  -webkit-border-bottom-right-radius: 0.6em;
  -moz-border-radius-bottomleft: 0.6em;
  -moz-border-radius-bottomright: 0.6em;
}

.memname {
  font-weight: inherit;
}

div.tabs {
  background-image: url("tab_b-openvrml.png");
}

div.tabs span {
  background-image: url("tab_l-openvrml.png");
}

div.tabs a {
  background-image: url("tab_r-openvrml.png");
  border-bottom: 1px solid #a5a5a5;
}

div.tabs a:link, div.tabs a:visited, div.tabs a:active, div.tabs a:hover {
  color: black;
}

table {
  border-collapse: collapse;
  border-spacing: 0;
}

.note {
  border: 1px solid rgb(65%, 65%, 65%);
  background-color: rgb(95%, 95%, 95%);
  margin-left: 10%;
  margin-right: 10%;
}
</style>
</head>
<body>
<table class="sitenav">
  <tr>
    <th><a href="http://openvrml.org/index" title="Home">Home</a></th>
    <th><a href="http://openvrml.org/download" title="Download">Download</a></th>
    <th><a href="http://openvrml.org/screenshots/index" title="Screen shots">Screen shots</a></th>
    <th><a href="http://openvrml.org/discussion" title="Mailing lists and IRC">Discussion</a></th>
    <th>Documentation</th>
  </tr>
</table>
<div class="body">
<!-- Generated by Doxygen 1.5.8 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;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>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
    </ul>
  </div>
  <div class="navpath"><a class="el" href="namespaceopenvrml.html">openvrml</a>::<a class="el" href="classopenvrml_1_1scene.html">scene</a>
  </div>
</div>
<div class="contents">
<h1>openvrml::scene Class Reference</h1><!-- doxytag: class="openvrml::scene" -->A <a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a> in the VRML world.  
<a href="#_details">More...</a>
<p>
<code>#include &lt;openvrml/scene.h&gt;</code>
<p>

<p>
<a href="classopenvrml_1_1scene-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1scene.html#8f4ba6551dc6f1366a2cc2c1c12f22c4">scene</a> (<a class="el" href="classopenvrml_1_1browser.html">openvrml::browser</a> &amp;<a class="el" href="classopenvrml_1_1browser.html">browser</a>, <a class="el" href="classopenvrml_1_1scene.html">scene</a> *parent=0)  throw ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct.  <a href="#8f4ba6551dc6f1366a2cc2c1c12f22c4"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1scene.html#3fb507b367652579070691da059a6d25">~scene</a> ()  throw ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy.  <a href="#3fb507b367652579070691da059a6d25"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classopenvrml_1_1browser.html">openvrml::browser</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1scene.html#42ba64f3d35a6ecf7a609c1077b31bae">browser</a> () const   throw ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the associated <code><a class="el" href="classopenvrml_1_1browser.html" title="Encapsulates a VRML browser.">browser</a></code>.  <a href="#42ba64f3d35a6ecf7a609c1077b31bae"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classopenvrml_1_1scene.html">scene</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1scene.html#49324e624d626b0106445963f9fcd695">parent</a> () const   throw ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the parent <code><a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a></code>.  <a href="#49324e624d626b0106445963f9fcd695"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1scene.html#711d709894b0551d8319bd483ed8fb1e">load</a> (<a class="el" href="classopenvrml_1_1resource__istream.html">resource_istream</a> &amp;in)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Load the <code><a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a></code> from a stream.  <a href="#711d709894b0551d8319bd483ed8fb1e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1scene.html#e46b2dd9f6a67e2f0c50a23f154d0e9b">initialize</a> (double timestamp)  throw (  std::bad_alloc  )</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize the <code><a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a></code>.  <a href="#e46b2dd9f6a67e2f0c50a23f154d0e9b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const std::string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1scene.html#dca260f9a4bfc79ec4c5ca9cb28e2998">meta</a> (const std::string &amp;key) const   throw (  std::invalid_argument  ,   std::bad_alloc  )</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get metadata.  <a href="#dca260f9a4bfc79ec4c5ca9cb28e2998"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1scene.html#806d50dd66f80fed4ecaa67dc335f691">meta</a> (const std::string &amp;key, const std::string &amp;value)  throw (  std::bad_alloc  )</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set metadata.  <a href="#806d50dd66f80fed4ecaa67dc335f691"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const std::vector&lt; std::string &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1scene.html#129c6426942530f6b8a00870da1308eb">meta_keys</a> () const   throw (  std::bad_alloc  )</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the metadata keys.  <a href="#129c6426942530f6b8a00870da1308eb"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const std::vector<br class="typebreak">
&lt; boost::intrusive_ptr&lt; <a class="el" href="classopenvrml_1_1node.html">node</a> &gt; &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1scene.html#af2f7e5a1c7c96b9867380a25f6ce64e">nodes</a> () const   throw (  std::bad_alloc  )</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Root <code><a class="el" href="classopenvrml_1_1node.html" title="A node in the scene graph.">node</a>s</code> for the <code><a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a></code>.  <a href="#af2f7e5a1c7c96b9867380a25f6ce64e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1scene.html#fd1f7009980b1091ca112d2f23e7e123">nodes</a> (const std::vector&lt; boost::intrusive_ptr&lt; <a class="el" href="classopenvrml_1_1node.html">node</a> &gt; &gt; &amp;n)  throw (  std::invalid_argument  ,   std::bad_alloc  )</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the root <code><a class="el" href="classopenvrml_1_1node.html" title="A node in the scene graph.">node</a>s</code> for the <code><a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a></code>.  <a href="#fd1f7009980b1091ca112d2f23e7e123"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classopenvrml_1_1scope.html">scope</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1scene.html#dde0842d41ff9fbdaa945ff65aa01359">root_scope</a> () const   throw ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the root <code><a class="el" href="classopenvrml_1_1scope.html" title="The scope class keeps track of defined nodes and prototypes.">scope</a></code>.  <a href="#dde0842d41ff9fbdaa945ff65aa01359"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const std::string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1scene.html#1b7c975d3a57e5bdfb95fb1fde7aeafe">url</a> () const   throw (  std::bad_alloc  )</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the absolute URI for the <code><a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a></code>.  <a href="#1b7c975d3a57e5bdfb95fb1fde7aeafe"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1scene.html#28817b20e17f633fee9c18ddada7bf05">render</a> (<a class="el" href="classopenvrml_1_1viewer.html">openvrml::viewer</a> &amp;<a class="el" href="classopenvrml_1_1viewer.html">viewer</a>, <a class="el" href="classopenvrml_1_1rendering__context.html">rendering_context</a> context)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Render the <a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a>.  <a href="#28817b20e17f633fee9c18ddada7bf05"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1scene.html#9a7ba745d9c7669ce2a5193e8ec8c214">load_url</a> (const std::vector&lt; std::string &gt; &amp;url, const std::vector&lt; std::string &gt; &amp;parameter)  throw (  std::bad_alloc  )</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Load a resource into <em><a class="el" href="classopenvrml_1_1browser.html" title="Encapsulates a VRML browser.">browser</a></em>.  <a href="#9a7ba745d9c7669ce2a5193e8ec8c214"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">std::auto_ptr&lt; <a class="el" href="classopenvrml_1_1resource__istream.html">resource_istream</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1scene.html#f6fa00d304598fe66f97489bd26f7f1c">get_resource</a> (const std::vector&lt; std::string &gt; &amp;url) const   throw (  no_alternative_url  ,   std::bad_alloc  )</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a resource using a list of alternative URIs.  <a href="#f6fa00d304598fe66f97489bd26f7f1c"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1scene.html#89a90bf5aa4323a715a2b83b1499eee4">read_stream</a> (std::auto_ptr&lt; <a class="el" href="classopenvrml_1_1resource__istream.html">resource_istream</a> &gt; in, std::auto_ptr&lt; <a class="el" href="classopenvrml_1_1stream__listener.html">stream_listener</a> &gt; listener)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read a stream in a new thread.  <a href="#89a90bf5aa4323a715a2b83b1499eee4"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1scene.html#8c9b76b8af501932d43eb742c433aaea">create_vrml_from_url</a> (const std::vector&lt; std::string &gt; &amp;url, const boost::intrusive_ptr&lt; <a class="el" href="classopenvrml_1_1node.html">node</a> &gt; &amp;<a class="el" href="classopenvrml_1_1node.html">node</a>, const std::string &amp;event)  throw (  unsupported_interface  ,   std::bad_cast  ,   boost::thread_resource_error  )</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create nodes from a URI.  <a href="#8c9b76b8af501932d43eb742c433aaea"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1scene.html#48380673b60f1c302d95ba343e19dfaf">shutdown</a> (double timestamp)  throw ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Shut down the nodes in the <a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a>.  <a href="#48380673b60f1c302d95ba343e19dfaf"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Private Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1scene.html#70fcdfcbfb910ca20748c6159ce76b94">scene_loaded</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Function called once the <code><a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a></code> has been loaded.  <a href="#70fcdfcbfb910ca20748c6159ce76b94"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Private Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classopenvrml_1_1browser.html">openvrml::browser</a> *const&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1scene.html#e868b676703449874ad2634154cd85f8">browser_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A reference to the <code><a class="el" href="classopenvrml_1_1browser.html" title="Encapsulates a VRML browser.">browser</a></code> associated with the <code><a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a></code>.  <a href="#e868b676703449874ad2634154cd85f8"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classopenvrml_1_1scene.html">scene</a> *const&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1scene.html#1118e5b9bf384813f615f4bbac17d3ad">parent_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A pointer to the parent <code><a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a></code>.  <a href="#1118e5b9bf384813f615f4bbac17d3ad"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">boost::shared_mutex&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1scene.html#725b6558176daf499783671a01367edf">nodes_mutex_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Mutex protecting <em>nodes_</em>.  <a href="#725b6558176daf499783671a01367edf"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">std::vector<br class="typebreak">
&lt; boost::intrusive_ptr&lt; <a class="el" href="classopenvrml_1_1node.html">node</a> &gt; &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1scene.html#08bb7edf1dfb5914e40a1119c5ea9026">nodes_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The nodes for the <a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a>.  <a href="#08bb7edf1dfb5914e40a1119c5ea9026"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">boost::shared_mutex&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1scene.html#0d9a61639bc51077a045ef1795ed8140">url_mutex_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Mutex protecting <em>url_</em>.  <a href="#0d9a61639bc51077a045ef1795ed8140"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">std::string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1scene.html#9f99ff284276163dedde61968110e5ea">url_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The URI for the <a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a>.  <a href="#9f99ff284276163dedde61968110e5ea"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">boost::shared_mutex&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1scene.html#6df2c506388a4f9607ea1b4258fb9599">meta_mutex_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Mutex protecting <code><a class="el" href="classopenvrml_1_1scene.html#b04a245d6f1d57227ba6f04b3920c12b" title="Scene metadata map.">meta_</a></code>.  <a href="#6df2c506388a4f9607ea1b4258fb9599"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">std::map&lt; std::string, <br class="typebreak">
std::string &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1scene.html#b04a245d6f1d57227ba6f04b3920c12b">meta_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Scene metadata map.  <a href="#b04a245d6f1d57227ba6f04b3920c12b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">boost::thread_group&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1scene.html#460aad301d44b50e5a1fa029a3be75b7">stream_reader_threads_</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Stream reader thread group.  <a href="#460aad301d44b50e5a1fa029a3be75b7"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
A <a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a> in the VRML world. <hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="8f4ba6551dc6f1366a2cc2c1c12f22c4"></a><!-- doxytag: member="openvrml::scene::scene" ref="8f4ba6551dc6f1366a2cc2c1c12f22c4" args="(openvrml::browser &amp;browser, scene *parent=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">openvrml::scene::scene           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classopenvrml_1_1browser.html">openvrml::browser</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>browser</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classopenvrml_1_1scene.html">scene</a> *&nbsp;</td>
          <td class="paramname"> <em>parent</em> = <code>0</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td>  throw ()<code> [explicit]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Construct. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em><a class="el" href="classopenvrml_1_1browser.html" title="Encapsulates a VRML browser.">browser</a></em>&nbsp;</td><td>the <code><a class="el" href="classopenvrml_1_1browser.html" title="Encapsulates a VRML browser.">browser</a></code> associated with the <code><a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a></code>. </td></tr>
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>parent</em>&nbsp;</td><td>the parent <code><a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a></code>. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="3fb507b367652579070691da059a6d25"></a><!-- doxytag: member="openvrml::scene::~scene" ref="3fb507b367652579070691da059a6d25" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">openvrml::scene::~scene           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td>  throw ()<code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Destroy. 
<p>

</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="42ba64f3d35a6ecf7a609c1077b31bae"></a><!-- doxytag: member="openvrml::scene::browser" ref="42ba64f3d35a6ecf7a609c1077b31bae" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classopenvrml_1_1browser.html">openvrml::browser</a> &amp; openvrml::scene::browser           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const  throw ()</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get the associated <code><a class="el" href="classopenvrml_1_1browser.html" title="Encapsulates a VRML browser.">browser</a></code>. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the associated <code><a class="el" href="classopenvrml_1_1browser.html" title="Encapsulates a VRML browser.">browser</a></code>. </dd></dl>

</div>
</div><p>
<a class="anchor" name="49324e624d626b0106445963f9fcd695"></a><!-- doxytag: member="openvrml::scene::parent" ref="49324e624d626b0106445963f9fcd695" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classopenvrml_1_1scene.html">openvrml::scene</a> * openvrml::scene::parent           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const  throw ()</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get the parent <code><a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a></code>. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the parent <code><a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a></code>, or 0 if this is the root <code><a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a></code>. </dd></dl>

</div>
</div><p>
<a class="anchor" name="711d709894b0551d8319bd483ed8fb1e"></a><!-- doxytag: member="openvrml::scene::load" ref="711d709894b0551d8319bd483ed8fb1e" args="(resource_istream &amp;in)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void openvrml::scene::load           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classopenvrml_1_1resource__istream.html">resource_istream</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>in</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Load the <code><a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a></code> from a stream. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>in</em>&nbsp;</td><td>an input stream.</td></tr>
  </table>
</dl>
<dl compact><dt><b>Exceptions:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classopenvrml_1_1bad__media__type.html" title="Thrown when an unexpected media type is received.">bad_media_type</a></em>&nbsp;</td><td>if <code>in.type()</code> is not &ldquo;model/vrml&rdquo;, &ldquo;x-world/x-vrml&rdquo;, or &ldquo;model/x3d-vrml&rdquo;. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classopenvrml_1_1invalid__vrml.html" title="Exception thrown when the parser fails due to errors in the VRML input.">invalid_vrml</a></em>&nbsp;</td><td>if <code>in</code> has invalid syntax. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="e46b2dd9f6a67e2f0c50a23f154d0e9b"></a><!-- doxytag: member="openvrml::scene::initialize" ref="e46b2dd9f6a67e2f0c50a23f154d0e9b" args="(double timestamp)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void openvrml::scene::initialize           </td>
          <td>(</td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>timestamp</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td>  throw (  std::bad_alloc  )</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Initialize the <code><a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a></code>. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>timestamp</em>&nbsp;</td><td>the current time.</td></tr>
  </table>
</dl>
<dl compact><dt><b>Exceptions:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>std::bad_alloc</em>&nbsp;</td><td>if memory allocation fails. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="dca260f9a4bfc79ec4c5ca9cb28e2998"></a><!-- doxytag: member="openvrml::scene::meta" ref="dca260f9a4bfc79ec4c5ca9cb28e2998" args="(const std::string &amp;key) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const std::string openvrml::scene::meta           </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>key</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const  throw (  std::invalid_argument  ,   std::bad_alloc  )</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get metadata. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>key</em>&nbsp;</td><td>metadata key.</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the metadata value associated with <code>key</code>.</dd></dl>
<dl compact><dt><b>Exceptions:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>std::invalid_argument</em>&nbsp;</td><td>if there is no value associated with <code>key</code>. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>std::bad_alloc</em>&nbsp;</td><td>if memory allocation fails. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="806d50dd66f80fed4ecaa67dc335f691"></a><!-- doxytag: member="openvrml::scene::meta" ref="806d50dd66f80fed4ecaa67dc335f691" args="(const std::string &amp;key, const std::string &amp;value)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void openvrml::scene::meta           </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td>  throw (  std::bad_alloc  )</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set metadata. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>key</em>&nbsp;</td><td>metadata key. </td></tr>
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>value</em>&nbsp;</td><td>metadata value.</td></tr>
  </table>
</dl>
<dl compact><dt><b>Exceptions:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>std::bad_alloc</em>&nbsp;</td><td>if memory allocation fails. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="129c6426942530f6b8a00870da1308eb"></a><!-- doxytag: member="openvrml::scene::meta_keys" ref="129c6426942530f6b8a00870da1308eb" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const std::vector&lt; std::string &gt; openvrml::scene::meta_keys           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const  throw (  std::bad_alloc  )</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get the metadata keys. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the metadata keys. </dd></dl>

</div>
</div><p>
<a class="anchor" name="af2f7e5a1c7c96b9867380a25f6ce64e"></a><!-- doxytag: member="openvrml::scene::nodes" ref="af2f7e5a1c7c96b9867380a25f6ce64e" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const std::vector&lt; boost::intrusive_ptr&lt; <a class="el" href="classopenvrml_1_1node.html">openvrml::node</a> &gt; &gt; openvrml::scene::nodes           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const  throw (  std::bad_alloc  )</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Root <code><a class="el" href="classopenvrml_1_1node.html" title="A node in the scene graph.">node</a>s</code> for the <code><a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a></code>. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the root <code><a class="el" href="classopenvrml_1_1node.html" title="A node in the scene graph.">node</a>s</code> for the <code><a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a></code>.</dd></dl>
<dl compact><dt><b>Exceptions:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>std::bad_alloc</em>&nbsp;</td><td>if memory allocation fails. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="fd1f7009980b1091ca112d2f23e7e123"></a><!-- doxytag: member="openvrml::scene::nodes" ref="fd1f7009980b1091ca112d2f23e7e123" args="(const std::vector&lt; boost::intrusive_ptr&lt; node &gt; &gt; &amp;n)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void openvrml::scene::nodes           </td>
          <td>(</td>
          <td class="paramtype">const std::vector&lt; boost::intrusive_ptr&lt; <a class="el" href="classopenvrml_1_1node.html">node</a> &gt; &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>n</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td>  throw (  std::invalid_argument  ,   std::bad_alloc  )</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set the root <code><a class="el" href="classopenvrml_1_1node.html" title="A node in the scene graph.">node</a>s</code> for the <code><a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a></code>. 
<p>
This function calls <code><a class="el" href="classopenvrml_1_1scene.html#48380673b60f1c302d95ba343e19dfaf" title="Shut down the nodes in the scene.">shutdown</a></code> to shut down the <code><a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a></code>'s existing <code><a class="el" href="classopenvrml_1_1node.html" title="A node in the scene graph.">node</a>s</code>.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>n</em>&nbsp;</td><td>the new root <code><a class="el" href="classopenvrml_1_1node.html" title="A node in the scene graph.">node</a>s</code> for the <code><a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a></code>.</td></tr>
  </table>
</dl>
<dl compact><dt><b>Exceptions:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>std::invalid_argument</em>&nbsp;</td><td>if any of the <code><a class="el" href="classopenvrml_1_1node.html" title="A node in the scene graph.">node</a>s</code> in <code>n</code> has already been initialized. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>std::bad_alloc</em>&nbsp;</td><td>if memory allocation fails. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="dde0842d41ff9fbdaa945ff65aa01359"></a><!-- doxytag: member="openvrml::scene::root_scope" ref="dde0842d41ff9fbdaa945ff65aa01359" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="classopenvrml_1_1scope.html">openvrml::scope</a> * openvrml::scene::root_scope           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const  throw ()</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get the root <code><a class="el" href="classopenvrml_1_1scope.html" title="The scope class keeps track of defined nodes and prototypes.">scope</a></code>. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the root <code><a class="el" href="classopenvrml_1_1scope.html" title="The scope class keeps track of defined nodes and prototypes.">scope</a></code>. </dd></dl>

</div>
</div><p>
<a class="anchor" name="1b7c975d3a57e5bdfb95fb1fde7aeafe"></a><!-- doxytag: member="openvrml::scene::url" ref="1b7c975d3a57e5bdfb95fb1fde7aeafe" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const std::string openvrml::scene::url           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const  throw (  std::bad_alloc  )</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get the absolute URI for the <code><a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a></code>. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the absolute URI for the <code><a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a></code>.</dd></dl>
<dl compact><dt><b>Exceptions:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>std::bad_alloc</em>&nbsp;</td><td>if memory allocation fails. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="28817b20e17f633fee9c18ddada7bf05"></a><!-- doxytag: member="openvrml::scene::render" ref="28817b20e17f633fee9c18ddada7bf05" args="(openvrml::viewer &amp;viewer, rendering_context context)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void openvrml::scene::render           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classopenvrml_1_1viewer.html">openvrml::viewer</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>viewer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classopenvrml_1_1rendering__context.html">rendering_context</a>&nbsp;</td>
          <td class="paramname"> <em>context</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Render the <a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a>. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em><a class="el" href="classopenvrml_1_1viewer.html" title="Map the scene graph to the underlying graphics library.">viewer</a></em>&nbsp;</td><td>a <code><a class="el" href="classopenvrml_1_1viewer.html" title="Map the scene graph to the underlying graphics library.">viewer</a></code> to render to. </td></tr>
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>context</em>&nbsp;</td><td>a <code><a class="el" href="classopenvrml_1_1rendering__context.html" title="Information needed during a render traversal.">rendering_context</a></code>. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="9a7ba745d9c7669ce2a5193e8ec8c214"></a><!-- doxytag: member="openvrml::scene::load_url" ref="9a7ba745d9c7669ce2a5193e8ec8c214" args="(const std::vector&lt; std::string &gt; &amp;url, const std::vector&lt; std::string &gt; &amp;parameter)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void openvrml::scene::load_url           </td>
          <td>(</td>
          <td class="paramtype">const std::vector&lt; std::string &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>url</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::vector&lt; std::string &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>parameter</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td>  throw (  std::bad_alloc  )</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Load a resource into <em><a class="el" href="classopenvrml_1_1browser.html" title="Encapsulates a VRML browser.">browser</a></em>. 
<p>
This method simply resolves any relative references in <code>uri</code> and calls <code><a class="el" href="classopenvrml_1_1browser.html#0a9206f515d8d5858dd4dc9554ba6f0c" title="Asynchronously load a VRML world into the browser.">browser::load_url</a></code>.<p>
<dl class="note" compact><dt><b>Note:</b></dt><dd>There are a couple of edge cases here where we are probably doing the wrong thing:<ul>
<li>If there is a URI in the list of the form &ldquo;<code>#NodeId</code>&rdquo; and it is not the first URI in the list, this URI will be loaded as if it were a new world rather than as a Viewpoint that should simply be bound.</li><li>If the first URI in the list is of the form &ldquo;<code>#NodeId</code>&rdquo; and no Viewpoint named &ldquo;<code>NodeId</code>&rdquo; exists in the <a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a>, this method will not try any subsequent URIs in the list.</li></ul>
</dd></dl>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>url</em>&nbsp;</td><td>an array of URIs. Per VRML97 convention, the first resource in the sequence that can be reached will be loaded into the <a class="el" href="classopenvrml_1_1browser.html" title="Encapsulates a VRML browser.">browser</a>. </td></tr>
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>parameter</em>&nbsp;</td><td>an array of parameters to be associated with the URIs in <code>uri</code>.</td></tr>
  </table>
</dl>
<dl compact><dt><b>Exceptions:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>std::bad_alloc</em>&nbsp;</td><td>if memory allocation fails.</td></tr>
  </table>
</dl>
<dl compact><dt><b><a class="el" href="todo.html#_todo000011">Todo:</a></b></dt><dd>This method currently fails silently if any of the URIs in <code>url</code> is invalid. Should this throw <a class="el" href="classopenvrml_1_1invalid__url.html" title="Thrown when parsing a URI fails.">invalid_url</a>? </dd></dl>

</div>
</div><p>
<a class="anchor" name="f6fa00d304598fe66f97489bd26f7f1c"></a><!-- doxytag: member="openvrml::scene::get_resource" ref="f6fa00d304598fe66f97489bd26f7f1c" args="(const std::vector&lt; std::string &gt; &amp;url) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::auto_ptr&lt; <a class="el" href="classopenvrml_1_1resource__istream.html">openvrml::resource_istream</a> &gt; openvrml::scene::get_resource           </td>
          <td>(</td>
          <td class="paramtype">const std::vector&lt; std::string &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>url</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td> const  throw (  <a class="el" href="classopenvrml_1_1no__alternative__url.html">no_alternative_url</a>  ,   std::bad_alloc  )</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get a resource using a list of alternative URIs. 
<p>
Relative URIs in <code>url</code> are resolved against the absolute URI of the <code><a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a></code>.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>url</em>&nbsp;</td><td>a list of alternative URIs.</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the resource.</dd></dl>
<dl compact><dt><b>Exceptions:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classopenvrml_1_1no__alternative__url.html" title="Exception thrown when no URI in an alternative URI list can be resolved.">no_alternative_url</a></em>&nbsp;</td><td>if none of the elements of <code>url</code> can be resolved. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>std::bad_alloc</em>&nbsp;</td><td>if memory allocation fails. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="89a90bf5aa4323a715a2b83b1499eee4"></a><!-- doxytag: member="openvrml::scene::read_stream" ref="89a90bf5aa4323a715a2b83b1499eee4" args="(std::auto_ptr&lt; resource_istream &gt; in, std::auto_ptr&lt; stream_listener &gt; listener)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void openvrml::scene::read_stream           </td>
          <td>(</td>
          <td class="paramtype">std::auto_ptr&lt; <a class="el" href="classopenvrml_1_1resource__istream.html">resource_istream</a> &gt;&nbsp;</td>
          <td class="paramname"> <em>in</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::auto_ptr&lt; <a class="el" href="classopenvrml_1_1stream__listener.html">stream_listener</a> &gt;&nbsp;</td>
          <td class="paramname"> <em>listener</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Read a stream in a new thread. 
<p>
<code><a class="el" href="classopenvrml_1_1scene.html#89a90bf5aa4323a715a2b83b1499eee4" title="Read a stream in a new thread.">read_stream</a></code> takes ownership of its arguments; the resources are released when reading the stream completes and the thread terminates.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>in</em>&nbsp;</td><td>an input stream. </td></tr>
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>listener</em>&nbsp;</td><td>a stream listener. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="8c9b76b8af501932d43eb742c433aaea"></a><!-- doxytag: member="openvrml::scene::create_vrml_from_url" ref="8c9b76b8af501932d43eb742c433aaea" args="(const std::vector&lt; std::string &gt; &amp;url, const boost::intrusive_ptr&lt; node &gt; &amp;node, const std::string &amp;event)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void openvrml::scene::create_vrml_from_url           </td>
          <td>(</td>
          <td class="paramtype">const std::vector&lt; std::string &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>url</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const boost::intrusive_ptr&lt; <a class="el" href="classopenvrml_1_1node.html">node</a> &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>node</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&nbsp;</td>
          <td class="paramname"> <em>event</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td>  throw (  <a class="el" href="classopenvrml_1_1unsupported__interface.html">unsupported_interface</a>  ,   std::bad_cast  ,   boost::thread_resource_error  )</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Create nodes from a URI. 
<p>
This function executes asynchronously. When the nodes have been completely loaded, they are sent to the <code>event</code> MFNode eventIn of <code><a class="el" href="classopenvrml_1_1node.html" title="A node in the scene graph.">node</a></code>.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>url</em>&nbsp;</td><td>an alternative URI list. </td></tr>
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em><a class="el" href="classopenvrml_1_1node.html" title="A node in the scene graph.">node</a></em>&nbsp;</td><td>the <a class="el" href="classopenvrml_1_1node.html" title="A node in the scene graph.">node</a> to which the nodes loaded from <code>url</code> should be sent as an event. </td></tr>
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>event</em>&nbsp;</td><td>the event of <code><a class="el" href="classopenvrml_1_1node.html" title="A node in the scene graph.">node</a></code> to which the new nodes will be sent.</td></tr>
  </table>
</dl>
<dl compact><dt><b>Exceptions:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classopenvrml_1_1unsupported__interface.html" title="Exception to indicate that a node interface is not supported.">unsupported_interface</a></em>&nbsp;</td><td>if <code><a class="el" href="classopenvrml_1_1node.html" title="A node in the scene graph.">node</a></code> has no eventIn <code>event</code>. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>std::bad_cast</em>&nbsp;</td><td>if the <code>event</code> eventIn of <code><a class="el" href="classopenvrml_1_1node.html" title="A node in the scene graph.">node</a></code> is not an MFNode. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>boost::thread_resource_error</em>&nbsp;</td><td>if thread creation fails. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="48380673b60f1c302d95ba343e19dfaf"></a><!-- doxytag: member="openvrml::scene::shutdown" ref="48380673b60f1c302d95ba343e19dfaf" args="(double timestamp)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void openvrml::scene::shutdown           </td>
          <td>(</td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>timestamp</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td>  throw ()</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Shut down the nodes in the <a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a>. 
<p>
This function <b>must</b> be called before the <code><a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a></code> is destroyed.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>timestamp</em>&nbsp;</td><td>the current time. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="70fcdfcbfb910ca20748c6159ce76b94"></a><!-- doxytag: member="openvrml::scene::scene_loaded" ref="70fcdfcbfb910ca20748c6159ce76b94" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void openvrml::scene::scene_loaded           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [private, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Function called once the <code><a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a></code> has been loaded. 
<p>
<code><a class="el" href="classopenvrml_1_1scene.html#711d709894b0551d8319bd483ed8fb1e" title="Load the scene from a stream.">load</a></code> calls this function once the <code><a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a></code> has finished loading. The default implementation does nothing. 
</div>
</div><p>
<hr><h2>Member Data Documentation</h2>
<a class="anchor" name="e868b676703449874ad2634154cd85f8"></a><!-- doxytag: member="openvrml::scene::browser_" ref="e868b676703449874ad2634154cd85f8" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classopenvrml_1_1browser.html">openvrml::browser</a> *const <a class="el" href="classopenvrml_1_1scene.html#e868b676703449874ad2634154cd85f8">openvrml::scene::browser_</a><code> [private]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
A reference to the <code><a class="el" href="classopenvrml_1_1browser.html" title="Encapsulates a VRML browser.">browser</a></code> associated with the <code><a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a></code>. 
<p>
<p><b>For internal use only.</b></p>
<p>
</p>

</div>
</div><p>
<a class="anchor" name="1118e5b9bf384813f615f4bbac17d3ad"></a><!-- doxytag: member="openvrml::scene::parent_" ref="1118e5b9bf384813f615f4bbac17d3ad" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classopenvrml_1_1scene.html">openvrml::scene</a> *const <a class="el" href="classopenvrml_1_1scene.html#1118e5b9bf384813f615f4bbac17d3ad">openvrml::scene::parent_</a><code> [private]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
A pointer to the parent <code><a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a></code>. 
<p>
<p><b>For internal use only.</b></p>
<p>
If the <code><a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a></code> is the root <code><a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a></code>, <em>parent</em> will be 0. </p>

</div>
</div><p>
<a class="anchor" name="725b6558176daf499783671a01367edf"></a><!-- doxytag: member="openvrml::scene::nodes_mutex_" ref="725b6558176daf499783671a01367edf" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">boost::shared_mutex <a class="el" href="classopenvrml_1_1scene.html#725b6558176daf499783671a01367edf">openvrml::scene::nodes_mutex_</a><code> [mutable, private]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Mutex protecting <em>nodes_</em>. 
<p>
<p><b>For internal use only.</b></p>
<p>
</p>

</div>
</div><p>
<a class="anchor" name="08bb7edf1dfb5914e40a1119c5ea9026"></a><!-- doxytag: member="openvrml::scene::nodes_" ref="08bb7edf1dfb5914e40a1119c5ea9026" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classopenvrml_1_1mfnode.html">openvrml::mfnode</a> <a class="el" href="classopenvrml_1_1scene.html#08bb7edf1dfb5914e40a1119c5ea9026">openvrml::scene::nodes_</a><code> [private]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The nodes for the <a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a>. 
<p>
<p><b>For internal use only.</b></p>
<p>
</p>

</div>
</div><p>
<a class="anchor" name="0d9a61639bc51077a045ef1795ed8140"></a><!-- doxytag: member="openvrml::scene::url_mutex_" ref="0d9a61639bc51077a045ef1795ed8140" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">boost::shared_mutex <a class="el" href="classopenvrml_1_1scene.html#0d9a61639bc51077a045ef1795ed8140">openvrml::scene::url_mutex_</a><code> [mutable, private]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Mutex protecting <em>url_</em>. 
<p>
<p><b>For internal use only.</b></p>
<p>
</p>

</div>
</div><p>
<a class="anchor" name="9f99ff284276163dedde61968110e5ea"></a><!-- doxytag: member="openvrml::scene::url_" ref="9f99ff284276163dedde61968110e5ea" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const std::string <a class="el" href="classopenvrml_1_1scene.html#9f99ff284276163dedde61968110e5ea">openvrml::scene::url_</a><code> [private]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The URI for the <a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a>. 
<p>
<p><b>For internal use only.</b></p>
<p>
This may be a relative or an absolute reference. </p>

</div>
</div><p>
<a class="anchor" name="6df2c506388a4f9607ea1b4258fb9599"></a><!-- doxytag: member="openvrml::scene::meta_mutex_" ref="6df2c506388a4f9607ea1b4258fb9599" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">boost::shared_mutex <a class="el" href="classopenvrml_1_1scene.html#6df2c506388a4f9607ea1b4258fb9599">openvrml::scene::meta_mutex_</a><code> [mutable, private]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Mutex protecting <code><a class="el" href="classopenvrml_1_1scene.html#b04a245d6f1d57227ba6f04b3920c12b" title="Scene metadata map.">meta_</a></code>. 
<p>
<p><b>For internal use only.</b></p>
<p>
</p>

</div>
</div><p>
<a class="anchor" name="b04a245d6f1d57227ba6f04b3920c12b"></a><!-- doxytag: member="openvrml::scene::meta_" ref="b04a245d6f1d57227ba6f04b3920c12b" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::map&lt; std::string, std::string &gt; <a class="el" href="classopenvrml_1_1scene.html#b04a245d6f1d57227ba6f04b3920c12b">openvrml::scene::meta_</a><code> [private]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Scene metadata map. 
<p>
<p><b>For internal use only.</b></p>
<p>
</p>

</div>
</div><p>
<a class="anchor" name="460aad301d44b50e5a1fa029a3be75b7"></a><!-- doxytag: member="openvrml::scene::stream_reader_threads_" ref="460aad301d44b50e5a1fa029a3be75b7" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">boost::thread_group <a class="el" href="classopenvrml_1_1scene.html#460aad301d44b50e5a1fa029a3be75b7">openvrml::scene::stream_reader_threads_</a><code> [private]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Stream reader thread group. 
<p>
<p><b>For internal use only.</b></p>
<p>
</p>

</div>
</div><p>
</div>
</div>
<address class="footer"><span class="images"><a href="http://web3d.org/x3d/"><img src="x3d-white-on-black.png" width="43" height="32" border="0" alt="X3D"></a><a href="http://opengl.org"><img src="OGL_sm_wht.png" width="68" height="32" border="0" alt="OpenGL"></a><a href="http://sourceforge.net/projects/openvrml"><img src="http://sourceforge.net/sflogo.php?group_id=7151&amp;type=11" width="120" height="30" border="0" alt="SourceForge.net"></a></span><a href="https://sourceforge.net/apps/trac/openvrml/newticket">Report error</a><br>Generated Thu Aug 13 02:49:21 2009 by Doxygen 1.5.8</address>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>
<script type="text/javascript">_uacct = "UA-446379-2"; urchinTracker();</script>
<!-- Piwik -->
<script type="text/javascript">
var pkBaseURL = (("https:" == document.location.protocol) ? "https://sourceforge.net/apps/piwik/openvrml/" : "http://sourceforge.net/apps/piwik/openvrml/");
document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
</script><script type="text/javascript">
piwik_action_name = '';
piwik_idsite = 1;
piwik_url = pkBaseURL + "piwik.php";
piwik_log(piwik_action_name, piwik_idsite, piwik_url);
</script>
<object><noscript><p><img src="http://sourceforge.net/apps/piwik/openvrml/piwik.php?idsite=1" alt="piwik"/></p></noscript></object>
<!-- End Piwik Tag -->
</body>
</html>