openvrml::viewer Class Reference

#include <openvrml/viewer.h>

Inheritance diagram for openvrml::viewer:

Inheritance graph
[legend]
List of all members.

Detailed Description

Map the scene graph to the underlying graphics library.


Public Types

enum  {
  mask_none = 0,
  mask_ccw = 1,
  mask_convex = 2,
  mask_solid = 4,
  mask_bottom = 8,
  mask_top = 16,
  mask_side = 32,
  mask_color_per_vertex = 64,
  mask_normal_per_vertex = 128
}
enum  rendering_mode {
  draw_mode,
  pick_mode
}
 The rendering mode. More...
typedef long object_t
 An object handle.
typedef long texture_object_t
 An texture object handle.

Public Member Functions

virtual ~viewer ()=0 throw ()
 Destroy.
openvrml::browserbrowser () const throw ()
rendering_mode mode ()
 Get the rendering mode.
double frame_rate ()
 Get the frame rate.
void reset_user_navigation ()
 Return view to the last bound Viewpoint.
object_t begin_object (const char *id, bool retain=false)
 Begin a display list.
void end_object ()
 End a display list.
object_t insert_background (const std::vector< float > &ground_angle, const std::vector< color > &ground_color, const std::vector< float > &sky_angle, const std::vector< color > &sky_color, const image &front, const image &back, const image &left, const image &right, const image &top, const image &bottom)
 Insert a background into a display list.
object_t insert_box (const vec3f &size)
 Insert a box into a display list.
object_t insert_cone (float height, float radius, bool bottom, bool side)
 Insert a cone into a display list.
object_t insert_cylinder (float height, float radius, bool bottom, bool side, bool top)
 Insert a cylinder into a display list.
object_t insert_elevation_grid (unsigned int mask, const std::vector< float > &height, int32 x_dimension, int32 z_dimension, float x_spacing, float z_spacing, const std::vector< color > &color, const std::vector< vec3f > &normal, const std::vector< vec2f > &tex_coord)
 Insert an elevation grid into a display list.
object_t insert_extrusion (unsigned int mask, const std::vector< vec3f > &spine, const std::vector< vec2f > &cross_section, const std::vector< rotation > &orientation, const std::vector< vec2f > &scale)
 Insert an extrusion into a display list.
object_t insert_line_set (const std::vector< vec3f > &coord, const std::vector< int32 > &coord_index, bool color_per_vertex, const std::vector< color > &color, const std::vector< int32 > &color_index)
 Insert a line set into a display list.
object_t insert_point_set (const std::vector< vec3f > &coord, const std::vector< color > &color)
 Insert a point set into a display list.
object_t insert_shell (unsigned int mask, const std::vector< vec3f > &coord, const std::vector< int32 > &coord_index, const std::vector< color > &color, const std::vector< int32 > &color_index, const std::vector< vec3f > &normal, const std::vector< int32 > &normal_index, const std::vector< vec2f > &tex_coord, const std::vector< int32 > &tex_coord_index)
 Insert a shell into a display list.
object_t insert_sphere (float radius)
 Insert a sphere into a display list.
object_t insert_dir_light (float ambient_intensity, float intensity, const color &color, const vec3f &direction)
 Insert a directional light into a display list.
object_t insert_point_light (float ambient_intensity, const vec3f &attenuation, const color &color, float intensity, const vec3f &location, float radius)
 Insert a point light into a display list.
object_t insert_spot_light (float ambient_intensity, const vec3f &attenuation, float beam_width, const color &color, float cut_off_angle, const vec3f &direction, float intensity, const vec3f &location, float radius)
 Insert a point light into a display list.
object_t insert_reference (object_t existing_object)
 Insert a reference to an existing object into a display list.
void remove_object (object_t ref)
 Remove an object from the display list.
void enable_lighting (bool val)
 Enable/disable lighting.
void set_fog (const color &color, float visibility_range, const char *type)
 Set the fog.
void set_color (const color &rgb, float a=1.0)
 Set the color.
void set_material (float ambient_intensity, const color &diffuse_color, const color &emissive_color, float shininess, const color &specular_color, float transparency)
 Set the material.
void set_material_mode (size_t tex_components, bool geometry_color)
 Set the material mode.
void set_sensitive (node *object)
 Indicate that a node should be sensitive to the pointing device.
texture_object_t insert_texture (const image &img, bool repeat_s, bool repeat_t, bool retainHint=false)
 Create a texture object.
