<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>OpenVRML: openvrml::node_metatype 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 Page</span></a></li> <li><a href="pages.html"><span>Related 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 List</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> <div class="navpath"><a class="el" href="namespaceopenvrml.html">openvrml</a>::<a class="el" href="classopenvrml_1_1node__metatype.html">node_metatype</a> </div> </div> <div class="contents"> <h1>openvrml::node_metatype Class Reference</h1><!-- doxytag: class="openvrml::node_metatype" -->A class object for <a class="el" href="classopenvrml_1_1node.html" title="A node in the scene graph.">node</a> instances. <a href="#_details">More...</a> <p> <code>#include <openvrml/node.h></code> <p> <div class="dynheader"> Inheritance diagram for openvrml::node_metatype:</div> <div class="dynsection"> <p><center><img src="classopenvrml_1_1node__metatype__inherit__graph.png" border="0" usemap="#openvrml_1_1node__metatype__inherit__map" alt="Inheritance graph"></center> <map name="openvrml_1_1node__metatype__inherit__map"> <area shape="rect" href="classopenvrml_1_1null__node__metatype.html" title="A placeholder node_metatype." alt="" coords="5,83,208,112"><area shape="rect" href="classopenvrml_1_1script__node__metatype.html" title="Class object for script_nodes." alt="" coords="232,83,448,112"></map> <center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div> <p> <a href="classopenvrml_1_1node__metatype-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">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1node__metatype.html#54239087ae4b3000dd9f2c093e5a7763">~node_metatype</a> ()=0 throw ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <a href="#54239087ae4b3000dd9f2c093e5a7763"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classopenvrml_1_1node__metatype__id.html">node_metatype_id</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1node__metatype.html#add8576a41cedc660e66643d4ac00eb4">id</a> () const throw ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Identifier. <a href="#add8576a41cedc660e66643d4ac00eb4"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classopenvrml_1_1browser.html">openvrml::browser</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1node__metatype.html#63f76259cc84aeaebe3b762ea78c73cf">browser</a> () const throw ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The <code><a class="el" href="classopenvrml_1_1browser.html" title="Encapsulates a VRML browser.">browser</a></code> associated with this <code><a class="el" href="classopenvrml_1_1node__metatype.html" title="A class object for node instances.">node_metatype</a></code>. <a href="#63f76259cc84aeaebe3b762ea78c73cf"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1node__metatype.html#f2a74782bfe2f0a2a6022eb70256adba">initialize</a> (<a class="el" href="classopenvrml_1_1viewpoint__node.html">viewpoint_node</a> *initial_viewpoint, double time) throw ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight"><code><a class="el" href="classopenvrml_1_1node__metatype.html" title="A class object for node instances.">node_metatype</a></code>-specific initialization. <a href="#f2a74782bfe2f0a2a6022eb70256adba"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1node__metatype.html#482b7d85a238ae6e90ca1ec021aeddbd">render</a> (<a class="el" href="classopenvrml_1_1viewer.html">viewer</a> &v) const throw ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight"><code><a class="el" href="classopenvrml_1_1node__metatype.html" title="A class object for node instances.">node_metatype</a></code>-specific rendering. <a href="#482b7d85a238ae6e90ca1ec021aeddbd"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">const boost::shared_ptr<br class="typebreak"> < <a class="el" href="classopenvrml_1_1node__type.html">node_type</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1node__metatype.html#5f28f8885d03f3e6654dac87a13891e6">create_type</a> (const std::string &id, const <a class="el" href="namespaceopenvrml.html#4c88b862d45625d0cbeb839d4c4e9ec8">node_interface_set</a> &interfaces) throw ( unsupported_interface , std::bad_alloc )</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Create a new <code><a class="el" href="classopenvrml_1_1node__type.html" title="Type information object for nodes.">node_type</a></code>. <a href="#5f28f8885d03f3e6654dac87a13891e6"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1node__metatype.html#472509305b3623ab5d5c2e7eab546aba">shutdown</a> (double time) throw ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Shut down. <a href="#472509305b3623ab5d5c2e7eab546aba"></a><br></td></tr> <tr><td colspan="2"><br><h2>Protected Member Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1node__metatype.html#42ee323252d207e4e81d297c7650063c">node_metatype</a> (const <a class="el" href="classopenvrml_1_1node__metatype__id.html">node_metatype_id</a> &id, <a class="el" href="classopenvrml_1_1browser.html">openvrml::browser</a> &b) throw ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <a href="#42ee323252d207e4e81d297c7650063c"></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 </td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1node__metatype.html#ec66056541f941e3bf00679013461c51">do_initialize</a> (<a class="el" href="classopenvrml_1_1viewpoint__node.html">viewpoint_node</a> *initial_viewpoint, double time) throw ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight"><code><a class="el" href="classopenvrml_1_1node__metatype.html" title="A class object for node instances.">node_metatype</a></code>-specific initialization. <a href="#ec66056541f941e3bf00679013461c51"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1node__metatype.html#1df6de53c5f9643d8da3c4a44625efcf">do_render</a> (<a class="el" href="classopenvrml_1_1viewer.html">viewer</a> &v) const throw ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight"><code><a class="el" href="classopenvrml_1_1node__metatype.html" title="A class object for node instances.">node_metatype</a></code>-specific rendering. <a href="#1df6de53c5f9643d8da3c4a44625efcf"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual const <br class="typebreak"> boost::shared_ptr< <a class="el" href="classopenvrml_1_1node__type.html">node_type</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1node__metatype.html#b2d7ccad01f14382b4b15ab4738d35d1">do_create_type</a> (const std::string &id, const <a class="el" href="namespaceopenvrml.html#4c88b862d45625d0cbeb839d4c4e9ec8">node_interface_set</a> &interfaces) const =0 throw ( unsupported_interface , std::bad_alloc )</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Create a new <code><a class="el" href="classopenvrml_1_1node__type.html" title="Type information object for nodes.">node_type</a></code>. <a href="#b2d7ccad01f14382b4b15ab4738d35d1"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1node__metatype.html#6e071f78ccb88ea30f475cfd6ac3cd62">do_shutdown</a> (double time) throw ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Shut down. <a href="#6e071f78ccb88ea30f475cfd6ac3cd62"></a><br></td></tr> <tr><td colspan="2"><br><h2>Private Attributes</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classopenvrml_1_1node__metatype__id.html">node_metatype_id</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1node__metatype.html#9bbff54e54d3ed6c0a86363e100afb24">id_</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight"><code><a class="el" href="classopenvrml_1_1node__metatype.html" title="A class object for node instances.">node_metatype</a></code> identifier. <a href="#9bbff54e54d3ed6c0a86363e100afb24"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classopenvrml_1_1browser.html">openvrml::browser</a> *const </td><td class="memItemRight" valign="bottom"><a class="el" href="classopenvrml_1_1node__metatype.html#95ece2e95e7ab26f63db6d2ab2e04d6f">browser_</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The <code><a class="el" href="classopenvrml_1_1browser.html" title="Encapsulates a VRML browser.">browser</a></code> associated with this <code><a class="el" href="classopenvrml_1_1node__metatype.html" title="A class object for node instances.">node_metatype</a></code>. <a href="#95ece2e95e7ab26f63db6d2ab2e04d6f"></a><br></td></tr> </table> <hr><a name="_details"></a><h2>Detailed Description</h2> A class object for <a class="el" href="classopenvrml_1_1node.html" title="A node in the scene graph.">node</a> instances. <p> <code><a class="el" href="classopenvrml_1_1node__metatype.html" title="A class object for node instances.">node_metatype</a></code> can be thought of as a “supertype” of sorts. A given <a class="el" href="classopenvrml_1_1node.html" title="A node in the scene graph.">node</a> implementation can support as many <a class="el" href="classopenvrml_1_1node.html" title="A node in the scene graph.">node</a> types as there are unique combinations of the interfaces it supports. The most readily apparent role of the <code><a class="el" href="classopenvrml_1_1node__metatype.html" title="A class object for node instances.">node_metatype</a></code> object for a <a class="el" href="classopenvrml_1_1node.html" title="A node in the scene graph.">node</a> implementation is to serve as a factory for these <code><a class="el" href="classopenvrml_1_1node__type.html" title="Type information object for nodes.">node_type</a>s</code>. <hr><h2>Constructor & Destructor Documentation</h2> <a class="anchor" name="54239087ae4b3000dd9f2c093e5a7763"></a><!-- doxytag: member="openvrml::node_metatype::~node_metatype" ref="54239087ae4b3000dd9f2c093e5a7763" args="()=0" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">openvrml::node_metatype::~node_metatype </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td> throw ()<code> [pure virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Destructor. <p> </div> </div><p> <a class="anchor" name="42ee323252d207e4e81d297c7650063c"></a><!-- doxytag: member="openvrml::node_metatype::node_metatype" ref="42ee323252d207e4e81d297c7650063c" args="(const node_metatype_id &id, openvrml::browser &b)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">openvrml::node_metatype::node_metatype </td> <td>(</td> <td class="paramtype">const <a class="el" href="classopenvrml_1_1node__metatype__id.html">node_metatype_id</a> & </td> <td class="paramname"> <em>id</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="classopenvrml_1_1browser.html">openvrml::browser</a> & </td> <td class="paramname"> <em>b</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td> throw ()<code> [explicit, protected]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Constructor. <p> A <code><a class="el" href="classopenvrml_1_1node__metatype.html" title="A class object for node instances.">node_metatype</a></code> is constructed using a <code><a class="el" href="classopenvrml_1_1browser.html" title="Encapsulates a VRML browser.">browser</a></code>. All <code><a class="el" href="classopenvrml_1_1node.html" title="A node in the scene graph.">node</a></code> instances that share a particular <code><a class="el" href="classopenvrml_1_1node__metatype.html" title="A class object for node instances.">node_metatype</a></code> “belong 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_1node__metatype.html" title="A class object for node instances.">node_metatype</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> </td><td valign="top"><em>id</em> </td><td>an identifier unique to <code>b</code>. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>b</em> </td><td>the <code><a class="el" href="classopenvrml_1_1browser.html" title="Encapsulates a VRML browser.">browser</a></code> to be associated with the <code><a class="el" href="classopenvrml_1_1node__metatype.html" title="A class object for node instances.">node_metatype</a></code>. </td></tr> </table> </dl> </div> </div><p> <hr><h2>Member Function Documentation</h2> <a class="anchor" name="add8576a41cedc660e66643d4ac00eb4"></a><!-- doxytag: member="openvrml::node_metatype::id" ref="add8576a41cedc660e66643d4ac00eb4" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const <a class="el" href="classopenvrml_1_1node__metatype__id.html">openvrml::node_metatype_id</a> & openvrml::node_metatype::id </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td> const throw ()</td> </tr> </table> </div> <div class="memdoc"> <p> Identifier. <p> <dl class="return" compact><dt><b>Returns:</b></dt><dd>the <code><a class="el" href="classopenvrml_1_1node__metatype.html" title="A class object for node instances.">node_metatype</a></code> identifier. </dd></dl> </div> </div><p> <a class="anchor" name="63f76259cc84aeaebe3b762ea78c73cf"></a><!-- doxytag: member="openvrml::node_metatype::browser" ref="63f76259cc84aeaebe3b762ea78c73cf" 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> & openvrml::node_metatype::browser </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td> const throw ()</td> </tr> </table> </div> <div class="memdoc"> <p> The <code><a class="el" href="classopenvrml_1_1browser.html" title="Encapsulates a VRML browser.">browser</a></code> associated with this <code><a class="el" href="classopenvrml_1_1node__metatype.html" title="A class object for node instances.">node_metatype</a></code>. <p> <dl class="return" compact><dt><b>Returns:</b></dt><dd>the <code><a class="el" href="classopenvrml_1_1browser.html" title="Encapsulates a VRML browser.">browser</a></code> associated with this <code><a class="el" href="classopenvrml_1_1node__metatype.html" title="A class object for node instances.">node_metatype</a></code>. </dd></dl> </div> </div><p> <a class="anchor" name="f2a74782bfe2f0a2a6022eb70256adba"></a><!-- doxytag: member="openvrml::node_metatype::initialize" ref="f2a74782bfe2f0a2a6022eb70256adba" args="(viewpoint_node *initial_viewpoint, double time)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void openvrml::node_metatype::initialize </td> <td>(</td> <td class="paramtype"><a class="el" href="classopenvrml_1_1viewpoint__node.html">viewpoint_node</a> * </td> <td class="paramname"> <em>initial_viewpoint</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">double </td> <td class="paramname"> <em>time</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td> throw ()</td> </tr> </table> </div> <div class="memdoc"> <p> <code><a class="el" href="classopenvrml_1_1node__metatype.html" title="A class object for node instances.">node_metatype</a></code>-specific initialization. <p> This method is called during initialization of a <code><a class="el" href="classopenvrml_1_1browser.html" title="Encapsulates a VRML browser.">browser</a></code> object with a new root <code><a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a></code>. It is called after the individual <code><a class="el" href="classopenvrml_1_1node.html" title="A node in the scene graph.">node</a></code> instances have been initialized, and before the world starts running. It delegates to <code><a class="el" href="classopenvrml_1_1node__metatype.html#ec66056541f941e3bf00679013461c51" title="node_metatype-specific initialization.">do_initialize</a></code>.<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[in,out]</tt> </td><td valign="top"><em>initial_viewpoint</em> </td><td>the <code><a class="el" href="classopenvrml_1_1viewpoint__node.html" title="Abstract base class for viewpoint nodes.">viewpoint_node</a></code> that should be bound initially; or 0 if the default <code><a class="el" href="classopenvrml_1_1viewpoint__node.html" title="Abstract base class for viewpoint nodes.">viewpoint_node</a></code> should be bound. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>time</em> </td><td>the current time. </td></tr> </table> </dl> </div> </div><p> <a class="anchor" name="482b7d85a238ae6e90ca1ec021aeddbd"></a><!-- doxytag: member="openvrml::node_metatype::render" ref="482b7d85a238ae6e90ca1ec021aeddbd" args="(viewer &v) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void openvrml::node_metatype::render </td> <td>(</td> <td class="paramtype"><a class="el" href="classopenvrml_1_1viewer.html">viewer</a> & </td> <td class="paramname"> <em>v</em> </td> <td> ) </td> <td> const throw ()</td> </tr> </table> </div> <div class="memdoc"> <p> <code><a class="el" href="classopenvrml_1_1node__metatype.html" title="A class object for node instances.">node_metatype</a></code>-specific rendering. <p> This function delegates to <code><a class="el" href="classopenvrml_1_1node__metatype.html#1df6de53c5f9643d8da3c4a44625efcf" title="node_metatype-specific rendering.">do_render</a></code>.<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[in,out]</tt> </td><td valign="top"><em>v</em> </td><td>the <code><a class="el" href="classopenvrml_1_1viewer.html" title="Map the scene graph to the underlying graphics library.">viewer</a></code> to which to render. </td></tr> </table> </dl> </div> </div><p> <a class="anchor" name="5f28f8885d03f3e6654dac87a13891e6"></a><!-- doxytag: member="openvrml::node_metatype::create_type" ref="5f28f8885d03f3e6654dac87a13891e6" args="(const std::string &id, const node_interface_set &interfaces)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const boost::shared_ptr< <a class="el" href="classopenvrml_1_1node__type.html">openvrml::node_type</a> > openvrml::node_metatype::create_type </td> <td>(</td> <td class="paramtype">const std::string & </td> <td class="paramname"> <em>id</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="namespaceopenvrml.html#4c88b862d45625d0cbeb839d4c4e9ec8">node_interface_set</a> & </td> <td class="paramname"> <em>interfaces</em></td><td> </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_alloc )</td> </tr> </table> </div> <div class="memdoc"> <p> Create a new <code><a class="el" href="classopenvrml_1_1node__type.html" title="Type information object for nodes.">node_type</a></code>. <p> <code><a class="el" href="classopenvrml_1_1node__type.html" title="Type information object for nodes.">node_type</a>s</code> can be said to subset the master type provided by the <code><a class="el" href="classopenvrml_1_1node__metatype.html" title="A class object for node instances.">node_metatype</a></code>. Each <code><a class="el" href="classopenvrml_1_1node__metatype.html" title="A class object for node instances.">node_metatype</a></code> instance can support certain <code><a class="el" href="classopenvrml_1_1node.html" title="A node in the scene graph.">node</a></code> interfaces; the <code>node_interface_set</code> passed to <code><a class="el" href="classopenvrml_1_1node__metatype.html#5f28f8885d03f3e6654dac87a13891e6" title="Create a new node_type.">create_type</a></code> must be a subset of those supported interfaces.<p> This function delegates to <code><a class="el" href="classopenvrml_1_1node__metatype.html#b2d7ccad01f14382b4b15ab4738d35d1" title="Create a new node_type.">do_create_type</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> </td><td valign="top"><em>id</em> </td><td>the name for the new <code><a class="el" href="classopenvrml_1_1node__type.html" title="Type information object for nodes.">node_type</a></code>. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>interfaces</em> </td><td>a <code>node_interface_set</code> containing the interfaces for the new type.</td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>a newly created <code><a class="el" href="classopenvrml_1_1node__type.html" title="Type information object for nodes.">node_type</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><a class="el" href="classopenvrml_1_1unsupported__interface.html" title="Exception to indicate that a node interface is not supported.">unsupported_interface</a></em> </td><td>if the <code><a class="el" href="classopenvrml_1_1node__metatype.html" title="A class object for node instances.">node_metatype</a></code> cannot support one of the <code><a class="el" href="classopenvrml_1_1node__interface.html" title="Type information for an interface of a node.">node_interface</a>s</code> in <code>interfaces</code>. </td></tr> <tr><td valign="top"></td><td valign="top"><em>std::bad_alloc</em> </td><td>if memory allocation fails.</td></tr> </table> </dl> <dl class="see" compact><dt><b>See also:</b></dt><dd><a href="http://boost.org/libs/smart_ptr/shared_ptr.htm">http://boost.org/libs/smart_ptr/shared_ptr.htm</a> </dd></dl> </div> </div><p> <a class="anchor" name="472509305b3623ab5d5c2e7eab546aba"></a><!-- doxytag: member="openvrml::node_metatype::shutdown" ref="472509305b3623ab5d5c2e7eab546aba" args="(double time)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void openvrml::node_metatype::shutdown </td> <td>(</td> <td class="paramtype">double </td> <td class="paramname"> <em>time</em> </td> <td> ) </td> <td> throw ()</td> </tr> </table> </div> <div class="memdoc"> <p> Shut down. <p> This function is called during destruction of the <code><a class="el" href="classopenvrml_1_1browser.html" title="Encapsulates a VRML browser.">browser</a></code>, after the root <code><a class="el" href="classopenvrml_1_1scene.html" title="A scene in the VRML world.">scene</a></code> has been shut down. This function delegates to <code><a class="el" href="classopenvrml_1_1node__metatype.html#6e071f78ccb88ea30f475cfd6ac3cd62" title="Shut down.">do_shutdown</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> </td><td valign="top"><em>time</em> </td><td>the current time. </td></tr> </table> </dl> </div> </div><p> <a class="anchor" name="ec66056541f941e3bf00679013461c51"></a><!-- doxytag: member="openvrml::node_metatype::do_initialize" ref="ec66056541f941e3bf00679013461c51" args="(viewpoint_node *initial_viewpoint, double time)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void openvrml::node_metatype::do_initialize </td> <td>(</td> <td class="paramtype"><a class="el" href="classopenvrml_1_1viewpoint__node.html">viewpoint_node</a> * </td> <td class="paramname"> <em>initial_viewpoint</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">double </td> <td class="paramname"> <em>time</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td> throw ()<code> [private, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> <code><a class="el" href="classopenvrml_1_1node__metatype.html" title="A class object for node instances.">node_metatype</a></code>-specific initialization. <p> Node implementations should override this method to perform any <code><a class="el" href="classopenvrml_1_1node__metatype.html" title="A class object for node instances.">node_metatype</a></code>-wide initialization.<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[in,out]</tt> </td><td valign="top"><em>initial_viewpoint</em> </td><td>the <code><a class="el" href="classopenvrml_1_1viewpoint__node.html" title="Abstract base class for viewpoint nodes.">viewpoint_node</a></code> that should be bound initially; or 0 if the default <code><a class="el" href="classopenvrml_1_1viewpoint__node.html" title="Abstract base class for viewpoint nodes.">viewpoint_node</a></code> should be bound. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>time</em> </td><td>the current time.</td></tr> </table> </dl> <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classopenvrml_1_1node__metatype.html#f2a74782bfe2f0a2a6022eb70256adba" title="node_metatype-specific initialization.">node_metatype::initialize</a> </dd></dl> </div> </div><p> <a class="anchor" name="1df6de53c5f9643d8da3c4a44625efcf"></a><!-- doxytag: member="openvrml::node_metatype::do_render" ref="1df6de53c5f9643d8da3c4a44625efcf" args="(viewer &v) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void openvrml::node_metatype::do_render </td> <td>(</td> <td class="paramtype"><a class="el" href="classopenvrml_1_1viewer.html">viewer</a> & </td> <td class="paramname"> <em>v</em> </td> <td> ) </td> <td> const throw ()<code> [private, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> <code><a class="el" href="classopenvrml_1_1node__metatype.html" title="A class object for node instances.">node_metatype</a></code>-specific rendering. <p> The default implementation of this method does nothing.<p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[in,out]</tt> </td><td valign="top"><em>v</em> </td><td>the <code><a class="el" href="classopenvrml_1_1viewer.html" title="Map the scene graph to the underlying graphics library.">viewer</a></code> to which to render.</td></tr> </table> </dl> <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classopenvrml_1_1node__metatype.html#482b7d85a238ae6e90ca1ec021aeddbd" title="node_metatype-specific rendering.">node_metatype::render</a> </dd></dl> </div> </div><p> <a class="anchor" name="b2d7ccad01f14382b4b15ab4738d35d1"></a><!-- doxytag: member="openvrml::node_metatype::do_create_type" ref="b2d7ccad01f14382b4b15ab4738d35d1" args="(const std::string &id, const node_interface_set &interfaces) const =0" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const boost::shared_ptr< <a class="el" href="classopenvrml_1_1node__type.html">openvrml::node_type</a> > openvrml::node_metatype::do_create_type </td> <td>(</td> <td class="paramtype">const std::string & </td> <td class="paramname"> <em>id</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="namespaceopenvrml.html#4c88b862d45625d0cbeb839d4c4e9ec8">node_interface_set</a> & </td> <td class="paramname"> <em>interfaces</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td> const throw ( <a class="el" href="classopenvrml_1_1unsupported__interface.html">unsupported_interface</a> , std::bad_alloc )<code> [private, pure virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Create a new <code><a class="el" href="classopenvrml_1_1node__type.html" title="Type information object for nodes.">node_type</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> </td><td valign="top"><em>id</em> </td><td>the name for the new <code><a class="el" href="classopenvrml_1_1node__type.html" title="Type information object for nodes.">node_type</a></code>. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>interfaces</em> </td><td>a <code>node_interface_set</code> containing the interfaces for the new type.</td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>a newly created <code><a class="el" href="classopenvrml_1_1node__type.html" title="Type information object for nodes.">node_type</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><a class="el" href="classopenvrml_1_1unsupported__interface.html" title="Exception to indicate that a node interface is not supported.">unsupported_interface</a></em> </td><td>if the <code><a class="el" href="classopenvrml_1_1node__metatype.html" title="A class object for node instances.">node_metatype</a></code> cannot support one of the <code><a class="el" href="classopenvrml_1_1node__interface.html" title="Type information for an interface of a node.">node_interface</a>s</code> in <code>interfaces</code>. </td></tr> <tr><td valign="top"></td><td valign="top"><em>std::bad_alloc</em> </td><td>if memory allocation fails.</td></tr> </table> </dl> <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classopenvrml_1_1node__metatype.html#5f28f8885d03f3e6654dac87a13891e6" title="Create a new node_type.">create_type</a> <p> <a href="http://boost.org/libs/smart_ptr/shared_ptr.htm">http://boost.org/libs/smart_ptr/shared_ptr.htm</a> </dd></dl> <p>Implemented in <a class="el" href="classopenvrml_1_1null__node__metatype.html#f91ca2664333fd712fb74cb6410a4d25">openvrml::null_node_metatype</a>, and <a class="el" href="classopenvrml_1_1script__node__metatype.html#897cfd9bde3a5d04a3f53618023157d9">openvrml::script_node_metatype</a>.</p> </div> </div><p> <a class="anchor" name="6e071f78ccb88ea30f475cfd6ac3cd62"></a><!-- doxytag: member="openvrml::node_metatype::do_shutdown" ref="6e071f78ccb88ea30f475cfd6ac3cd62" args="(double time)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void openvrml::node_metatype::do_shutdown </td> <td>(</td> <td class="paramtype">double </td> <td class="paramname"> <em>time</em> </td> <td> ) </td> <td> throw ()<code> [private, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Shut down. <p> This function is called by <code><a class="el" href="classopenvrml_1_1node__metatype.html#472509305b3623ab5d5c2e7eab546aba" title="Shut down.">shutdown</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> </td><td valign="top"><em>time</em> </td><td>the current time. </td></tr> </table> </dl> </div> </div><p> <hr><h2>Member Data Documentation</h2> <a class="anchor" name="9bbff54e54d3ed6c0a86363e100afb24"></a><!-- doxytag: member="openvrml::node_metatype::id_" ref="9bbff54e54d3ed6c0a86363e100afb24" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const std::string <a class="el" href="classopenvrml_1_1node__metatype.html#9bbff54e54d3ed6c0a86363e100afb24">openvrml::node_metatype::id_</a><code> [private]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> <code><a class="el" href="classopenvrml_1_1node__metatype.html" title="A class object for node instances.">node_metatype</a></code> identifier. <p> <p><b>For internal use only.</b></p> <p> </p> </div> </div><p> <a class="anchor" name="95ece2e95e7ab26f63db6d2ab2e04d6f"></a><!-- doxytag: member="openvrml::node_metatype::browser_" ref="95ece2e95e7ab26f63db6d2ab2e04d6f" 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_1node__metatype.html#95ece2e95e7ab26f63db6d2ab2e04d6f">openvrml::node_metatype::browser_</a><code> [private]</code> </td> </tr> </table> </div> <div class="memdoc"> <p> The <code><a class="el" href="classopenvrml_1_1browser.html" title="Encapsulates a VRML browser.">browser</a></code> associated with this <code><a class="el" href="classopenvrml_1_1node__metatype.html" title="A class object for node instances.">node_metatype</a></code>. <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&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:20 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>