Home | Download | Screen shots | Discussion | Documentation |
---|
#include <openvrml/browser.h>
Classes | |
class | eventout |
An event_emitter along with the emitted value. More... | |
class | metadata_changed_emitter |
metadata_changed event emitter. More... | |
class | script_node_type |
Type objects for script_nodes . More... | |
class | set_metadata_listener |
set_metadata event listener. More... | |
class | set_url_listener_t |
set_url event listener. More... | |
class | url_changed_emitter |
url_changed event emitter. More... | |
Public Types | |
typedef std::map< std::string, boost::shared_ptr< field_value > > | field_value_map_t |
A std::map that keys field values on their field name. | |
typedef boost::shared_ptr < openvrml::event_listener > | event_listener_ptr |
Reference-counted smart pointer to an event_listener. | |
typedef std::map< std::string, event_listener_ptr > | event_listener_map_t |
Map of event listeners. | |
typedef boost::shared_ptr < eventout > | eventout_ptr |
Reference-counted smart pointer to an eventout . | |
typedef std::map< std::string, eventout_ptr > | eventout_map_t |
Map of eventout instances. | |
Public Member Functions | |
script_node (script_node_metatype &class_, const boost::shared_ptr< openvrml::scope > &scope, const node_interface_set &interfaces, const initial_value_map &initial_values) throw ( unsupported_interface , std::bad_cast , std::bad_alloc , std::invalid_argument ) | |
Construct. | |
virtual | ~script_node () throw () |
Destroy. | |
void | update (double current_time) |
Update the script_node for the current time. | |
const event_listener_map_t & | event_listener_map () const throw () |
Event listener map accessor. | |
const field_value_map_t & | field_value_map () const throw () |
Field value map accessor. | |
const eventout_map_t & | eventout_map () const throw () |
eventOut map accessor. | |
Private Types | |
typedef script_event_listener < sfbool > | sfbool_listener |
sfbool event listener. | |
typedef script_event_listener < sfcolor > | sfcolor_listener |
sfcolor event listener. | |
typedef script_event_listener < sfcolorrgba > | sfcolorrgba_listener |
sfcolorrgba event listener. | |
typedef script_event_listener < sffloat > | sffloat_listener |
sffloat event listener. | |
typedef script_event_listener < sfdouble > | sfdouble_listener |
sfdouble event listener. | |
typedef script_event_listener < sfimage > | sfimage_listener |
sfimage event listener. | |
typedef script_event_listener < sfint32 > | sfint32_listener |
sfint32 event listener. | |
typedef script_event_listener < sfnode > | sfnode_listener |
sfnode event listener. | |
typedef script_event_listener < sfrotation > | sfrotation_listener |
sfrotation event listener. | |
typedef script_event_listener < sfstring > | sfstring_listener |
sfstring event listener. | |
typedef script_event_listener < sftime > | sftime_listener |
sftime event listener. | |
typedef script_event_listener < sfvec2f > | sfvec2f_listener |
sfvec2f event listener. | |
typedef script_event_listener < sfvec2d > | sfvec2d_listener |
sfvec2d event listener. | |
typedef script_event_listener < sfvec3f > | sfvec3f_listener |
sfvec3f event listener. | |
typedef script_event_listener < sfvec3d > | sfvec3d_listener |
sfvec3d event listener. | |
typedef script_event_listener < mfbool > | mfbool_listener |
mfbool event listener. | |
typedef script_event_listener < mfcolor > | mfcolor_listener |
mfcolor event listener. | |
typedef script_event_listener < mfcolorrgba > | mfcolorrgba_listener |
mfcolorrgba event listener. | |
typedef script_event_listener < mffloat > | mffloat_listener |
mffloat event listener. | |
typedef script_event_listener < mfdouble > | mfdouble_listener |
mfdouble event listener. | |
typedef script_event_listener < mfimage > | mfimage_listener |
mfimage event listener. | |
typedef script_event_listener < mfint32 > | mfint32_listener |
mfint32 event listener. | |
typedef script_event_listener < mfnode > | mfnode_listener |
mfnode event listener. | |
typedef script_event_listener < mfrotation > | mfrotation_listener |
mfrotation event listener. | |
typedef script_event_listener < mfstring > | mfstring_listener |
mfstring event listener. | |
typedef script_event_listener < mftime > | mftime_listener |
mftime event listener. | |
typedef script_event_listener < mfvec2f > | mfvec2f_listener |
mfvec2f event listener. | |
typedef script_event_listener < mfvec2d > | mfvec2d_listener |
mfvec2d event listener. | |
typedef script_event_listener < mfvec3f > | mfvec3f_listener |
mfvec3f event listener. | |
typedef script_event_listener < mfvec3d > | mfvec3d_listener |
mfvec3d event listener. | |
Private Member Functions | |
std::auto_ptr< script > | create_script () throw ( no_alternative_url , std::bad_alloc ) |
Create a script object. | |
void | assign_with_self_ref_check (const sfnode &, sfnode &) const throw () |
Special assignment function to take into account the fact that Script nodes can be self-referential. | |
void | assign_with_self_ref_check (const mfnode &, mfnode &) const throw () |
Special assignment function to take into account the fact that Script nodes can be self referential. | |
virtual script_node * | to_script () throw () |
Return a pointer to this script_node . | |
virtual void | do_initialize (double timestamp) throw ( std::bad_alloc ) |
Initialize. | |
virtual const field_value & | do_field (const std::string &id) const throw ( unsupported_interface ) |
Get the value of a field. | |
virtual openvrml::event_listener & | do_event_listener (const std::string &id) throw ( unsupported_interface ) |
Get an event listener. | |
virtual openvrml::event_emitter & | do_event_emitter (const std::string &id) throw ( unsupported_interface ) |
Get an event emitter. | |
virtual void | do_shutdown (double timestamp) throw () |
Called by node::shutdown . | |
virtual void | do_render_child (viewer &v, rendering_context context) |
node::render_child implementation. | |
Static Private Member Functions | |
static const boost::shared_ptr < openvrml::event_listener > | create_listener (field_value::type_id type, const std::string &id, script_node &node) throw ( std::bad_alloc ) |
Create a Script node event listener. | |
static std::auto_ptr < openvrml::event_emitter > | create_emitter (script_node &node, const field_value &value) throw ( std::bad_alloc ) |
Create a Script node event emitter. | |
Private Attributes | |
script_node_type | type_ |
Type object for the script_node instance. | |
set_metadata_listener | set_metadata_listener_ |
set_metadata eventIn handler. | |
sfnode | metadata_ |
metadata field value. | |
metadata_changed_emitter | metadata_changed_emitter_ |
metadata_changed eventOut emitter. | |
sfbool | direct_output |
directOutput field. | |
sfbool | must_evaluate |
mustEvaluate field. | |
set_url_listener_t | set_url_listener |
set_url eventIn handler. | |
mfstring | url_ |
url exposedField . | |
url_changed_emitter | url_changed_emitter_ |
url_changed eventOut emitter. | |
field_value_map_t | field_value_map_ |
Maps user-defined field names to their values. | |
event_listener_map_t | event_listener_map_ |
Map of event listeners. | |
eventout_map_t | eventout_map_ |
Map of eventout instances. | |
boost::scoped_ptr< script > | script_ |
A pointer to a script object. | |
int | events_received |
A count of the number of events received since update was called. | |
Static Private Attributes | |
static script_factory_registry | script_factory_registry_ |
Registry of script engine modules. | |
Friends | |
class | script |
Abstract base class for script runtimes. |
A std::map
that keys field values on their field name.
Map of event listeners.
For internal use only.
Reference-counted smart pointer to an eventout
.
Map of eventout
instances.
openvrml::script_node::sfbool_listener [private] |
openvrml::script_node::sfcolor_listener [private] |
openvrml::script_node::sffloat_listener [private] |
openvrml::script_node::sfdouble_listener [private] |
openvrml::script_node::sfimage_listener [private] |
openvrml::script_node::sfint32_listener [private] |
openvrml::script_node::sfnode_listener [private] |
openvrml::script_node::sfstring_listener [private] |
openvrml::script_node::sftime_listener [private] |
openvrml::script_node::sfvec2f_listener [private] |
openvrml::script_node::sfvec2d_listener [private] |
openvrml::script_node::sfvec3f_listener [private] |
openvrml::script_node::sfvec3d_listener [private] |
openvrml::script_node::mfbool_listener [private] |
openvrml::script_node::mfcolor_listener [private] |
openvrml::script_node::mffloat_listener [private] |
openvrml::script_node::mfdouble_listener [private] |
openvrml::script_node::mfimage_listener [private] |
openvrml::script_node::mfint32_listener [private] |
openvrml::script_node::mfnode_listener [private] |
openvrml::script_node::mfstring_listener [private] |
openvrml::script_node::mftime_listener [private] |
openvrml::script_node::mfvec2f_listener [private] |
openvrml::script_node::mfvec2d_listener [private] |
openvrml::script_node::mfvec3f_listener [private] |
openvrml::script_node::mfvec3d_listener [private] |
openvrml::script_node::script_node | ( | script_node_metatype & | class_, | |
const boost::shared_ptr< openvrml::scope > & | scope, | |||
const node_interface_set & | interfaces, | |||
const initial_value_map & | initial_values | |||
) | throw ( unsupported_interface , std::bad_cast , std::bad_alloc , std::invalid_argument ) |
Construct.
Unlike other concrete node types, which are always instantiated via node_type::create_node
, the script_node
constructor is called directly when creating a new script_node
from scratch. However, a script_node
can be duplicated (or “cloned”) by calling node_type::create_node
on type
of a script_node
instance. This provides a consistent interface for cloning any node, regardless of its type. OpenVRML uses this internally when instantiating PROTOs
.
[in] | class_ | the script_node_metatype . Typically there is one script_node_metatype per browser instance. |
[in] | scope | the scope to which the node should belong. |
[in] | interfaces | a node_interface_set containing specifications of user-defined fields , eventIns , and eventOuts particular to the script_node instance. |
[in] | initial_values | a map of initial values for fields of the script_node . |
unsupported_interface | if initial_values specifies a field that is not supported by the script_node . | |
std::bad_cast | if initial_values includes a field value that is the wrong type for the specified field. | |
std::bad_alloc | if memory allocation fails. | |
std::invalid_argument | if:
|
openvrml::script_node::~script_node | ( | ) | throw () [virtual] |
Destroy.
const boost::shared_ptr< openvrml::event_listener > openvrml::script_node::create_listener | ( | field_value::type_id | type, | |
const std::string & | id, | |||
script_node & | node | |||
) | throw ( std::bad_alloc ) [static, private] |
Create a Script node event listener.
For internal use only.
[in] | type | the type of listener to create. |
[in] | id | eventIn identifier. |
[in] | node | the containing script_node. |
std::bad_alloc | if memory allocation fails. |
std::auto_ptr< openvrml::event_emitter > openvrml::script_node::create_emitter | ( | script_node & | node, | |
const field_value & | value | |||
) | throw ( std::bad_alloc ) [static, private] |
Create a Script node event emitter.
For internal use only.
[in] | node | the containing script_node . |
[in] | value | the node field value associated with the emitter. |
std::bad_alloc | if memory allocation fails. |
void openvrml::script_node::update | ( | double | current_time | ) |
const openvrml::script_node::event_listener_map_t & openvrml::script_node::event_listener_map | ( | ) | const throw () |
Event listener map accessor.
const openvrml::script_node::field_value_map_t & openvrml::script_node::field_value_map | ( | ) | const throw () |
Field value map accessor.
field value map.
const openvrml::script_node::eventout_map_t & openvrml::script_node::eventout_map | ( | ) | const throw () |
eventOut
map accessor.
eventOut
map.
eventOut
map. std::auto_ptr< openvrml::script > openvrml::script_node::create_script | ( | ) | throw ( no_alternative_url , std::bad_alloc ) [private] |
void openvrml::script_node::assign_with_self_ref_check | ( | const sfnode & | inval, | |
sfnode & | retval | |||
) | const throw () [private] |
Special assignment function to take into account the fact that Script nodes can be self-referential.
For internal use only.
“Undo” the refcounting appropriately: decrement the refcount on any self-references we acquire ownership of and increment the refcount on any self-references for which ownership is relinquished.
void openvrml::script_node::assign_with_self_ref_check | ( | const mfnode & | inval, | |
mfnode & | retval | |||
) | const throw () [private] |
Special assignment function to take into account the fact that Script nodes can be self referential.
For internal use only.
“Undo” the refcounting appropriately: decrement the refcount on any self-references we acquire ownership of and increment the refcount on any self-references for which ownership is relinquished.
openvrml::script_node * openvrml::script_node::to_script | ( | ) | throw () [private, virtual] |
Return a pointer to this script_node
.
For internal use only.
script_node
. Reimplemented from openvrml::node.
void openvrml::script_node::do_initialize | ( | double | timestamp | ) | throw ( std::bad_alloc ) [private, virtual] |
Initialize.
[in] | timestamp | the current time. |
std::bad_alloc | if memory allocation fails. |
Reimplemented from openvrml::node.
const openvrml::field_value & openvrml::script_node::do_field | ( | const std::string & | id | ) | const throw ( unsupported_interface ) [private, virtual] |
Get the value of a field.
[in] | id | the name of the field to get. |
id
.unsupported_interface | if the node has no field id . |
Implements openvrml::node.
openvrml::event_listener & openvrml::script_node::do_event_listener | ( | const std::string & | id | ) | throw ( unsupported_interface ) [private, virtual] |
Get an event listener.
This method is called by node::event_listener
. Subclasses must implement this method.
[in] | id | eventIn identifier. |
unsupported_interface | if the node has no eventIn id . |
Implements openvrml::node.
openvrml::event_emitter & openvrml::script_node::do_event_emitter | ( | const std::string & | id | ) | throw ( unsupported_interface ) [private, virtual] |
Get an event emitter.
This method is called by node::event_emitter
.
[in] | id | eventOut identifier. |
unsupported_interface | if the node has no eventOut id . |
Implements openvrml::node.
void openvrml::script_node::do_shutdown | ( | double | timestamp | ) | throw () [private, virtual] |
Called by node::shutdown
.
[in] | timestamp | the current time. |
Reimplemented from openvrml::node.
void openvrml::script_node::do_render_child | ( | viewer & | v, | |
rendering_context | context | |||
) | [private, virtual] |
node::render_child
implementation.
[in,out] | v | viewer implementation responsible for actually doing the drawing. |
[in] | context | generic context argument; holds things like the accumulated modelview transform. |
Reimplemented from openvrml::child_node.
class openvrml::script_node::script [friend] |
Abstract base class for script runtimes.
For internal use only.
Type object for the script_node
instance.
For internal use only.
Script node
node_types
are significantly different from other node_types
. While most node_types
are shared by the node
instances they spawn, the script_node_type
is unique to a script_node
instance, and it shares the script_node
's lifetime. This reflects the fact that Script nodes
in VRML get their functionality by the addition of fields
, eventIns
, and eventOuts
on a per-instance basis.
For script_node
instances, node::node_type
is an alias for the script_node_type
object.
Reimplemented from openvrml::node.
openvrml::script_node::set_metadata_listener openvrml::script_node::set_metadata_listener_ [private] |
set_metadata
eventIn
handler.
metadata
field value.
openvrml::script_node::metadata_changed_emitter openvrml::script_node::metadata_changed_emitter_ [private] |
metadata_changed
eventOut
emitter.
directOutput
field.
For internal use only.
mustEvaluate
field.
For internal use only.
set_url
eventIn
handler.
For internal use only.
url
exposedField
.
For internal use only.
url_changed eventOut emitter.
For internal use only.
Maps user-defined field names to their values.
For internal use only.
Map of event listeners.
For internal use only.
openvrml::script * openvrml::script_node::script_ [private] |
int openvrml::script_node::events_received [private] |