void insert_texture_reference (texture_object_t ref, size_t components)
 Insert a texture into the display list from an existing handle.
void remove_texture_object (texture_object_t ref)
 Remove a texture from the display list.
void set_texture_transform (const vec2f &center, float rotation, const vec2f &scale, const vec2f &translation)
 Set the texture transform.
void set_frustum (float field_of_view, float avatar_size, float visibility_limit)
 Set the frustum.
void set_viewpoint (const vec3f &position, const rotation &orientation, float avatar_size, float visibility_limit)
 Set the viewpoint.
void transform (const mat4f &mat)
 Transform the modelview.
void transform_points (size_t nPoints, vec3f *point) const
 Transform points by the current modelview matrix.
const openvrml::frustumfrustum () const
 The frustum.
void frustum (const openvrml::frustum &f)
 Set the frustum.
bounding_volume::intersection intersect_view_volume (const bounding_volume &bvolume) const
 Intersect the given bounding volume with the view volume.
void draw_bounding_sphere (const bounding_sphere &bs, bounding_volume::intersection intersection)
 Draw a bounding sphere.

Protected Member Functions

 viewer () throw ()
 Construct.
virtual bounding_volume::intersection do_intersect_view_volume (const bounding_volume &bvolume) const
 Intersect the given bounding volume with the view volume.
virtual const openvrml::frustumdo_frustum () const
virtual void do_frustum (const openvrml::frustum &f)
 Set the frustum.

Protected Attributes

openvrml::frustum frustum_
 The frustum.

Private Member Functions

virtual rendering_mode do_mode ()=0
 Get the rendering mode.
virtual double do_frame_rate ()=0
 Get the frame rate.
virtual void do_reset_user_navigation ()=0
 Return view to the last bound Viewpoint.
virtual object_t do_begin_object (const char *id, bool retain=false)=0
 Begin a display list.
virtual void do_end_object ()=0
 End a display list.
virtual object_t do_insert_background (const std::vector< float > &ground_angle, const std::vector< color > &ground_color, const std::vector< float > &sky_angle, const std::vector< color > &sky_color, const image &front, const image &back, const image &left, const image &right, const image &top, const image &bottom)=0
 Insert a background into a display list.
virtual object_t do_insert_box (const vec3f &size)=0
 Insert a box into a display list.
virtual object_t do_insert_cone (float height, float radius, bool bottom, bool side)=0
 Insert a cone into a display list.
virtual object_t do_insert_cylinder (float height, float radius, bool bottom, bool side, bool top)=0
 Insert a cylinder into a display list.
virtual object_t do_insert_elevation_grid (unsigned int mask, const std::vector< float > &height, int32 x_dimension, int32 z_dimension, float x_spacing, float z_spacing, const std::vector< color > &color, const std::vector< vec3f > &normal, const std::vector< vec2f > &tex_coord)=0
 Insert an elevation grid into a display list.
virtual object_t do_insert_extrusion (unsigned int mask, const std::vector< vec3f > &spine, const std::vector< vec2f > &cross_section, const std::vector< rotation > &orientation, const std::vector< vec2f > &scale)=0
 Insert an extrusion into a display list.
virtual object_t do_insert_line_set (const std::vector< vec3f > &coord, const std::vector< int32 > &coord_index, bool color_per_vertex, const std::vector< color > &color, const std::vector< int32 > &color_index)=0
 Insert a line set into a display list.
virtual object_t do_insert_point_set (const std::vector< vec3f > &coord, const std::vector< color > &color)=0
 Insert a point set into a display list.
virtual object_t do_insert_shell (unsigned int mask, const std::vector< vec3f > &coord, const std::vector< int32 > &coord_index, const std::vector< color > &color, const std::vector< int32 > &color_index, const std::vector< vec3f > &normal, const std::vector< int32 > &normal_index, const std::vector< vec2f > &tex_coord, const std::vector< int32 > &tex_coord_index)=0
 Insert a shell into a display list.
virtual object_t do_insert_sphere (float radius)=0
 Insert a sphere into a display list.
virtual object_t do_insert_dir_light (float ambient_intensity, float intensity, const color &color, const vec3f &direction)=0
 Insert a directional light into a display list.
virtual object_t do_insert_point_light (float ambient_intensity, const vec3f &attenuation, const color &color, float intensity, const vec3f &location, float radius)=0
 Insert a point light into a display list.
