Home | Download | Screen shots | Discussion | Documentation
--- | --- | --- | --- | ---

# openvrml::child_node Class Reference

Abstract base class for child nodes. More...

`#include <openvrml/node.h>`

Inheritance diagram for openvrml::child_node:
[legend]

List of all members.

## Public Member Functions

virtual | ~child_node ()=0 throw ()
| Destructor.
void | relocate () throw ( std::bad_alloc )
| Called when the node is relocated to a new position in the scene graph.
void | render_child (viewer &v, rendering_context context)
| Render the node.

## Protected Member Functions

| child_node (const node_type &type, const boost::shared_ptr< openvrml::scope > &scope) throw ()
| Constructor.

## Private Member Functions

virtual child_node * | to_child () throw ()
| Cast to a `child_node`.
virtual void | do_relocate () throw ( std::bad_alloc )
| `child_node` subclass-specific relocation update.
virtual void | do_render_child (viewer &v, rendering_context context)
| `render_child` implementation.

## Detailed Description

Abstract base class for child nodes.

## Constructor & Destructor Documentation

openvrml::child_node::~child_node | ( |  | ) | throw ()`[pure virtual]`

Destructor.

openvrml::child_node::child_node | ( | const node_type & | type,
|  | const boost::shared_ptr< openvrml::scope > & | scope |
| ) |  |  | throw ()`[protected]`

Constructor.

Parameters:

  `[in]` | type | the `node_type` associated with the node.
  `[in]` | scope | the `scope` the node belongs to.

## Member Function Documentation

void openvrml::child_node::relocate | ( |  | ) | throw ( std::bad_alloc )

Called when the node is relocated to a new position in the scene graph.

This function delegates to the virtual function `do_relocate`. `relocate` should be called by eventIn handlers that receive nodes.

Exceptions:

  | std::bad_alloc | if memory allocation fails.

void openvrml::child_node::render_child | ( | viewer & | v,
|  | rendering_context | context |
| ) |  |  |

Render the node.

This function delegates to `do_render_child`.

Parameters:

  `[in,out]` | v | viewer implementation responsible for actually doing the drawing.
  `[in]` | context | generic context argument; holds things like the accumulated modelview transform.

openvrml::child_node * openvrml::child_node::to_child | ( |  | ) | throw ()`[private, virtual]`

Cast to a `child_node`.

Returns:
  a pointer to this `child_node`.

Reimplemented from openvrml::node.

void openvrml::child_node::do_relocate | ( |  | ) | throw ( std::bad_alloc )`[private, virtual]`

`child_node` subclass-specific relocation update.

This method is called by `relocate`. Subclasses of `child_node` should override this function for any subclass-specific updates that need to be performed following relocation of a `child_node` to a new position in the scene graph (for example, updating a `node_path`).

The default implementation of this method does nothing.

void openvrml::child_node::do_render_child | ( | viewer & | v,
|  | rendering_context | context |
| ) |  |  | `[private, virtual]`

`render_child` implementation.

Rendered `child_nodes` should override this method.

Parameters:

  `[in,out]` | v | viewer implementation responsible for actually doing the drawing.
  `[in]` | context | generic context argument; holds things like the accumulated modelview transform.

Reimplemented in openvrml::script_node.