|
From: <br...@us...> - 2009-04-03 06:28:34
|
Revision: 3880
http://openvrml.svn.sourceforge.net/openvrml/?rev=3880&view=rev
Author: braden
Date: 2009-04-03 06:28:17 +0000 (Fri, 03 Apr 2009)
Log Message:
-----------
Localize the management of display list and texture object references inside the renderer.
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/libopenvrml/openvrml/browser.cpp
trunk/src/libopenvrml/openvrml/node.cpp
trunk/src/libopenvrml/openvrml/node.h
trunk/src/libopenvrml/openvrml/viewer.cpp
trunk/src/libopenvrml/openvrml/viewer.h
trunk/src/libopenvrml-gl/openvrml/gl/viewer.cpp
trunk/src/libopenvrml-gl/openvrml/gl/viewer.h
trunk/src/node/vrml97/anchor.cpp
trunk/src/node/vrml97/appearance.cpp
trunk/src/node/vrml97/background.cpp
trunk/src/node/vrml97/background.h
trunk/src/node/vrml97/billboard.cpp
trunk/src/node/vrml97/box.cpp
trunk/src/node/vrml97/cone.cpp
trunk/src/node/vrml97/cylinder.cpp
trunk/src/node/vrml97/directional_light.cpp
trunk/src/node/vrml97/elevation_grid.cpp
trunk/src/node/vrml97/extrusion.cpp
trunk/src/node/vrml97/fog.cpp
trunk/src/node/vrml97/grouping_node_base.h
trunk/src/node/vrml97/image_texture.cpp
trunk/src/node/vrml97/indexed_face_set.cpp
trunk/src/node/vrml97/indexed_line_set.cpp
trunk/src/node/vrml97/movie_texture.cpp
trunk/src/node/vrml97/pixel_texture.cpp
trunk/src/node/vrml97/point_light.cpp
trunk/src/node/vrml97/point_set.cpp
trunk/src/node/vrml97/proximity_sensor.cpp
trunk/src/node/vrml97/shape.cpp
trunk/src/node/vrml97/sphere.cpp
trunk/src/node/vrml97/spot_light.cpp
trunk/src/node/vrml97/text.cpp
trunk/src/node/vrml97/texture_transform.cpp
trunk/src/node/vrml97/transform.cpp
trunk/src/node/vrml97/visibility_sensor.cpp
trunk/src/node/x3d-cad-geometry/indexed_quad_set.cpp
trunk/src/node/x3d-geometry2d/arc2d.cpp
trunk/src/node/x3d-geometry2d/arc_close2d.cpp
trunk/src/node/x3d-geometry2d/circle2d.cpp
trunk/src/node/x3d-geometry2d/disk2d.cpp
trunk/src/node/x3d-geometry2d/polyline2d.cpp
trunk/src/node/x3d-geometry2d/polypoint2d.cpp
trunk/src/node/x3d-geometry2d/rectangle2d.cpp
trunk/src/node/x3d-geometry2d/triangle_set2d.cpp
trunk/src/node/x3d-geospatial/geo_elevation_grid.cpp
trunk/src/node/x3d-grouping/static_group.cpp
trunk/src/node/x3d-nurbs/nurbs_curve.cpp
trunk/src/node/x3d-nurbs/nurbs_patch_surface.cpp
trunk/src/node/x3d-nurbs/nurbs_swept_surface.cpp
trunk/src/node/x3d-nurbs/nurbs_swung_surface.cpp
trunk/src/node/x3d-nurbs/nurbs_trimmed_surface.cpp
trunk/src/node/x3d-rendering/indexed_triangle_fan_set.cpp
trunk/src/node/x3d-rendering/indexed_triangle_set.cpp
trunk/src/node/x3d-rendering/indexed_triangle_strip_set.cpp
trunk/src/node/x3d-rendering/triangle_fan_set.cpp
trunk/src/node/x3d-rendering/triangle_set.cpp
trunk/src/node/x3d-rendering/triangle_strip_set.cpp
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2009-04-01 06:11:57 UTC (rev 3879)
+++ trunk/ChangeLog 2009-04-03 06:28:17 UTC (rev 3880)
@@ -1,3 +1,354 @@
+2009-04-03 Braden McDaniel <br...@en...>
+
+ Localize the management of display list and texture object
+ references inside the renderer.
+
+ * src/libopenvrml/openvrml/browser.cpp: Include viewer.h.
+ * src/libopenvrml/openvrml/node.cpp
+ (openvrml::geometry_node::geometry_node(const node_type &, const
+ boost::shared_ptr<openvrml::scope> &)): Removed geometry_reference
+ member.
+ (openvrml::geometry_node::render_geometry(viewer &,
+ rendering_context)): Return void; we don't need to manage the
+ geometry_reference anymore.
+ (openvrml::geometry_node::do_render_geometry(viewer &,
+ rendering_context)): Return void.
+ (openvrml::texture_node::texture_node(const node_type &, const
+ boost::shared_ptr<openvrml::scope> &)): Removed texture_reference
+ member.
+ (openvrml::texture_node::render_texture(viewer &)): Return void;
+ we don't need to manage the texture_reference anymore.
+ (openvrml::texture_node::do_render_texture(viewer &)): Return
+ void.
+ * src/libopenvrml/openvrml/node.h
+ (openvrml::geometry_node): Removed geometry_reference and
+ geometry_reference_mutex_ members.
+ (openvrml::texture_node): Removed texture_reference and
+ texture_reference_mutex_ members.
+ * src/libopenvrml/openvrml/viewer.cpp
+ (openvrml::viewer::insert_background(const std::vector<float> &,
+ const std::vector<color> &, const std::vector<float> &, const
+ std::vector<color> &, const texture_node &, const texture_node &,
+ const texture_node &, const texture_node &, const texture_node &,
+ const texture_node &)): Pass openvrml::texture_node for the
+ textures instead of openvrml::image.
+ (openvrml::viewer::insert_box(const geometry_node &, const
+ vec3f&)): Pass the geometry_node as the first parameter.
+ (openvrml::viewer::insert_cone(const geometry_node &, float,
+ float, bool, bool)): Pass the geometry_node as the first
+ parameter.
+ (openvrml::viewer::insert_cylinder(const geometry_node &, float,
+ float, bool, bool, bool)): Pass the geometry_node as the first
+ parameter.
+ (openvrml::viewer::insert_elevation_grid(const geometry_node &,
+ unsigned int, const std::vector<float> &, int32, int32, const
+ std::vector<vec3f> &, const std::vector<vec2f> &)): Pass the
+ geometry_node as the first parameter.
+ (openvrml::viewer::insert_extrusion(const geometry_node &,
+ unsigned int, const std::vector<vec3f> &, const
+ std::vector<vec2f>&, const std::vector<rotation> &, const
+ std::vector<vec2f> &)): Pass the geometry_node as the first
+ parameter.
+ (openvrml::viewer::insert_line_set(const geometry_node &, const
+ std::vector<vec3f> &, const std::vector<int32> &, bool, const
+ std::vector<color> &, const std::vector<int32> &)): Pass the
+ geometry_node as the first parameter.
+ (openvrml::viewer::insert_point_set(const geometry_node &, const
+ std::vector<vec3f> &, const std::vector<color> &)): Pass the
+ geometry_node as the first parameter.
+ (openvrml::viewer::insert_shell(const geometry_node &, unsigned
+ int, const std::vector<vec3f> &, const std::vector<int32> &, const
+ std::vector<color> &, const std::vector<int32> &, const
+ std::vector<vec3f> &, const std::vector<int32> &, const
+ std::vector<vec2f> &, const std::vector<int32> &)): Pass the
+ geometry_node as the first parameter.
+ (openvrml::viewer::insert_sphere(const geometry_node &, float)):
+ Pass the geometry_node as the first parameter.
+ (openvrml::viewer::insert_reference(object_t)): Removed.
+ (openvrml::viewer::remove_object(const node &)): Take a node
+ reference instead of an object_t.
+ (openvrml::viewer::insert_texture(const texture_node &, bool)):
+ Take a texture_node instead of an image; return void.
+ (openvrml::viewer::insert_texture_reference(texture_object_t,
+ size_t)): Removed.
+ (openvrml::viewer::remove_texture_object(const texture_node &)):
+ Take a texture_node instead of a texture_object_t.
+ * src/libopenvrml/openvrml/viewer.h
+ (openvrml::viewer): Removed texture_object_t typedef; pass
+ texture_nodes to insert_background instead of images; pass
+ geometry_node & as the first parameter of insert_box, insert_cone,
+ insert_cylinder, insert_elevation_grid, insert_extrusion,
+ insert_line_set, insert_point_set, insert_shell, and
+ insert_sphere; pass texture_node & to insert_texture instead of an
+ image; removed insert_reference and insert_texture_reference.
+ * src/libopenvrml-gl/openvrml/gl/viewer.cpp
+ (openvrml::gl::viewer::do_insert_background(const
+ std::vector<float> &, const std::vector<color> &, const
+ std::vector<float> &, const std::vector<color> &, const
+ texture_node &, const texture_node &, const texture_node &, const
+ texture_node &, const texture_node &, const texture_node &)): Get
+ the textures from the texture_nodes instead of the images.
+ (openvrml::gl::viewer::do_insert_box(const geometry_node &, const
+ vec3f &)): Store/retrieve the display list in list_map_.
+ (openvrml::gl::viewer::do_insert_cone(const geometry_node &,
+ float, float, bool, bool)): Store/retrieve the display list in
+ list_map_.
+ (openvrml::gl::viewer::do_insert_cylinder(const geometry_node &,
+ float, float, bool, bool, bool)): Store/retrieve the display list
+ in list_map_.
+ (openvrml::gl::viewer::do_insert_elevation_grid(const
+ geometry_node &, unsigned int, const std::vector<float> &, int32,
+ int32, const std::vector<vec3f> &, const std::vector<vec2f> &)):
+ Store/retrieve the display list in list_map_.
+ (openvrml::gl::viewer::do_insert_extrusion(const geometry_node &,
+ unsigned int, const std::vector<vec3f> &, const
+ std::vector<vec2f>&, const std::vector<rotation> &, const
+ std::vector<vec2f> &)): Store/retrieve the display list in
+ list_map_.
+ (openvrml::gl::viewer::do_insert_line_set(const geometry_node &,
+ const std::vector<vec3f> &, const std::vector<int32> &, bool,
+ const std::vector<color> &, const std::vector<int32> &)):
+ Store/retrieve the display list in list_map_.
+ (openvrml::gl::viewer::do_insert_point_set(const geometry_node &,
+ const std::vector<vec3f> &, const std::vector<color> &)):
+ Store/retrieve the display list in list_map_.
+ (openvrml::gl::viewer::do_insert_shell(const geometry_node &,
+ unsigned int, const std::vector<vec3f> &, const
+ std::vector<int32>&, const std::vector<color> &, const
+ std::vector<int32> &, const std::vector<vec3f> &, const
+ std::vector<int32> &, const std::vector<vec2f> &, const
+ std::vector<int32> &)): Store/retrieve the display list in
+ list_map_.
+ (openvrml::gl::viewer::do_insert_sphere(const geometry_node &,
+ float)): Store/retrieve the display list in list_map_.
+ (openvrml::gl::viewer::do_insert_reference(object_t)): Removed.
+ (openvrml::gl::viewer::do_remove_object(const node &)): Retrieve
+ the display list to delete from list_map_.
+ (openvrml::gl::viewer::do_insert_texture(const texture_node &,
+ bool)): Store/retrieve the texture object reference in
+ texture_map_.
+ (openvrml::gl::viewer::do_insert_texture_reference(texture_object_t,
+ size_t)): Removed.
+ (openvrml::gl::viewer::do_remove_texture_object(const
+ texture_node&)): Retrieve the texture object to delete from
+ texture_map_.
+ * src/libopenvrml-gl/openvrml/gl/viewer.h
+ (openvrml::gl::viewer): Added members list_map_ and texture_map_.
+ * src/node/vrml97/anchor.cpp: Reorderd includes for consistency.
+ * src/node/vrml97/appearance.cpp: Include <openvrml/viewer.h>.
+ * src/node/vrml97/background.cpp
+ (openvrml_node_vrml97::background_metatype::background_metatype(openvrml::browser&)):
+ Initialize null_texture_node_metatype_ and null_texture_node_type_
+ members.
+ (null_texture_node): A "null" texture_node implementation to
+ provide the default background.
+ (openvrml_node_vrml97::background_metatype::do_render(openvrml::viewer&)
+ const): Use null_texture_node for the default background textures.
+ (openvrml_node_vrml97::background_node::texture_url_exposedfield::texture_url_exposedfield(background_node&,
+ bool background_node::*)): Removed.
+ (openvrml_node_vrml97::background_node::texture_url_exposedfield::texture_url_exposedfield(const
+ texture_url_exposedfield &)): Removed.
+ (openvrml_node_vrml97::background_node::texture_url_exposedfield::~texture_url_exposedfield()):
+ Removed.
+ (openvrml_node_vrml97::background_node::texture_url_exposedfield::do_clone()
+ const): Removed.
+ (openvrml_node_vrml97::background_node::texture_url_exposedfield::event_side_effect(const
+ openvrml::mfstring &, double)): Removed.
+ (openvrml_node_vrml97::background_node::background_node(const
+ openvrml::node_type &, const
+ boost::shareed_ptr<openvrml::scope>&)): Don't need to pass the
+ update flag pointer to the url fields; removed initialization of
+ the update flags; construct ImageTexture nodes to provide the
+ textures.
+ (openvrml_node_vrml97::background_node::update_textures()):
+ Removed.
+ (null_scope_ptr): Something to hand off to the null_texture_node
+ base class constructors.
+ (null_texture_node::null_texture_node(const
+ openvrml::null_node_type &)): Added null_texture_node constructor.
+ (null_texture_node::~null_texture_node()): Added null_texture_node
+ destructor.
+ (null_texture_node::do_field(const std::string &, const
+ openvrml::field_value &)): Do-nothing (but crash) implementation.
+ (null_texture_node::do_field(const std::string &) const)):
+ Do-nothing (but crash) implementation.
+ (null_texture_node::do_process_event(const std::string &, const
+ openvrml::field_value &, double)): Do-nothing (but crash)
+ implementation.
+ (null_texture_node::do_eventout(const std::string &) const)):
+ Do-nothing (but crash) implementation.
+ (null_texture_node::do_event_listener(const std::string &)):
+ Do-nothing (but crash) implementation.
+ (null_texture_node::do_event_emitter(const std::string &)):
+ Do-nothing (but crash) implementation.
+ (null_texture_node::do_image() const): Return an empty
+ openvrml::image.
+ (null_texture_node::do_repeat_s() const): Return false.
+ (null_texture_node::do_repeat_t() const): Return false.
+ * src/node/vrml97/background.h
+ (openvrml_node_vrml97::background_metatype): Added members
+ null_texture_node_metatype_ and null_texture_node_type_.
+ (openvrml_node_vrml97::background_node): Removed
+ texture_url_exposedfield; changed back_url_, bottom_url_,
+ front_url_, left_url_, right_url, and top_url_ to
+ exposedfield<openvrml::mfstring>; changed front, back, left,
+ right, top, and bottom to
+ boost::intrusive_ptr<openvrml::texture_node>; removed texture
+ mutex and update flag members; removed update_textures member
+ function.
+ * src/node/vrml97/billboard.cpp
+ (billboard_node): Removed xformObject member.
+ (billboard_node::billboard_node(const openvrml::node_type &, const
+ boost::shared_ptr<openvrml::scope> &)): Removed initialization of
+ xformObject.
+ (billboard_node::do_render_child(openvrml::viewer &,
+ openvrml::rendering_context)): Removed code to manage xformObject.
+ * src/node/vrml97/box.cpp
+ (box_node::do_render_geometry(openvrml::viewer &,
+ openvrml::rendering_context)): Return void.
+ * src/node/vrml97/cone.cpp
+ (cone_node::do_render_geometry(openvrml::viewer &,
+ openvrml::rendering_context)): Return void.
+ * src/node/vrml97/cylinder.cpp
+ (cylinder_node::do_render_geometry(openvrml::viewer &,
+ openvrml::rendering_context)): Return void.
+ * src/node/vrml97/directional_light.cpp: Include
+ <openvrml/viewer.h>.
+ * src/node/vrml97/elevation_grid.cpp
+ (elevation_grid_node::do_render_geometry(openvrml::viewer &,
+ openvrml::rendering_context)): Return void.
+ * src/node/vrml97/extrusion.cpp
+ (extrusion_node::do_render_geometry(openvrml::viewer &,
+ openvrml::rendering_context)): Return void.
+ * src/node/vrml97/fog.cpp: Include <openvrml/viewer.h>.
+ * src/node/vrml97/grouping_node_base.h
+ (openvrml_node_vrml97::grouping_node_base<Derived>): Removed
+ viewerObject member.
+ (openvrml_node_vrml97::grouping_node_base<Derived>::grouping_node_base(const
+ openvrml::node_type &, const
+ boost::shared_ptr<openvrml::scope>&)): Removed initialization of
+ viewerObject.
+ (openvrml_node_vrml97::grouping_node_base<Derived>::render_nocull(openvrml::viewer&,
+ openvrml::rendering_context)): Removed code to manage
+ viewerObject.
+ * src/node/vrml97/image_texture.cpp
+ (image_texture_node::do_render_texture(openvrml::viewer &)):
+ Return void.
+ * src/node/vrml97/indexed_face_set.cpp
+ (indexed_face_set::do_render_geometry(openvrml::viewer &,
+ openvrml::rendering_context)): Return void.
+ * src/node/vrml97/indexed_line_set.cpp
+ (indexed_line_set::do_render_geometry(openvrml::viewer &,
+ openvrml::rendering_context)): Return void.
+ * src/node/vrml97/movie_texture.cpp
+ (movie_texture_node::do_render_texture(openvrml::viewer &)):
+ Return void.
+ * src/node/vrml97/pixel_texture.cpp
+ (pixel_texture_node::do_render_texture(openvrml::viewer &)):
+ Return void.
+ * src/node/vrml97/point_light.cpp: Include <openvrml/viewer.h>.
+ * src/node/vrml97/point_set.cpp
+ (point_set::do_render_geometry(openvrml::viewer &,
+ openvrml::rendering_context)): Return void.
+ * src/node/vrml97/proximity_sensor.cpp: Include
+ <openvrml/viewer.h>.
+ * src/node/vrml97/sphere.cpp
+ (sphere::do_render_geometry(openvrml::viewer &,
+ openvrml::rendering_context)): Return void.
+ * src/node/vrml97/spot_light.cpp: Include <openvrml/viewer.h>.
+ * src/node/vrml97/shape.cpp
+ (shape_node): Removed viewerObject member.
+ (shape_node::shape_node(const openvrml::node_type &, const
+ boost::shared_ptr<openvrml::scope> &)): Removed initialization of
+ viewerObject.
+ (shape_node::do_render_child(openvrml::viewer &,
+ openvrml::rendering_context)): Removed code to manage
+ viewerObject.
+ * src/node/vrml97/text.cpp
+ (text::do_render_geometry(openvrml::viewer &,
+ openvrml::rendering_context)): Return void.
+ * src/node/vrml97/texture_transform.cpp: Include
+ <openvrml/viewer.h>.
+ * src/node/vrml97/transform.cpp
+ (transform_node): Removed xformObject member.
+ (transform_node::transform_node(const openvrml::node_type &, const
+ boost::shared_ptr<openvrml::scope> &)): Removed initialization of
+ xformObject.
+ (transform_node::do_render_child(openvrml::viewer &,
+ openvrml::rendering_context)): Removed code to manage xformObject.
+ * src/node/vrml97/visibility_sensor.cpp: Include
+ <openvrml/viewer.h>.
+ * src/node/x3d-cad-geometry/indexed_quad_set.cpp
+ (indexed_quad_set::do_render_geometry(openvrml::viewer &,
+ openvrml::rendering_context)): Return void.
+ * src/node/x3d-geospatial/geo_elevation_grid.cpp
+ (geo_elevation_grid_node::do_render_geometry(openvrml::viewer &,
+ rendering_context)): Return void.
+ * src/node/x3d-grouping/static_group.cpp
+ (static_group_node): Removed viewerObject member.
+ (static_group_node::render_nocull(openvrml::viewer &,
+ rendering_context)): Removed code to manage viewerObject.
+ (static_group_node::static_group_node(const node_type &, const
+ boost::shared_ptr<openvrml::scope> &)): Removed viewerObject
+ initialization.
+ * src/node/x3d-nurbs/nurbs_curve.cpp
+ (nurbs_curve_node::do_render_geometry(openvrml::viewer &,
+ rendering_context)): Return void.
+ * src/node/x3d-nurbs/nurbs_patch_surface.cpp
+ (nurbs_patch_surface_node::do_render_geometry(openvrml::viewer &,
+ rendering_context)): Return void.
+ * src/node/x3d-nurbs/nurbs_trimmed_surface.cpp
+ (nurbs_trimmed_surface_node::do_render_geometry(openvrml::viewer&,
+ rendering_context)): Return void.
+ * src/node/x3d-nurbs/nurbs_swept_surface.cpp
+ (nurbs_swept_surface_node::do_render_geometry(openvrml::viewer &,
+ rendering_context)): Return void.
+ * src/node/x3d-nurbs/nurbs_swung_surface.cpp
+ (nurbs_swung_surface_node::do_render_geometry(openvrml::viewer &,
+ rendering_context)): Return void.
+ * src/node/x3d-rendering/indexed_triangle_fan_set.cpp
+ (indexed_triangle_fan_set_node::do_render_geometry(openvrml::viewer&,
+ rendering_context)): Return void.
+ * src/node/x3d-rendering/indexed_triangle_set.cpp
+ (indexed_triangle_set_node::do_render_geometry(openvrml::viewer&,
+ rendering_context)): Return void.
+ * src/node/x3d-rendering/indexed_triangle_strip_set.cpp
+ (indexed_triangle_strip_set_node::do_render_geometry(openvrml::viewer&,
+ rendering_context)): Return void.
+ * src/node/x3d-rendering/triangle_fan_set.cpp
+ (triangle_fan_set_node::do_render_geometry(openvrml::viewer&,
+ rendering_context)): Return void.
+ * src/node/x3d-rendering/triangle_set.cpp
+ (triangle_set_node::do_render_geometry(openvrml::viewer&,
+ rendering_context)): Return void.
+ * src/node/x3d-rendering/triangle_strip_set.cpp
+ (triangle_strip_set_node::do_render_geometry(openvrml::viewer&,
+ rendering_context)): Return void.
+ * src/node/x3d-geometry2d/arc2d.cpp
+ (arc2d_node::do_render_geometry(openvrml::viewer&,
+ rendering_context)): Return void.
+ * src/node/x3d-geometry2d/arc_close2d.cpp
+ (arc_close2d_node::do_render_geometry(openvrml::viewer&,
+ rendering_context)): Return void.
+ * src/node/x3d-geometry2d/circle2d.cpp
+ (circle2d_node::do_render_geometry(openvrml::viewer&,
+ rendering_context)): Return void.
+ * src/node/x3d-geometry2d/disk2d.cpp
+ (disk2d_node::do_render_geometry(openvrml::viewer&,
+ rendering_context)): Return void.
+ * src/node/x3d-geometry2d/polyline2d.cpp
+ (polyline2d_node::do_render_geometry(openvrml::viewer&,
+ rendering_context)): Return void.
+ * src/node/x3d-geometry2d/polypoint2d.cpp
+ (polypoint2d_node::do_render_geometry(openvrml::viewer&,
+ rendering_context)): Return void.
+ * src/node/x3d-geometry2d/rectangle2d.cpp
+ (rectangle2d_node::do_render_geometry(openvrml::viewer&,
+ rendering_context)): Return void.
+ * src/node/x3d-geometry2d/triangle_set2d.cpp
+ (triangle_set2d_node::do_render_geometry(openvrml::viewer&,
+ rendering_context)): Return void.
+
2009-04-01 Braden McDaniel <br...@en...>
Define OPENVRML_GL_HAVE_GL_GLU_H and OPENVRML_GL_HAVE_WINDOWS_H
@@ -27,7 +378,7 @@
2009-03-30 Braden McDaniel <br...@en...>
- * src/node/vrml97/scaler_interpolator.cpp: Removed errant
+ * src/node/vrml97/scalar_interpolator.cpp: Removed errant
shape_node definition.
2009-03-30 Braden McDaniel <br...@en...>
Modified: trunk/src/libopenvrml/openvrml/browser.cpp
===================================================================
--- trunk/src/libopenvrml/openvrml/browser.cpp 2009-04-01 06:11:57 UTC (rev 3879)
+++ trunk/src/libopenvrml/openvrml/browser.cpp 2009-04-03 06:28:17 UTC (rev 3880)
@@ -22,6 +22,7 @@
# include "browser.h"
# include "scene.h"
# include "scope.h"
+# include "viewer.h"
# include <openvrml/local/uri.h>
# include <openvrml/local/node_metatype_registry_impl.h>
# include <openvrml/local/component.h>
Modified: trunk/src/libopenvrml/openvrml/node.cpp
===================================================================
--- trunk/src/libopenvrml/openvrml/node.cpp 2009-04-01 06:11:57 UTC (rev 3879)
+++ trunk/src/libopenvrml/openvrml/node.cpp 2009-04-03 06:28:17 UTC (rev 3880)
@@ -21,6 +21,7 @@
# include "browser.h"
# include "scope.h"
+# include "viewer.h"
# include <openvrml/local/node_metatype_registry_impl.h>
# include <openvrml/local/uri.h>
# include <openvrml/local/field_value_types.h>
@@ -4025,22 +4026,6 @@
*/
/**
- * @internal
- *
- * @var boost::mutex openvrml::geometry_node::geometry_reference_mutex_
- *
- * @brief Mutex protecting @c #geometry_reference.
- */
-
-/**
- * @internal
- *
- * @var openvrml::viewer::object_t openvrml::geometry_node::geometry_reference
- *
- * @brief Identifier for a geometry object in the renderer.
- */
-
-/**
* @brief Construct.
*
* @param[in] type the @c node_type associated with the @c node.
@@ -4051,16 +4036,11 @@
const boost::shared_ptr<openvrml::scope> & scope)
OPENVRML_NOTHROW:
node(type, scope),
- bounded_volume_node(type, scope),
- geometry_reference(0)
+ bounded_volume_node(type, scope)
{}
/**
* @brief Destroy.
- *
- * @todo Proper resource deallocation in the @c viewer depends on the
- * @c viewer @b not having been decoupled from the @c browser. We need
- * to handle this better via some refcounting scheme.
*/
openvrml::geometry_node::~geometry_node() OPENVRML_NOTHROW
{}
@@ -4081,31 +4061,18 @@
*
* @param[in,out] v viewer.
* @param[in] context rendering context.
- *
- * @return object identifier for the inserted geometry.
*/
-openvrml::viewer::object_t
-openvrml::geometry_node::render_geometry(viewer & v,
- rendering_context context)
+void openvrml::geometry_node::render_geometry(viewer & v,
+ rendering_context context)
{
read_write_mutex::scoped_read_lock lock(this->scene_mutex());
- if (this->scene()) {
- boost::mutex::scoped_lock lock(this->geometry_reference_mutex_);
- if (this->geometry_reference != 0 && this->modified()) {
- v.remove_object(this->geometry_reference);
- this->geometry_reference = 0;
- }
+ if (!this->scene()) { return; }
- if (this->geometry_reference != 0) {
- v.insert_reference(this->geometry_reference);
- } else {
- this->geometry_reference = this->do_render_geometry(v, context);
- this->modified(false);
- }
- return this->geometry_reference;
- }
- return 0;
+ if (this->modified()) { v.remove_object(*this); }
+
+ this->do_render_geometry(v, context);
+ this->modified(false);
}
/**
@@ -4126,14 +4093,9 @@
*
* @param[in,out] v viewer.
* @param[in] context rendering context.
- *
- * @return object identifier for the inserted geometry.
*/
-openvrml::viewer::object_t
-openvrml::geometry_node::do_render_geometry(viewer &, rendering_context)
-{
- return 0;
-}
+void openvrml::geometry_node::do_render_geometry(viewer &, rendering_context)
+{}
/**
* @brief @c #emissive implementation.
@@ -4931,22 +4893,6 @@
*/
/**
- * @internal
- *
- * @var boost::mutex openvrml::texture_node::texture_reference_mutex_
- *
- * @brief Mutex protecting @c #texture_reference.
- */
-
-/**
- * @internal
- *
- * @var openvrml::viewer::texture_object_t openvrml::texture_node::texture_reference
- *
- * @brief Identifier for a texture object in the renderer.
- */
-
-/**
* @brief Construct.
*
* @param[in] type the @c node_type associated with the @c node.
@@ -4956,16 +4902,11 @@
texture_node(const node_type & type,
const boost::shared_ptr<openvrml::scope> & scope)
OPENVRML_NOTHROW:
- node(type, scope),
- texture_reference(0)
+ node(type, scope)
{}
/**
* @brief Destroy.
- *
- * @todo Proper resource deallocation in the @c viewer depends on the
- * @c viewer @b not having been decoupled from the @c browser. We need
- * to handle this better via some refcounting scheme.
*/
openvrml::texture_node::~texture_node() OPENVRML_NOTHROW
{}
@@ -4974,45 +4915,26 @@
* @brief Insert a texture into a viewer.
*
* @param[in,out] v viewer.
- *
- * @return object identifier for the inserted texture.
*/
-openvrml::viewer::texture_object_t
-openvrml::texture_node::render_texture(viewer & v)
+void openvrml::texture_node::render_texture(viewer & v)
{
read_write_mutex::scoped_read_lock lock(this->scene_mutex());
- if (this->scene()) {
- boost::mutex::scoped_lock lock(this->texture_reference_mutex_);
- if (this->texture_reference != 0 && this->modified()) {
- v.remove_texture_object(this->texture_reference);
- this->texture_reference = 0;
- }
+ if (!this->scene()) { return; }
- if (this->texture_reference != 0) {
- v.insert_texture_reference(this->texture_reference,
- this->image().comp());
- } else {
- this->texture_reference = this->do_render_texture(v);
- this->modified(false);
- }
- return this->texture_reference;
- }
- return 0;
+ if (this->modified()) { v.remove_texture_object(*this); }
+
+ this->do_render_texture(v);
+ this->modified(false);
}
/**
* @brief @c #render_texture implementation.
*
* @param[in,out] v viewer.
- *
- * @return object identifier for the inserted texture.
*/
-openvrml::viewer::texture_object_t
-openvrml::texture_node::do_render_texture(viewer &)
-{
- return 0;
-}
+void openvrml::texture_node::do_render_texture(viewer &)
+{}
/**
* @brief Cast to a @c texture_node.
Modified: trunk/src/libopenvrml/openvrml/node.h
===================================================================
--- trunk/src/libopenvrml/openvrml/node.h 2009-04-01 06:11:57 UTC (rev 3879)
+++ trunk/src/libopenvrml/openvrml/node.h 2009-04-03 06:28:17 UTC (rev 3880)
@@ -24,7 +24,6 @@
# include <openvrml/field_value.h>
# include <openvrml/rendering_context.h>
-# include <openvrml/viewer.h>
# include <boost/bind.hpp>
# include <deque>
# include <map>
@@ -237,6 +236,7 @@
class browser;
class viewpoint_node;
class node_type;
+ class viewer;
class OPENVRML_API node_metatype : boost::noncopyable {
const node_metatype_id id_;
@@ -332,7 +332,7 @@
class OPENVRML_API null_node_type : public node_type {
public:
- explicit null_node_type(null_node_metatype & nodeClass)
+ explicit null_node_type(null_node_metatype & type)
OPENVRML_NOTHROW;
virtual ~null_node_type() OPENVRML_NOTHROW;
@@ -1078,14 +1078,10 @@
class OPENVRML_API geometry_node : public virtual bounded_volume_node {
- boost::mutex geometry_reference_mutex_;
- viewer::object_t geometry_reference;
-
public:
virtual ~geometry_node() OPENVRML_NOTHROW = 0;
- viewer::object_t render_geometry(viewer & v,
- rendering_context context);
+ void render_geometry(viewer & v, rendering_context context);
bool emissive() const OPENVRML_NOTHROW;
const color_node * color() const OPENVRML_NOTHROW;
@@ -1095,8 +1091,7 @@
OPENVRML_NOTHROW;
private:
- virtual viewer::object_t
- do_render_geometry(viewer & v, rendering_context context);
+ virtual void do_render_geometry(viewer & v, rendering_context context);
virtual bool do_emissive() const OPENVRML_NOTHROW;
virtual const color_node * do_color() const OPENVRML_NOTHROW;
@@ -1281,13 +1276,10 @@
class OPENVRML_API texture_node : public virtual node {
- boost::mutex texture_reference_mutex_;
- viewer::texture_object_t texture_reference;
-
public:
virtual ~texture_node() OPENVRML_NOTHROW = 0;
- viewer::texture_object_t render_texture(viewer & v);
+ void render_texture(viewer & v);
const openvrml::image & image() const OPENVRML_NOTHROW;
bool repeat_s() const OPENVRML_NOTHROW;
@@ -1301,7 +1293,7 @@
private:
virtual texture_node * to_texture() OPENVRML_NOTHROW;
- virtual viewer::texture_object_t do_render_texture(viewer & v);
+ virtual void do_render_texture(viewer & v);
virtual const openvrml::image & do_image() const OPENVRML_NOTHROW = 0;
virtual bool do_repeat_s() const OPENVRML_NOTHROW = 0;
Modified: trunk/src/libopenvrml/openvrml/viewer.cpp
===================================================================
--- trunk/src/libopenvrml/openvrml/viewer.cpp 2009-04-01 06:11:57 UTC (rev 3879)
+++ trunk/src/libopenvrml/openvrml/viewer.cpp 2009-04-03 06:28:17 UTC (rev 3880)
@@ -112,12 +112,6 @@
*/
/**
- * @typedef openvrml::viewer::texture_object_t
- *
- * @brief An texture object handle.
- */
-
-/**
* @brief Construct.
*/
openvrml::viewer::viewer() OPENVRML_NOTHROW:
@@ -265,12 +259,12 @@
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)
+ const texture_node & front,
+ const texture_node & back,
+ const texture_node & left,
+ const texture_node & right,
+ const texture_node & top,
+ const texture_node & bottom)
{
return this->do_insert_background(ground_angle, ground_color,
sky_angle, sky_color,
@@ -278,7 +272,7 @@
}
/**
- * @fn openvrml::viewer::object_t openvrml::viewer::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)
+ * @fn openvrml::viewer::object_t openvrml::viewer::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 texture_node & front, const texture_node & back, const texture_node & left, const texture_node & right, const texture_node & top, const texture_node & bottom)
*
* @brief Insert a background into a display list.
*
@@ -301,23 +295,21 @@
*
* This function delegates to @c viewer::do_insert_box.
*
+ * @param[in] n the @c geometry_node corresponding to the box.
* @param[in] size box dimensions.
- *
- * @return display object identifier.
*/
-openvrml::viewer::object_t openvrml::viewer::insert_box(const vec3f & size)
+void openvrml::viewer::insert_box(const geometry_node & n, const vec3f & size)
{
- return this->do_insert_box(size);
+ this->do_insert_box(n, size);
}
/**
- * @fn openvrml::viewer::object_t openvrml::viewer::do_insert_box(const vec3f & size)
+ * @fn void openvrml::viewer::do_insert_box(const geometry_node & n, const vec3f & size)
*
* @brief Insert a box into a display list.
*
+ * @param[in] n the @c geometry_node corresponding to the box.
* @param[in] size box dimensions.
- *
- * @return display object identifier.
*/
/**
@@ -325,32 +317,31 @@
*
* This function delegates to @c viewer::do_insert_cone.
*
+ * @param[in] n the @c geometry_node corresponding to the cone.
* @param[in] height height.
* @param[in] radius radius at base.
* @param[in] bottom show the bottom.
* @param[in] side show the side.
- *
- * @return display object identifier.
*/
-openvrml::viewer::object_t openvrml::viewer::insert_cone(const float height,
- const float radius,
- const bool bottom,
- const bool side)
+void openvrml::viewer::insert_cone(const geometry_node & n,
+ const float height,
+ const float radius,
+ const bool bottom,
+ const bool side)
{
- return this->do_insert_cone(height, radius, bottom, side);
+ this->do_insert_cone(n, height, radius, bottom, side);
}
/**
- * @fn openvrml::viewer::object_t openvrml::viewer::do_insert_cone(float height, float radius, bool bottom, bool side)
+ * @fn void openvrml::viewer::do_insert_cone(const geometry_node & n, float height, float radius, bool bottom, bool side)
*
* @brief Insert a cone into a display list.
*
+ * @param[in] n the @c geometry_node corresponding to the cone.
* @param[in] height height.
* @param[in] radius radius at base.
* @param[in] bottom show the bottom.
* @param[in] side show the side.
- *
- * @return display object identifier.
*/
/**
@@ -358,36 +349,34 @@
*
* This function delegates to @c viewer::do_insert_cylinder.
*
+ * @param[in] n the @c geometry_node corresponding to the cylinder.
* @param[in] height height.
* @param[in] radius radius.
* @param[in] bottom show the bottom.
* @param[in] side show the side.
* @param[in] top show the top.
- *
- * @return display object identifier.
*/
-openvrml::viewer::object_t
-openvrml::viewer::insert_cylinder(const float height,
- const float radius,
- const bool bottom,
- const bool side,
- const bool top)
+void openvrml::viewer::insert_cylinder(const geometry_node & n,
+ const float height,
+ const float radius,
+ const bool bottom,
+ const bool side,
+ const bool top)
{
- return this->do_insert_cylinder(height, radius, bottom, side, top);
+ this->do_insert_cylinder(n, height, radius, bottom, side, top);
}
/**
- * @fn openvrml::viewer::object_t openvrml::viewer::do_insert_cylinder(float height, float radius, bool bottom, bool side, bool top)
+ * @fn void openvrml::viewer::do_insert_cylinder(const geometry_node & n, float height, float radius, bool bottom, bool side, bool top)
*
* @brief Insert a cylinder into a display list.
*
+ * @param[in] n the @c geometry_node corresponding to the cylinder.
* @param[in] height height.
* @param[in] radius radius.
* @param[in] bottom show the bottom.
* @param[in] side show the side.
* @param[in] top show the top.
- *
- * @return display object identifier.
*/
/**
@@ -395,6 +384,8 @@
*
* This function delegates to @c viewer::do_insert_elevation_grid.
*
+ * @param[in] n the @c geometry_node corresponding to the elevation
+ * grid.
* @param[in] mask
* @param[in] height height field.
* @param[in] x_dimension vertices in the x direction.
@@ -404,11 +395,10 @@
* @param[in] color colors.
* @param[in] normal normals.
* @param[in] tex_coord texture coordinates.
- *
- * @return display object identifier.
*/
-openvrml::viewer::object_t
-openvrml::viewer::insert_elevation_grid(const unsigned int mask,
+void
+openvrml::viewer::insert_elevation_grid(const geometry_node & n,
+ const unsigned int mask,
const std::vector<float> & height,
int32 x_dimension,
int32 z_dimension,
@@ -418,17 +408,19 @@
const std::vector<vec3f> & normal,
const std::vector<vec2f> & tex_coord)
{
- return this->do_insert_elevation_grid(mask, height,
- x_dimension, z_dimension,
- x_spacing, z_spacing,
- color, normal, tex_coord);
+ this->do_insert_elevation_grid(n, mask, height,
+ x_dimension, z_dimension,
+ x_spacing, z_spacing,
+ color, normal, tex_coord);
}
/**
- * @fn openvrml::viewer::object_t openvrml::viewer::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)
+ * @fn void openvrml::viewer::do_insert_elevation_grid(const geometry_node & n, 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)
*
* @brief Insert an elevation grid into a display list.
*
+ * @param[in] n the @c geometry_node corresponding to the elevation
+ * grid.
* @param[in] mask
* @param[in] height height field.
* @param[in] x_dimension vertices in the x direction.
@@ -438,8 +430,6 @@
* @param[in] color colors.
* @param[in] normal normals.
* @param[in] tex_coord texture coordinates.
- *
- * @return display object identifier.
*/
/**
@@ -447,40 +437,36 @@
*
* This function delegates to @c viewer::do_insert_extrusion.
*
+ * @param[in] n the @c geometry_node corresponding to the extrusion.
* @param[in] mask
* @param[in] spine spine points.
* @param[in] cross_section cross-sections.
* @param[in] orientation cross-section orientations.
* @param[in] scale cross-section scales.
- *
- * @return display object identifier.
*/
-openvrml::viewer::object_t
-openvrml::viewer::insert_extrusion(unsigned int mask,
+void
+openvrml::viewer::insert_extrusion(const geometry_node & n,
+ unsigned int mask,
const std::vector<vec3f> & spine,
const std::vector<vec2f> & cross_section,
const std::vector<rotation> & orientation,
const std::vector<vec2f> & scale)
{
- return this->do_insert_extrusion(mask,
- spine,
- cross_section,
- orientation,
- scale);
+ this->do_insert_extrusion(n, mask,
+ spine, cross_section, orientation, scale);
}
/**
- * @fn openvrml::viewer::object_t openvrml::viewer::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)
+ * @fn void openvrml::viewer::do_insert_extrusion(const geometry_node & n, unsigned int mask, const std::vector<vec3f> & spine, const std::vector<vec2f> & cross_section, const std::vector<rotation> & orientation, const std::vector<vec2f> & scale)
*
* @brief Insert an extrusion into a display list.
*
+ * @param[in] n the @c geometry_node corresponding to the extrusion.
* @param[in] mask
* @param[in] spine spine points.
* @param[in] cross_section cross-sections.
* @param[in] orientation cross-section orientations.
* @param[in] scale cross-section scales.
- *
- * @return display object identifier.
*/
/**
@@ -488,37 +474,39 @@
*
* This function delegates to @c viewer::do_insert_line_set.
*
+ * @param[in] n the @c geometry_node corresponding to the line
+ * set.
* @param[in] coord coordinates.
* @param[in] coord_index coordinate indices.
- * @param[in] color_per_vertex whether colors are applied per-vertex or per-face.
+ * @param[in] color_per_vertex whether colors are applied per-vertex or
+ * per-face.
* @param[in] color colors.
* @param[in] color_index color indices.
- *
- * @return display object identifier.
*/
-openvrml::viewer::object_t
-openvrml::viewer::insert_line_set(const std::vector<vec3f> & coord,
+void
+openvrml::viewer::insert_line_set(const geometry_node & n,
+ const std::vector<vec3f> & coord,
const std::vector<int32> & coord_index,
const bool color_per_vertex,
const std::vector<color> & color,
const std::vector<int32> & color_index)
{
- return this->do_insert_line_set(coord, coord_index,
- color_per_vertex, color, color_index);
+ this->do_insert_line_set(n, coord, coord_index,
+ color_per_vertex, color, color_index);
}
/**
- * @fn openvrml::viewer::object_t openvrml::viewer::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)
+ * @fn void openvrml::viewer::do_insert_line_set(const geometry_node & n, 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)
*
* @brief Insert a line set into a display list.
*
+ * @param[in] n the @c geometry_node corresponding to the line
+ * set.
* @param[in] coord coordinates.
* @param[in] coord_index coordinate indices.
* @param[in] color_per_vertex whether colors are applied per-vertex or per-face.
* @param[in] color colors.
* @param[in] color_index color indices.
- *
- * @return display object identifier.
*/
/**
@@ -526,27 +514,26 @@
*
* This function delegates to @c viewer::insert_point_set.
*
+ * @param[in] n the @c geometry_node corresponding to the point set.
* @param[in] coord points.
* @param[in] color colors.
- *
- * @return display object identifier.
*/
-openvrml::viewer::object_t
-openvrml::viewer::insert_point_set(const std::vector<vec3f> & coord,
+void
+openvrml::viewer::insert_point_set(const geometry_node & n,
+ const std::vector<vec3f> & coord,
const std::vector<color> & color)
{
- return this->do_insert_point_set(coord, color);
+ this->do_insert_point_set(n, coord, color);
}
/**
- * @fn openvrml::viewer::object_t openvrml::viewer::do_insert_point_set(const std::vector<vec3f> & coord, const std::vector<color> & color)
+ * @fn void openvrml::viewer::do_insert_point_set(const geometry_node & n, const std::vector<vec3f> & coord, const std::vector<color> & color)
*
* @brief Insert a point set into a display list.
*
+ * @param[in] n the @c geometry_node corresponding to the point set.
* @param[in] coord points.
* @param[in] color colors.
- *
- * @return display object identifier.
*/
/**
@@ -554,6 +541,7 @@
*
* This function delegates to @c viewer::do_insert_shell.
*
+ * @param[in] n the @c geometry_node corresponding to the shell.
* @param[in] mask
* @param[in] coord coordinates.
* @param[in] coord_index coordinate indices.
@@ -563,11 +551,10 @@
* @param[in] normal_index normal indices.
* @param[in] tex_coord texture coordinates.
* @param[in] tex_coord_index texture coordinate indices.
- *
- * @return display object identifier.
*/
-openvrml::viewer::object_t
-openvrml::viewer::insert_shell(unsigned int mask,
+void
+openvrml::viewer::insert_shell(const geometry_node & n,
+ unsigned int mask,
const std::vector<vec3f> & coord,
const std::vector<int32> & coord_index,
const std::vector<color> & color,
@@ -577,18 +564,19 @@
const std::vector<vec2f> & tex_coord,
const std::vector<int32> & tex_coord_index)
{
- return this->do_insert_shell(mask,
- coord, coord_index,
- color, color_index,
- normal, normal_index,
- tex_coord, tex_coord_index);
+ this->do_insert_shell(n, mask,
+ coord, coord_index,
+ color, color_index,
+ normal, normal_index,
+ tex_coord, tex_coord_index);
}
/**
- * @fn openvrml::viewer::object_t openvrml::viewer::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)
+ * @fn void openvrml::viewer::do_insert_shell(const geometry_node & n, 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)
*
* @brief Insert a shell into a display list.
*
+ * @param[in] n the @c geometry_node corresponding to the shell.
* @param[in] mask
* @param[in] coord coordinates.
* @param[in] coord_index coordinate indices.
@@ -598,8 +586,6 @@
* @param[in] normal_index normal indices.
* @param[in] tex_coord texture coordinates.
* @param[in] tex_coord_index texture coordinate indices.
- *
- * @return display object identifier.
*/
/**
@@ -607,23 +593,22 @@
*
* This function delegates to @c viewer::do_insert_sphere.
*
+ * @param[in] n the @c geometry_node corresponding to the sphere.
* @param[in] radius sphere radius.
- *
- * @return display object identifier.
*/
-openvrml::viewer::object_t openvrml::viewer::insert_sphere(const float radius)
+void openvrml::viewer::insert_sphere(const geometry_node & n,
+ const float radius)
{
- return this->do_insert_sphere(radius);
+ this->do_insert_sphere(n, radius);
}
/**
- * @fn openvrml::viewer::object_t openvrml::viewer::do_insert_sphere(float radius)
+ * @fn void openvrml::viewer::do_insert_sphere(const geometry_node & n, float radius)
*
* @brief Insert a sphere into a display list.
*
+ * @param[in] n the @c geometry_node corresponding to the sphere.
* @param[in] radius sphere radius.
- *
- * @return display object identifier.
*/
/**
@@ -766,40 +751,19 @@
*/
/**
- * @brief Insert a reference to an existing object into a display list.
- *
- * This function delegates to @c viewer::do_insert_reference.
- *
- * @return display object identifier.
- */
-openvrml::viewer::object_t
-openvrml::viewer::insert_reference(const object_t existing_object)
-{
- return this->do_insert_reference(existing_object);
-}
-
-/**
- * @fn openvrml::viewer::object_t openvrml::viewer::do_insert_reference(object_t existing_object)
- *
- * @brief Insert a reference to an existing object into a display list.
- *
- * @return display object identifier.
- */
-
-/**
* @brief Remove an object from the display list.
*
* This function delegates to @c viewer::do_remove_object.
*
* @param[in] ref object handle.
*/
-void openvrml::viewer::remove_object(const object_t ref)
+void openvrml::viewer::remove_object(const node & ref)
{
this->do_remove_object(ref);
}
/**
- * @fn void openvrml::viewer::do_remove_object(object_t ref)
+ * @fn void openvrml::viewer::do_remove_object(const node & ref)
*
* @brief Remove an object from the display list.
*
@@ -964,76 +928,42 @@
*
* This function delegates to @c viewer::do_insert_texture.
*
- * @param[in] img image.
- * @param[in] repeat_s repeat in the S direction.
- * @param[in] repeat_t repeat in the T direction.
+ * @param[in] n a @c texture_node.
* @param[in] retainHint whether the texture is likely to be reused.
- *
- * @return a handle to the inserted texture.
*/
-openvrml::viewer::texture_object_t
-openvrml::viewer::insert_texture(const image & img,
- const bool repeat_s,
- const bool repeat_t,
- const bool retainHint)
+void openvrml::viewer::insert_texture(const texture_node & n,
+ const bool retainHint)
{
- return this->do_insert_texture(img, repeat_s, repeat_t, retainHint);
+ return this->do_insert_texture(n, retainHint);
}
/**
- * @fn openvrml::viewer::texture_object_t openvrml::viewer::do_insert_texture(const image & img, bool repeat_s, bool repeat_t, bool retainHint)
+ * @fn openvrml::viewer::texture_object_t openvrml::viewer::do_insert_texture(const texture_node & n, bool retainHint)
*
* @brief Create a texture object.
*
- * @param[in] img image.
- * @param[in] repeat_s repeat in the S direction.
- * @param[in] repeat_t repeat in the T direction.
+ * @param[in] n a @c texture_node.
* @param[in] retainHint whether the texture is likely to be reused.
- *
- * @return a handle to the inserted texture.
*/
/**
- * @brief Insert a texture into the display list from an existing handle.
- *
- * This function delegates to @c viewer::do_insert_texture_reference.
- *
- * @param[in] ref texture handle.
- * @param[in] components number of components.
- */
-void openvrml::viewer::insert_texture_reference(const texture_object_t ref,
- const size_t components)
-{
- this->do_insert_texture_reference(ref, components);
-}
-
-/**
- * @fn void openvrml::viewer::do_insert_texture_reference(texture_object_t ref, size_t components)
- *
- * @brief Insert a texture into the display list from an existing handle.
- *
- * @param[in] ref texture handle.
- * @param[in] components number of components.
- */
-
-/**
* @brief Remove a texture from the display list.
*
* This function delegates to @c viewer::do_remove_texture_object.
*
* @param[in] ref texture handle.
*/
-void openvrml::viewer::remove_texture_object(const texture_object_t ref)
+void openvrml::viewer::remove_texture_object(const texture_node & ref)
{
this->do_remove_texture_object(ref);
}
/**
- * @fn void openvrml::viewer::do_remove_texture_object(texture_object_t ref)
+ * @fn void openvrml::viewer::do_remove_texture_object(const texture_node & ref)
*
* @brief Remove a texture from the display list.
*
- * @param[in] ref texture handle.
+ * @param[in] ref a @c texture_node.
*/
/**
Modified: trunk/src/libopenvrml/openvrml/viewer.h
===================================================================
--- trunk/src/libopenvrml/openvrml/viewer.h 2009-04-01 06:11:57 UTC (rev 3879)
+++ trunk/src/libopenvrml/openvrml/viewer.h 2009-04-03 06:28:17 UTC (rev 3880)
@@ -28,8 +28,10 @@
namespace openvrml {
+ class browser;
class node;
- class browser;
+ class geometry_node;
+ class texture_node;
class OPENVRML_API viewer : boost::noncopyable {
friend class browser;
@@ -58,7 +60,6 @@
};
typedef long object_t;
- typedef long texture_object_t;
virtual ~viewer() OPENVRML_NOTHROW = 0;
@@ -75,47 +76,54 @@
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);
+ const texture_node & front,
+ const texture_node & back,
+ const texture_node & left,
+ const texture_node & right,
+ const texture_node & top,
+ const texture_node & bottom);
- object_t insert_box(const vec3f & size);
- object_t insert_cone(float height, float radius, bool bottom,
- bool side);
- object_t insert_cylinder(float height, float radius, bool bottom,
- bool side, bool top);
- 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);
- 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);
- 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);
- object_t insert_point_set(const std::vector<vec3f> & coord,
- const std::vector<color> & color);
- object_t insert_shell(unsigned int mask,
+ void insert_box(const geometry_node & n, const vec3f & size);
+ void insert_cone(const geometry_node & n,
+ float height, float radius, bool bottom,
+ bool side);
+ void insert_cylinder(const geometry_node & n,
+ float height, float radius, bool bottom,
+ bool side, bool top);
+ void insert_elevation_grid(const geometry_node & n,
+ 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);
+ void insert_extrusion(const geometry_node & n,
+ unsigned int mask,
+ const std::vector<vec3f> & spine,
+ const std::vector<vec2f> & cross_section,
+ const std::vector<rotation> & orientation,
+ const std::vector<vec2f> & scale);
+ void insert_line_set(const geometry_node & n,
+ 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);
+ void insert_point_set(const geometry_node & n,
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);
- object_t insert_sphere(float radius);
+ const std::vector<color> & color);
+ void insert_shell(const geometry_node & n,
+ 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);
+ void insert_sphere(const geometry_node & n, float radius);
object_t insert_dir_light(float ambient_intensity,
float intensity,
const color & color,
@@ -135,9 +143,8 @@
float intensity,
const vec3f & location,
float radius);
- object_t insert_reference(object_t existing_object);
- void remove_object...
[truncated message content] |