virtual object_t do_insert_spot_light (float ambient_intensity, const vec3f &attenuation, float beam_width, const color &color, float cut_off_angle, const vec3f &direction, float intensity, const vec3f &location, float radius)=0
 Insert a point light into a display list.
virtual object_t do_insert_reference (object_t existing_object)=0
 Insert a reference to an existing object into a display list.
virtual void do_remove_object (object_t ref)=0
 Remove an object from the display list.
virtual void do_enable_lighting (bool val)=0
 Enable/disable lighting.
virtual void do_set_fog (const color &color, float visibility_range, const char *type)=0
 Set the fog.
virtual void do_set_color (const color &rgb, float a=1.0)=0
 Set the color.
virtual void do_set_material (float ambient_intensity, const color &diffuse_color, const color &emissive_color, float shininess, const color &specular_color, float transparency)=0
 Set the material.
virtual void do_set_material_mode (size_t tex_components, bool geometry_color)=0
 Set the material mode.
virtual void do_set_sensitive (node *object)=0
 Indicate that a node should be sensitive to the pointing device.
virtual texture_object_t do_insert_texture (const image &img, bool repeat_s, bool repeat_t, bool retainHint=false)=0
 Create a texture object.
virtual void do_insert_texture_reference (texture_object_t ref, size_t components)=0
 Insert a texture into the display list from an existing handle.
virtual void do_remove_texture_object (texture_object_t ref)=0
 Remove a texture from the display list.
virtual void do_set_texture_transform (const vec2f &center, float rotation, const vec2f &scale, const vec2f &translation)=0
 Set the texture transform.
virtual void do_set_frustum (float field_of_view, float avatar_size, float visibility_limit)=0
virtual void do_set_viewpoint (const vec3f &position, const rotation &orientation, float avatar_size, float visibility_limit)=0
 Set the viewpoint.
virtual void do_transform (const mat4f &mat)=0
 Transform the modelview.
virtual void do_transform_points (size_t nPoints, vec3f *point) const=0
 Transform points by the current modelview matrix.
virtual void do_draw_bounding_sphere (const bounding_sphere &bs, bounding_volume::intersection intersection)=0
 Draw a bounding sphere.

Private Attributes

openvrml::browserbrowser_
 A pointer to the browser with which the viewer is currently associated.

Friends

class browser
 A pointer to the browser with which the viewer is currently associated.

Member Typedef Documentation

An object handle.

An texture object handle.


Member Enumeration Documentation

The rendering mode.

Enumerator:
draw_mode  Draw mode.
pick_mode  Pick mode.


Constructor & Destructor Documentation

openvrml::viewer::~viewer (  )  throw () [pure virtual]

Destroy.

Implemented in openvrml::gl::viewer.

openvrml::viewer::viewer (  )  throw () [protected]

Construct.

Reimplemented in openvrml::gl::viewer.


Member Function Documentation

openvrml::viewer::rendering_mode openvrml::viewer::mode (  ) 

Get the rendering mode.

This function delegates to viewer::do_mode.

Returns:
the rendering mode.

double openvrml::viewer::frame_rate (  ) 

Get the frame rate.

This function delegates to viewer::do_frame_rate.

Returns:
the frame rate.

void openvrml::viewer::reset_user_navigation (  ) 

Return view to the last bound Viewpoint.

This function delegates to viewer::do_reset_user_navigation.

openvrml::viewer::object_t openvrml::viewer::begin_object ( const char *  id,
bool  retain = false 
)

Begin a display list.

Parameters:
[in] id object identifier.
[in] retain whether the object should be retained for reuse.
This function delegates to viewer::do_begin_object.

Returns:
the display object identifier.

void openvrml::viewer::end_object (  ) 

End a display list.

This function delegates to viewer::do_end_object.

openvrml::viewer::object_t openvrml::viewer::insert_background ( const std::vector< float > &  ground_angle,
const std::vector< color > &  ground_color,
const std::vector< float > &  sky_angle,
const std::vector< color > &  sky_color,
const image front,
const image back,
const image left,
const image right,
const image top,
const image bottom 
)

Insert a background into a display list.

This function delegates to viewer::do_insert_background.

Parameters:
[in] ground_angle ground angles.
[in] ground_color ground colors.
[in] sky_angle sky angles.
[in] sky_color sky colors.
[in] front front texture.
[in] back back texture.
[in] left left texture.
[in] right right texture.
[in] top top texture.
[in] bottom bottom texture.
Returns:
display object identifier.

openvrml::viewer::object_t openvrml::viewer::insert_box ( const vec3f size  ) 

Insert a box into a display list.

This function delegates to viewer::do_insert_box.

Parameters:
[in] size box dimensions.
Returns:
display object identifier.

openvrml::viewer::object_t openvrml::viewer::insert_cone ( float  height,
float  radius,
bool  bottom,
bool  side 
)

Insert a cone into a display list.

This function delegates to viewer::do_insert_cone.

Parameters:
[in] height height.
[in] radius radius at base.
[in] bottom show the bottom.
[in] side show the side.
Returns:
display object identifier.

openvrml::viewer::object_t openvrml::viewer::insert_cylinder ( float  height,
float  radius,
bool  bottom,
bool  side,
bool  top 
)

Insert a cylinder into a display list.

This function delegates to viewer::do_insert_cylinder.

Parameters:
[in] height height.
[in] radius radius.
[in] bottom show the bottom.
[in] side show the side.
[in] top show the top.
Returns:
display object identifier.

openvrml::viewer::object_t openvrml::viewer::insert_elevation_grid ( unsigned int  mask,
const std::vector< float > &  height,
int32  x_dimension,
int32  z_dimension,
float  x_spacing,
float  z_spacing,
const std::vector< color > &  color,
const std::vector< vec3f > &  normal,
const std::vector< vec2f > &  tex_coord 
)

Insert an elevation grid into a display list.

This function delegates to viewer::do_insert_elevation_grid.

Parameters:
[in] mask 
[in] height height field.
[in] x_dimension vertices in the x direction.
[in] z_dimension vertices in the z direction.
[in] x_spacing distance between vertices in the x direction.
[in] z_spacing distance between vertices in the z direction.
[in] color colors.
[in] normal normals.
[in] tex_coord texture coordinates.
Returns:
display object identifier.

openvrml::viewer::object_t openvrml::viewer::insert_extrusion ( unsigned int  mask,
const std::vector< vec3f > &  spine,
const std::vector< vec2f > &  cross_section,
const std::vector< rotation > &  orientation,
const std::vector< vec2f > &  scale 
)

Insert an extrusion into a display list.

This function delegates to viewer::do_insert_extrusion.

Parameters:
[in] mask 
[in] spine spine points.
[in] cross_section cross-sections.
[in] orientation cross-section orientations.
[in] scale cross-section scales.
Returns:
display object identifier.

openvrml::viewer::object_t openvrml::viewer::insert_line_set ( const std::vector< vec3f > &  coord,
const std::vector< int32 > &  coord_index,
bool  color_per_vertex,
const std::vector< color > &  color,
const std::vector< int32 > &  color_index 
)

Insert a line set into a display list.

This function delegates to viewer::do_insert_line_set.

Parameters:
[in] coord coordinates.
[in] coord_index coordinate indices.
[in] color_per_vertex whether colors are applied per-vertex or per-face.
[in] color colors.
[in] color_index color indices.
Returns:
display object identifier.

openvrml::viewer::object_t openvrml::viewer::insert_point_set ( const std::vector< vec3f > &  coord,
const std::vector< color > &  color 
)

Insert a point set into a display list.

This function delegates to viewer::insert_point_set.

Parameters:
[in] coord points.
[in] color colors.
Returns:
display object identifier.

openvrml::viewer::object_t openvrml::viewer::insert_shell ( unsigned int  mask,
const std::vector< vec3f > &  coord,
const std::vector< int32 > &  coord_index,
const std::vector< color > &  color,
const std::vector< int32 > &  color_index,
const std::vector< vec3f > &  normal,
const std::vector< int32 > &  normal_index,
const std::vector< vec2f > &  tex_coord,
const std::vector< int32 > &  tex_coord_index 
)

Insert a shell into a display list.

This function delegates to viewer::do_insert_shell.

Parameters:
[in] mask 
[in] coord coordinates.
[in] coord_index coordinate indices.
[in] color colors.
[in] color_index color indices.
[in] normal normals.
[in] normal_index normal indices.
[in] tex_coord texture coordinates.
[in] tex_coord_index texture coordinate indices.
Returns:
display object identifier.

openvrml::viewer::object_t openvrml::viewer::insert_sphere ( float  radius  ) 

Insert a sphere into a display list.

This function delegates to viewer::do_insert_sphere.

Parameters:
[in] radius sphere radius.
Returns:
display object identifier.

openvrml::viewer::object_t openvrml::viewer::insert_dir_light ( float  ambient_intensity,
float  intensity,
const color color,
const vec3f direction 
)

Insert a directional light into a display list.

This function delegates to viewer::do_insert_dir_light.

Parameters:
[in] ambient_intensity ambient intensity.
[in] intensity intensity.
[in] color color.
[in] direction direction.
Returns:
display object identifier.

openvrml::viewer::object_t openvrml::viewer::insert_point_light ( float  ambient_intensity,
const vec3f attenuation,
const color color,
float  intensity,
const vec3f location,
float  radius 
)

Insert a point light into a display list.

This function delegates to viewer::do_insert_point_light.

Parameters:
[in] ambient_intensity ambient intensity.
[in] attenuation attenuation.
[in] color color.
[in] intensity intensity.
[in] location location.
[in] radius radius.
Returns:
display object identifier.

openvrml::viewer::object_t openvrml::viewer::insert_spot_light ( float  ambient_intensity,
const vec3f attenuation,
float  beam_width,
const color color,
float  cut_off_angle,
const vec3f direction,
float  intensity,
const vec3f location,
float  radius 
)

Insert a point light into a display list.

This function delegates to viewer::do_insert_spot_light.

Parameters:
[in] ambient_intensity ambient intensity.
[in] attenuation attenuation.
[in] beam_width beam width.
[in] color color.
[in] cut_off_angle cut-off angle.
[in] direction direction.
[in] intensity intensity.
[in] location location.
[in] radius radius.
Returns:
display object identifier.

openvrml::viewer::object_t openvrml::viewer::insert_reference ( object_t  existing_object  ) 

Insert a reference to an existing object into a display list.

This function delegates to viewer::do_insert_reference.

Returns:
display object identifier.

void openvrml::viewer::remove_object ( object_t  ref  ) 

Remove an object from the display list.

This function delegates to viewer::do_remove_object.

Parameters:
[in] ref object handle.

void openvrml::viewer::enable_lighting ( bool  val  ) 

Enable/disable lighting.

This function delegates to viewer::do_enable_lighting.

Parameters:
[in] val whether lighting should be enabled.

void openvrml::viewer::set_fog ( const color color,
float  visibility_range,
const char *  type 
)

Set the fog.

This function delegates to viewer::do_set_fog.

Parameters:
[in] color fog color.
[in] visibility_range the distance at which objects are fully obscured by fog.
[in] type fog type.

void openvrml::viewer::set_color ( const color rgb,
float  a = 1.0 
)

Set the color.

This function delegates to viewer::do_set_color.

Parameters:
[in] rgb red, green, and blue components.
[in] a alpha (transparency) component.

void openvrml::viewer::set_material ( float  ambient_intensity,
const color diffuse_color,
const color emissive_color,
float  shininess,
const color specular_color,
float  transparency 
)

Set the material.

This function delegates to viewer::do_set_material.

Parameters:
[in] ambient_intensity ambient intensity.
[in] diffuse_color diffuse color.
[in] emissive_color emissive color.
[in] shininess shininess.
[in] specular_color specular color.
[in] transparency transparency.

void openvrml::viewer::set_material_mode ( size_t  tex_components,
bool  geometry_color 
)

Set the material mode.

This function delegates to viewer::do_set_material_mode.

Parameters:
[in] tex_components texture components.
[in] geometry_color geometry color.

void openvrml::viewer::set_sensitive ( node object  ) 

Indicate that a node should be sensitive to the pointing device.

This function delegates to viewer::do_set_sensitive.

Parameters:
[in] object a node.

openvrml::viewer::texture_object_t openvrml::viewer::insert_texture ( const image img,
bool  repeat_s,
bool  repeat_t,
bool  retainHint = false 
)

Create a texture object.

This function delegates to viewer::do_insert_texture.

Parameters:
[in] img image.
[in] repeat_s repeat in the S direction.
[in] repeat_t repeat in the T direction.
[in] retainHint whether the texture is likely to be reused.
Returns:
a handle to the inserted texture.

void openvrml::viewer::insert_texture_reference ( texture_object_t  ref,
size_t  components 
)

Insert a texture into the display list from an existing handle.

This function delegates to viewer::do_insert_texture_reference.

Parameters:
[in] ref texture handle.
[in] components number of components.