From: <br...@us...> - 2008-09-24 06:01:04
|
Revision: 3684 http://openvrml.svn.sourceforge.net/openvrml/?rev=3684&view=rev Author: braden Date: 2008-09-24 06:00:54 +0000 (Wed, 24 Sep 2008) Log Message: ----------- Split up X3D NURBS node implementations; moved to a convenience library. Modified Paths: -------------- branches/node-modules/src/Makefile.am branches/node-modules/src/libopenvrml/openvrml/x3d_nurbs.cpp Added Paths: ----------- branches/node-modules/src/node/x3d-nurbs/ branches/node-modules/src/node/x3d-nurbs/contour2d.cpp branches/node-modules/src/node/x3d-nurbs/contour2d.h branches/node-modules/src/node/x3d-nurbs/contour_polyline2d.cpp branches/node-modules/src/node/x3d-nurbs/contour_polyline2d.h branches/node-modules/src/node/x3d-nurbs/coordinate_double.cpp branches/node-modules/src/node/x3d-nurbs/coordinate_double.h branches/node-modules/src/node/x3d-nurbs/nurbs_curve.cpp branches/node-modules/src/node/x3d-nurbs/nurbs_curve.h branches/node-modules/src/node/x3d-nurbs/nurbs_curve2d.cpp branches/node-modules/src/node/x3d-nurbs/nurbs_curve2d.h branches/node-modules/src/node/x3d-nurbs/nurbs_orientation_interpolator.cpp branches/node-modules/src/node/x3d-nurbs/nurbs_orientation_interpolator.h branches/node-modules/src/node/x3d-nurbs/nurbs_patch_surface.cpp branches/node-modules/src/node/x3d-nurbs/nurbs_patch_surface.h branches/node-modules/src/node/x3d-nurbs/nurbs_position_interpolator.cpp branches/node-modules/src/node/x3d-nurbs/nurbs_position_interpolator.h branches/node-modules/src/node/x3d-nurbs/nurbs_set.cpp branches/node-modules/src/node/x3d-nurbs/nurbs_set.h branches/node-modules/src/node/x3d-nurbs/nurbs_surface_interpolator.cpp branches/node-modules/src/node/x3d-nurbs/nurbs_surface_interpolator.h branches/node-modules/src/node/x3d-nurbs/nurbs_swept_surface.cpp branches/node-modules/src/node/x3d-nurbs/nurbs_swept_surface.h branches/node-modules/src/node/x3d-nurbs/nurbs_swung_surface.cpp branches/node-modules/src/node/x3d-nurbs/nurbs_swung_surface.h branches/node-modules/src/node/x3d-nurbs/nurbs_texture_coordinate.cpp branches/node-modules/src/node/x3d-nurbs/nurbs_texture_coordinate.h branches/node-modules/src/node/x3d-nurbs/nurbs_trimmed_surface.cpp branches/node-modules/src/node/x3d-nurbs/nurbs_trimmed_surface.h Modified: branches/node-modules/src/Makefile.am =================================================================== --- branches/node-modules/src/Makefile.am 2008-09-24 01:42:21 UTC (rev 3683) +++ branches/node-modules/src/Makefile.am 2008-09-24 06:00:54 UTC (rev 3684) @@ -18,7 +18,8 @@ node/x3d-dis/libx3d-dis.la \ node/x3d-environmental-effects/libx3d-environmental-effects.la \ node/x3d-geospatial/libx3d-geospatial.la \ - node/x3d-h-anim/libx3d-h-anim.la + node/x3d-h-anim/libx3d-h-anim.la \ + node/x3d-nurbs/libx3d-nurbs.la if ENABLE_GL_RENDERER lib_LTLIBRARIES += libopenvrml-gl/libopenvrml-gl.la endif @@ -165,6 +166,7 @@ node/x3d-environmental-effects/libx3d-environmental-effects.la \ node/x3d-geospatial/libx3d-geospatial.la \ node/x3d-h-anim/libx3d-h-anim.la \ + node/x3d-nurbs/libx3d-nurbs.la \ -lboost_thread$(BOOST_LIB_SUFFIX) \ -lboost_filesystem$(BOOST_LIB_SUFFIX) \ -lltdl @@ -559,6 +561,41 @@ node/x3d-h-anim/h_anim_site.cpp \ node/x3d-h-anim/h_anim_site.h +node_x3d_nurbs_libx3d_nurbs_la_CPPFLAGS = \ + -I$(top_builddir)/src/libopenvrml \ + -I$(top_srcdir)/src/libopenvrml +node_x3d_nurbs_libx3d_nurbs_la_CXXFLAGS = \ + $(PTHREAD_CFLAGS) +node_x3d_nurbs_libx3d_nurbs_la_SOURCES = \ + node/x3d-nurbs/contour2d.cpp \ + node/x3d-nurbs/contour2d.h \ + node/x3d-nurbs/contour_polyline2d.cpp \ + node/x3d-nurbs/contour_polyline2d.h \ + node/x3d-nurbs/coordinate_double.cpp \ + node/x3d-nurbs/coordinate_double.h \ + node/x3d-nurbs/nurbs_curve.cpp \ + node/x3d-nurbs/nurbs_curve.h \ + node/x3d-nurbs/nurbs_curve2d.cpp \ + node/x3d-nurbs/nurbs_curve2d.h \ + node/x3d-nurbs/nurbs_orientation_interpolator.cpp \ + node/x3d-nurbs/nurbs_orientation_interpolator.h \ + node/x3d-nurbs/nurbs_patch_surface.cpp \ + node/x3d-nurbs/nurbs_patch_surface.h \ + node/x3d-nurbs/nurbs_position_interpolator.cpp \ + node/x3d-nurbs/nurbs_position_interpolator.h \ + node/x3d-nurbs/nurbs_set.cpp \ + node/x3d-nurbs/nurbs_set.h \ + node/x3d-nurbs/nurbs_surface_interpolator.cpp \ + node/x3d-nurbs/nurbs_surface_interpolator.h \ + node/x3d-nurbs/nurbs_swept_surface.cpp \ + node/x3d-nurbs/nurbs_swept_surface.h \ + node/x3d-nurbs/nurbs_swung_surface.cpp \ + node/x3d-nurbs/nurbs_swung_surface.h \ + node/x3d-nurbs/nurbs_texture_coordinate.cpp \ + node/x3d-nurbs/nurbs_texture_coordinate.h \ + node/x3d-nurbs/nurbs_trimmed_surface.cpp \ + node/x3d-nurbs/nurbs_trimmed_surface.h + libopenvrml_gl_libopenvrml_gl_la_CPPFLAGS = \ -I$(top_builddir)/src/libopenvrml \ -I$(top_srcdir)/src/libopenvrml \ Modified: branches/node-modules/src/libopenvrml/openvrml/x3d_nurbs.cpp =================================================================== --- branches/node-modules/src/libopenvrml/openvrml/x3d_nurbs.cpp 2008-09-24 01:42:21 UTC (rev 3683) +++ branches/node-modules/src/libopenvrml/openvrml/x3d_nurbs.cpp 2008-09-24 06:00:54 UTC (rev 3684) @@ -2,7 +2,7 @@ // // OpenVRML // -// Copyright 2006, 2007 Braden McDaniel +// Copyright 2006, 2007, 2008 Braden McDaniel // // This library is free software; you can redistribute it and/or modify it // under the terms of the GNU Lesser General Public License as published by @@ -18,282 +18,32 @@ // along with this library; if not, see <http://www.gnu.org/licenses/>. // +# include "browser.h" +# include "x3d_nurbs.h" +# include <x3d-nurbs/contour2d.h> +# include <x3d-nurbs/contour_polyline2d.h> +# include <x3d-nurbs/coordinate_double.h> +# include <x3d-nurbs/nurbs_curve.h> +# include <x3d-nurbs/nurbs_curve2d.h> +# include <x3d-nurbs/nurbs_orientation_interpolator.h> +# include <x3d-nurbs/nurbs_patch_surface.h> +# include <x3d-nurbs/nurbs_position_interpolator.h> +# include <x3d-nurbs/nurbs_set.h> +# include <x3d-nurbs/nurbs_surface_interpolator.h> +# include <x3d-nurbs/nurbs_swept_surface.h> +# include <x3d-nurbs/nurbs_swung_surface.h> +# include <x3d-nurbs/nurbs_texture_coordinate.h> +# include <x3d-nurbs/nurbs_trimmed_surface.h> + # ifdef HAVE_CONFIG_H # include <config.h> # endif -# include <boost/array.hpp> -# include <private.h> -# include "browser.h" -# include "node_impl_util.h" -# include "x3d_nurbs.h" - -using namespace openvrml; -using namespace openvrml::node_impl_util; -using namespace std; - -namespace { - - /** - * @brief Class object for Contour2D nodes. - */ - class OPENVRML_LOCAL contour2d_metatype : public node_metatype { - public: - static const char * const id; - - explicit contour2d_metatype(openvrml::browser & browser); - virtual ~contour2d_metatype() OPENVRML_NOTHROW; - - private: - virtual const boost::shared_ptr<node_type> - do_create_type(const std::string & id, - const node_interface_set & interfaces) const - OPENVRML_THROW2(unsupported_interface, std::bad_alloc); - }; - - - /** - * @brief Class object for ContourPolyline2D nodes. - */ - class OPENVRML_LOCAL contour_polyline2d_metatype : public node_metatype { - public: - static const char * const id; - - explicit contour_polyline2d_metatype(openvrml::browser & browser); - virtual ~contour_polyline2d_metatype() OPENVRML_NOTHROW; - - private: - virtual const boost::shared_ptr<node_type> - do_create_type(const std::string & id, - const node_interface_set & interfaces) const - OPENVRML_THROW2(unsupported_interface, std::bad_alloc); - }; - - - /** - * @brief Class object for CoordinateDouble nodes. - */ - class OPENVRML_LOCAL coordinate_double_metatype : public node_metatype { - public: - static const char * const id; - - explicit coordinate_double_metatype(openvrml::browser & browser); - virtual ~coordinate_double_metatype() OPENVRML_NOTHROW; - - private: - virtual const boost::shared_ptr<node_type> - do_create_type(const std::string & id, - const node_interface_set & interfaces) const - OPENVRML_THROW2(unsupported_interface, std::bad_alloc); - }; - - - /** - * @brief Class object for NurbsCurve nodes. - */ - class OPENVRML_LOCAL nurbs_curve_metatype : public node_metatype { - public: - static const char * const id; - - explicit nurbs_curve_metatype(openvrml::browser & browser); - virtual ~nurbs_curve_metatype() OPENVRML_NOTHROW; - - private: - virtual const boost::shared_ptr<node_type> - do_create_type(const std::string & id, - const node_interface_set & interfaces) const - OPENVRML_THROW2(unsupported_interface, std::bad_alloc); - }; - - - /** - * @brief Class object for NurbsCurve2D nodes. - */ - class OPENVRML_LOCAL nurbs_curve2d_metatype : public node_metatype { - public: - static const char * const id; - - explicit nurbs_curve2d_metatype(openvrml::browser & browser); - virtual ~nurbs_curve2d_metatype() OPENVRML_NOTHROW; - - private: - virtual const boost::shared_ptr<node_type> - do_create_type(const std::string & id, - const node_interface_set & interfaces) const - OPENVRML_THROW2(unsupported_interface, std::bad_alloc); - }; - - - /** - * @brief Class object for NurbsOrientationInterpolator nodes. - */ - class OPENVRML_LOCAL nurbs_orientation_interpolator_metatype : - public node_metatype { - public: - static const char * const id; - - explicit nurbs_orientation_interpolator_metatype( - openvrml::browser & browser); - virtual ~nurbs_orientation_interpolator_metatype() OPENVRML_NOTHROW; - - private: - virtual const boost::shared_ptr<node_type> - do_create_type(const std::string & id, - const node_interface_set & interfaces) const - OPENVRML_THROW2(unsupported_interface, std::bad_alloc); - }; - - - /** - * @brief Class object for NurbsPatchSurface nodes. - */ - class OPENVRML_LOCAL nurbs_patch_surface_metatype : public node_metatype { - public: - static const char * const id; - - explicit nurbs_patch_surface_metatype(openvrml::browser & browser); - virtual ~nurbs_patch_surface_metatype() OPENVRML_NOTHROW; - - private: - virtual const boost::shared_ptr<node_type> - do_create_type(const std::string & id, - const node_interface_set & interfaces) const - OPENVRML_THROW2(unsupported_interface, std::bad_alloc); - }; - - - /** - * @brief Class object for NurbsPositionInterpolator nodes. - */ - class OPENVRML_LOCAL nurbs_position_interpolator_metatype : - public node_metatype { - public: - static const char * const id; - - explicit nurbs_position_interpolator_metatype( - openvrml::browser & browser); - virtual ~nurbs_position_interpolator_metatype() OPENVRML_NOTHROW; - - private: - virtual const boost::shared_ptr<node_type> - do_create_type(const std::string & id, - const node_interface_set & interfaces) const - OPENVRML_THROW2(unsupported_interface, std::bad_alloc); - }; - - - /** - * @brief Class object for NurbsSet nodes. - */ - class OPENVRML_LOCAL nurbs_set_metatype : public node_metatype { - public: - static const char * const id; - - explicit nurbs_set_metatype(openvrml::browser & browser); - virtual ~nurbs_set_metatype() OPENVRML_NOTHROW; - - private: - virtual const boost::shared_ptr<node_type> - do_create_type(const std::string & id, - const node_interface_set & interfaces) const - OPENVRML_THROW2(unsupported_interface, std::bad_alloc); - }; - - - /** - * @brief Class object for NurbsSurfaceInterpolator nodes. - */ - class OPENVRML_LOCAL nurbs_surface_interpolator_metatype : public node_metatype { - public: - static const char * const id; - - explicit nurbs_surface_interpolator_metatype(openvrml::browser & browser); - virtual ~nurbs_surface_interpolator_metatype() OPENVRML_NOTHROW; - - private: - virtual const boost::shared_ptr<node_type> - do_create_type(const std::string & id, - const node_interface_set & interfaces) const - OPENVRML_THROW2(unsupported_interface, std::bad_alloc); - }; - - - /** - * @brief Class object for NurbsSweptSurface nodes. - */ - class OPENVRML_LOCAL nurbs_swept_surface_metatype : public node_metatype { - public: - static const char * const id; - - explicit nurbs_swept_surface_metatype(openvrml::browser & browser); - virtual ~nurbs_swept_surface_metatype() OPENVRML_NOTHROW; - - private: - virtual const boost::shared_ptr<node_type> - do_create_type(const std::string & id, - const node_interface_set & interfaces) const - OPENVRML_THROW2(unsupported_interface, std::bad_alloc); - }; - - - /** - * @brief Class object for NurbsSwungSurface nodes. - */ - class OPENVRML_LOCAL nurbs_swung_surface_metatype : public node_metatype { - public: - static const char * const id; - - explicit nurbs_swung_surface_metatype(openvrml::browser & browser); - virtual ~nurbs_swung_surface_metatype() OPENVRML_NOTHROW; - - private: - virtual const boost::shared_ptr<node_type> - do_create_type(const std::string & id, - const node_interface_set & interfaces) const - OPENVRML_THROW2(unsupported_interface, std::bad_alloc); - }; - - - /** - * @brief Class object for NurbsTextureCoordinate nodes. - */ - class OPENVRML_LOCAL nurbs_texture_coordinate_metatype : public node_metatype { - public: - static const char * const id; - - explicit nurbs_texture_coordinate_metatype(openvrml::browser & browser); - virtual ~nurbs_texture_coordinate_metatype() OPENVRML_NOTHROW; - - private: - virtual const boost::shared_ptr<node_type> - do_create_type(const std::string & id, - const node_interface_set & interfaces) const - OPENVRML_THROW2(unsupported_interface, std::bad_alloc); - }; - - - /** - * @brief Class object for NurbsTrimmedSurface nodes. - */ - class OPENVRML_LOCAL nurbs_trimmed_surface_metatype : public node_metatype { - public: - static const char * const id; - - explicit nurbs_trimmed_surface_metatype(openvrml::browser & browser); - virtual ~nurbs_trimmed_surface_metatype() OPENVRML_NOTHROW; - - private: - virtual const boost::shared_ptr<node_type> - do_create_type(const std::string & id, - const node_interface_set & interfaces) const - OPENVRML_THROW2(unsupported_interface, std::bad_alloc); - }; -} - void register_nurbs_node_metatypes(openvrml::browser & b) { using boost::shared_ptr; using openvrml::node_metatype; + using namespace openvrml_node_x3d_nurbs; b.add_node_metatype(contour2d_metatype::id, shared_ptr<node_metatype>(new contour2d_metatype(b))); b.add_node_metatype(contour_polyline2d_metatype::id, @@ -335,3588 +85,3 @@ shared_ptr<node_metatype>( new nurbs_trimmed_surface_metatype(b))); } - -namespace { - using namespace openvrml_; - - class OPENVRML_LOCAL contour2d_node : - public abstract_node<contour2d_node> { - - friend class contour2d_metatype; - - class add_children_listener : public event_listener_base<self_t>, - public mfnode_listener { - public: - explicit add_children_listener(self_t & node); - virtual ~add_children_listener() OPENVRML_NOTHROW; - - private: - virtual void do_process_event(const mfnode & fraction, - double timestamp) - OPENVRML_THROW1(std::bad_alloc); - }; - - class remove_children_listener : public event_listener_base<self_t>, - public mfnode_listener { - public: - explicit remove_children_listener(self_t & node); - virtual ~remove_children_listener() OPENVRML_NOTHROW; - - private: - virtual void do_process_event(const mfnode & fraction, - double timestamp) - OPENVRML_THROW1(std::bad_alloc); - }; - - add_children_listener add_children_listener_; - remove_children_listener remove_children_listener_; - exposedfield<mfnode> children_; - - public: - contour2d_node(const node_type & type, - const boost::shared_ptr<openvrml::scope> & scope); - virtual ~contour2d_node() OPENVRML_NOTHROW; - }; - - class OPENVRML_LOCAL contour_polyline2d_node : - public abstract_node<contour_polyline2d_node> { - - friend class contour_polyline2d_metatype; - - exposedfield<mfvec2f> point_; - - public: - contour_polyline2d_node( - const node_type & type, - const boost::shared_ptr<openvrml::scope> & scope); - virtual ~contour_polyline2d_node() OPENVRML_NOTHROW; - }; - - class OPENVRML_LOCAL coordinate_double_node : - public abstract_node<coordinate_double_node> { - - friend class coordinate_double_metatype; - - exposedfield<mfvec3d> point_; - - public: - coordinate_double_node( - const node_type & type, - const boost::shared_ptr<openvrml::scope> & scope); - virtual ~coordinate_double_node() OPENVRML_NOTHROW; - }; - - class OPENVRML_LOCAL nurbs_curve_node : - public abstract_node<nurbs_curve_node>, - public geometry_node, - public child_node { - - friend class nurbs_curve_metatype; - - exposedfield<sfnode> control_point_; - exposedfield<sfint32> tessellation_; - exposedfield<mfdouble> weight_; - sfbool closed_; - mfdouble knot_; - sfint32 order_; - - public: - nurbs_curve_node(const node_type & type, - const boost::shared_ptr<openvrml::scope> & scope); - virtual ~nurbs_curve_node() OPENVRML_NOTHROW; - - virtual bool modified() const; - private: - virtual viewer::object_t do_render_geometry(openvrml::viewer & viewer, - rendering_context context); - }; - - class OPENVRML_LOCAL nurbs_curve2d_node : - public abstract_node<nurbs_curve2d_node> { - - friend class nurbs_curve2d_metatype; - - exposedfield<mfvec2d> control_point_; - exposedfield<sfint32> tessellation_; - exposedfield<mfdouble> weight_; - sfbool closed_; - mfdouble knot_; - sfint32 order_; - - public: - nurbs_curve2d_node(const node_type & type, - const boost::shared_ptr<openvrml::scope> & scope); - virtual ~nurbs_curve2d_node() OPENVRML_NOTHROW; - }; - - class OPENVRML_LOCAL nurbs_orientation_interpolator_node : - public abstract_node<nurbs_orientation_interpolator_node>, - public child_node { - - friend class nurbs_orientation_interpolator_metatype; - - class set_fraction_listener : public event_listener_base<self_t>, - public sffloat_listener { - public: - explicit set_fraction_listener(self_t & node); - virtual ~set_fraction_listener() OPENVRML_NOTHROW; - - private: - virtual void do_process_event(const sffloat & fraction, - double timestamp) - OPENVRML_THROW1(std::bad_alloc); - }; - - set_fraction_listener set_fraction_listener_; - exposedfield<sfnode> control_points_; - exposedfield<mfdouble> knot_; - exposedfield<sfint32> order_; - exposedfield<mfdouble> weight_; - sfrotation value_changed_; - sfrotation_emitter value_changed_emitter_; - - public: - nurbs_orientation_interpolator_node( - const node_type & type, - const boost::shared_ptr<openvrml::scope> & scope); - - virtual ~nurbs_orientation_interpolator_node() OPENVRML_NOTHROW; - }; - - class OPENVRML_LOCAL nurbs_patch_surface_node : - public abstract_node<nurbs_patch_surface_node>, - public geometry_node, - public child_node { - - friend class nurbs_patch_surface_metatype; - - exposedfield<sfnode> control_point_; - exposedfield<sfnode> tex_coord_; - exposedfield<sfint32> u_tessellation_; - exposedfield<sfint32> v_tessellation_; - exposedfield<mfdouble> weight_; - sfbool solid_; - sfbool u_closed_; - sfint32 u_dimension_; - mfdouble u_knot_; - sfint32 u_order_; - sfbool v_closed_; - sfint32 v_dimension_; - mfdouble v_knot_; - sfint32 v_order_; - - public: - nurbs_patch_surface_node( - const node_type & type, - const boost::shared_ptr<openvrml::scope> & scope); - virtual ~nurbs_patch_surface_node() OPENVRML_NOTHROW; - - virtual bool modified() const; - private: - virtual viewer::object_t do_render_geometry(openvrml::viewer & viewer, - rendering_context context); - }; - - class OPENVRML_LOCAL nurbs_position_interpolator_node : - public abstract_node<nurbs_position_interpolator_node>, - public child_node { - - friend class nurbs_position_interpolator_metatype; - - class set_fraction_listener : public event_listener_base<self_t>, - public sffloat_listener { - public: - explicit set_fraction_listener(self_t & node); - virtual ~set_fraction_listener() OPENVRML_NOTHROW; - - private: - virtual void do_process_event(const sffloat & fraction, - double timestamp) - OPENVRML_THROW1(std::bad_alloc); - }; - - set_fraction_listener set_fraction_listener_; - exposedfield<sfnode> control_points_; - exposedfield<mfdouble> knot_; - exposedfield<sfint32> order_; - exposedfield<mfdouble> weight_; - sfvec3f value_changed_; - sfvec3f_emitter value_changed_emitter_; - - public: - nurbs_position_interpolator_node( - const node_type & type, - const boost::shared_ptr<openvrml::scope> & scope); - - virtual ~nurbs_position_interpolator_node() OPENVRML_NOTHROW; - }; - - class OPENVRML_LOCAL nurbs_set_node : - public abstract_node<nurbs_set_node>, - public child_node { - - friend class nurbs_set_metatype; - - class add_geometry_listener : public event_listener_base<self_t>, - public mfnode_listener { - public: - explicit add_geometry_listener(self_t & node); - virtual ~add_geometry_listener() OPENVRML_NOTHROW; - - private: - virtual void do_process_event(const mfnode & fraction, - double timestamp) - OPENVRML_THROW1(std::bad_alloc); - }; - - class remove_geometry_listener : - public event_listener_base<self_t>, - public mfnode_listener - { - public: - explicit remove_geometry_listener(self_t & node); - virtual ~remove_geometry_listener() OPENVRML_NOTHROW; - - private: - virtual void do_process_event(const mfnode & fraction, - double timestamp) - OPENVRML_THROW1(std::bad_alloc); - }; - - add_geometry_listener add_geometry_listener_; - remove_geometry_listener remove_geometry_listener_; - exposedfield<mfnode> geometry_; - exposedfield<sffloat> tessellation_scale_; - sfvec3f bbox_center_; - sfvec3f bbox_size_; - - public: - nurbs_set_node(const node_type & type, - const boost::shared_ptr<openvrml::scope> & scope); - virtual ~nurbs_set_node() OPENVRML_NOTHROW; - }; - - class OPENVRML_LOCAL nurbs_surface_interpolator_node : - public abstract_node<nurbs_surface_interpolator_node>, - public child_node { - - friend class nurbs_surface_interpolator_metatype; - - class set_fraction_listener : public event_listener_base<self_t>, - public sfvec2f_listener { - public: - explicit set_fraction_listener(self_t & node); - virtual ~set_fraction_listener() OPENVRML_NOTHROW; - - private: - virtual void do_process_event(const sfvec2f & fraction, - double timestamp) - OPENVRML_THROW1(std::bad_alloc); - }; - - set_fraction_listener set_fraction_listener_; - exposedfield<sfnode> control_points_; - exposedfield<mfdouble> weight_; - sfvec3f position_changed_; - sfvec3f_emitter position_changed_emitter_; - sfvec3f normal_changed_; - sfvec3f_emitter normal_changed_emitter_; - sfint32 u_dimension_; - mfdouble u_knot_; - sfint32 u_order_; - sfint32 v_dimension_; - mfdouble v_knot_; - sfint32 v_order_; - - public: - nurbs_surface_interpolator_node( - const node_type & type, - const boost::shared_ptr<openvrml::scope> & scope); - virtual ~nurbs_surface_interpolator_node() OPENVRML_NOTHROW; - }; - - class OPENVRML_LOCAL nurbs_swept_surface_node : - public abstract_node<nurbs_swept_surface_node>, - public geometry_node, - public child_node { - - friend class nurbs_swept_surface_metatype; - - exposedfield<sfnode> cross_section_curve_; - exposedfield<sfnode> trajectory_curve_; - sfbool ccw_; - sfbool solid_; - - public: - nurbs_swept_surface_node( - const node_type & type, - const boost::shared_ptr<openvrml::scope> & scope); - virtual ~nurbs_swept_surface_node() OPENVRML_NOTHROW; - - virtual bool modified() const; - private: - virtual viewer::object_t do_render_geometry(openvrml::viewer & viewer, - rendering_context context); - }; - - class OPENVRML_LOCAL nurbs_swung_surface_node : - public abstract_node<nurbs_swung_surface_node>, - public geometry_node, - public child_node { - - friend class nurbs_swung_surface_metatype; - - exposedfield<sfnode> componentcurve_; - exposedfield<sfnode> trajectory_curve_; - sfbool ccw_; - sfbool solid_; - - public: - nurbs_swung_surface_node( - const node_type & type, - const boost::shared_ptr<openvrml::scope> & scope); - virtual ~nurbs_swung_surface_node() OPENVRML_NOTHROW; - - virtual bool modified() const; - private: - virtual viewer::object_t do_render_geometry(openvrml::viewer & viewer, - rendering_context context); - }; - - class OPENVRML_LOCAL nurbs_texture_coordinate_node : - public abstract_node<nurbs_texture_coordinate_node> { - - friend class nurbs_texture_coordinate_metatype; - - exposedfield<mfvec2f> control_point_; - exposedfield<mffloat> weight_; - sfint32 u_dimension_; - mfdouble u_knot_; - sfint32 u_order_; - sfint32 v_dimension_; - mfdouble v_knot_; - sfint32 v_order_; - - public: - nurbs_texture_coordinate_node( - const node_type & type, - const boost::shared_ptr<openvrml::scope> & scope); - virtual ~nurbs_texture_coordinate_node() OPENVRML_NOTHROW; - }; - - class OPENVRML_LOCAL nurbs_trimmed_surface_node : - public abstract_node<nurbs_trimmed_surface_node>, - public geometry_node, - public child_node { - - friend class nurbs_trimmed_surface_metatype; - - class add_trimming_contour_listener : - public event_listener_base<self_t>, - public mfnode_listener { - public: - explicit add_trimming_contour_listener(self_t & node); - virtual ~add_trimming_contour_listener() OPENVRML_NOTHROW; - - private: - virtual void do_process_event(const mfnode & fraction, - double timestamp) - OPENVRML_THROW1(std::bad_alloc); - }; - - class remove_trimming_contour_listener : - public event_listener_base<self_t>, - public mfnode_listener { - public: - explicit remove_trimming_contour_listener(self_t & node); - virtual ~remove_trimming_contour_listener() OPENVRML_NOTHROW; - - private: - virtual void do_process_event(const mfnode & fraction, - double timestamp) - OPENVRML_THROW1(std::bad_alloc); - }; - - add_trimming_contour_listener add_trimming_contour_listener_; - remove_trimming_contour_listener remove_trimming_contour_listener_; - exposedfield<sfnode> control_point_; - exposedfield<sfnode> tex_coord_; - exposedfield<mfnode> trimming_contour_; - exposedfield<sfint32> u_tessellation_; - exposedfield<sfint32> v_tessellation_; - exposedfield<mfdouble> weight_; - sfbool solid_; - sfbool u_closed_; - sfint32 u_dimension_; - mfdouble u_knot_; - sfint32 u_order_; - sfbool v_closed_; - sfint32 v_dimension_; - mfdouble v_knot_; - sfint32 v_order_; - - public: - nurbs_trimmed_surface_node( - const node_type & type, - const boost::shared_ptr<openvrml::scope> & scope); - virtual ~nurbs_trimmed_surface_node() OPENVRML_NOTHROW; - - virtual bool modified() const; - private: - virtual viewer::object_t do_render_geometry(openvrml::viewer & viewer, - rendering_context context); - }; - - /** - * @brief @c node_metatype identifier. - */ - const char * const contour2d_metatype::id = "urn:X-openvrml:node:Contour2D"; - - /** - * @brief Construct. - * - * @param browser the @c browser associated with this @c contour2d_metatype. - */ - contour2d_metatype::contour2d_metatype(openvrml::browser & browser): - node_metatype(contour2d_metatype::id, browser) - {} - - /** - * @brief Destroy. - */ - contour2d_metatype::~contour2d_metatype() OPENVRML_NOTHROW - {} - - /** - * @brief Create a node_type. - * - * @param id the name for the new node_type. - * @param interfaces the interfaces for the new node_type. - * - * @return a @c node_type capable of creating Contour2D nodes. - * - * @exception unsupported_interface if @p interfaces includes an interface - * not supported by contour2d_metatype. - * @exception std::bad_alloc if memory allocation fails. - */ - const boost::shared_ptr<openvrml::node_type> - contour2d_metatype:: - do_create_type(const std::string & id, - const node_interface_set & interfaces) const - OPENVRML_THROW2(unsupported_interface, std::bad_alloc) - { - typedef boost::array<node_interface, 4> supported_interfaces_t; - static const supported_interfaces_t supported_interfaces = { - node_interface(node_interface::exposedfield_id, - field_value::sfnode_id, - "metadata"), - node_interface(node_interface::eventin_id, - field_value::mfnode_id, - "addChildren"), - node_interface(node_interface::eventin_id, - field_value::mfnode_id, - "removeChildren"), - node_interface(node_interface::exposedfield_id, - field_value::mfnode_id, - "children") - }; - typedef node_type_impl<contour2d_node> node_type_t; - - const boost::shared_ptr<node_type> type(new node_type_t(*this, id)); - node_type_t & the_node_type = static_cast<node_type_t &>(*type); - - for (node_interface_set::const_iterator interface_(interfaces.begin()); - interface_ != interfaces.end(); - ++interface_) { - supported_interfaces_t::const_iterator supported_interface = - supported_interfaces.begin() - 1; - if (*interface_ == *++supported_interface) { - the_node_type.add_exposedfield( - supported_interface->field_type, - supported_interface->id, - &contour2d_node::metadata); - } else if (*interface_ == *++supported_interface) { - the_node_type.add_eventin( - supported_interface->field_type, - supported_interface->id, - &contour2d_node::add_children_listener_); - } else if (*interface_ == *++supported_interface) { - the_node_type.add_eventin( - supported_interface->field_type, - supported_interface->id, - &contour2d_node::remove_children_listener_); - } else if (*interface_ == *++supported_interface) { - the_node_type.add_exposedfield( - supported_interface->field_type, - supported_interface->id, - &contour2d_node::children_); - } else { - throw unsupported_interface(*interface_); - } - } - return type; - } - - - /** - * @brief @c node_metatype identifier. - */ - const char * const contour_polyline2d_metatype::id = - "urn:X-openvrml:node:ContourPolyline2D"; - - /** - * @brief Construct. - * - * @param browser the @c browser associated with this - * @c contour_polyline2d_metatype. - */ - contour_polyline2d_metatype:: - contour_polyline2d_metatype(openvrml::browser & browser): - node_metatype(contour_polyline2d_metatype::id, browser) - {} - - /** - * @brief Destroy. - */ - contour_polyline2d_metatype::~contour_polyline2d_metatype() OPENVRML_NOTHROW - {} - - /** - * @brief Create a node_type. - * - * @param id the name for the new node_type. - * @param interfaces the interfaces for the new node_type. - * - * @return a @c node_type capable of creating ContourPolyline2D nodes. - * - * @exception unsupported_interface if @p interfaces includes an interface - * not supported by contour_polyline2d_metatype. - * @exception std::bad_alloc if memory allocation fails. - */ - const boost::shared_ptr<openvrml::node_type> - contour_polyline2d_metatype:: - do_create_type(const std::string & id, - const node_interface_set & interfaces) const - OPENVRML_THROW2(unsupported_interface, std::bad_alloc) - { - typedef boost::array<node_interface, 3> supported_interfaces_t; - static const supported_interfaces_t supported_interfaces = { - node_interface(node_interface::exposedfield_id, - field_value::sfnode_id, - "metadata"), - //this is wrong in the spec, so we must support both aliases - node_interface(node_interface::exposedfield_id, - field_value::mfvec2f_id, - "point"), - node_interface(node_interface::exposedfield_id, - field_value::mfvec2f_id, - "controlPoint") - }; - typedef node_type_impl<contour_polyline2d_node> node_type_t; - - const boost::shared_ptr<node_type> type(new node_type_t(*this, id)); - node_type_t & the_node_type = static_cast<node_type_t &>(*type); - - for (node_interface_set::const_iterator interface_(interfaces.begin()); - interface_ != interfaces.end(); - ++interface_) { - supported_interfaces_t::const_iterator supported_interface = - supported_interfaces.begin() - 1; - if (*interface_ == *++supported_interface) { - the_node_type.add_exposedfield( - supported_interface->field_type, - supported_interface->id, - &contour_polyline2d_node::metadata); - } else if (*interface_ == *++supported_interface || - *interface_ == *++supported_interface) { - the_node_type.add_exposedfield( - supported_interface->field_type, - supported_interface->id, - &contour_polyline2d_node::point_); - } else { - throw unsupported_interface(*interface_); - } - } - return type; - } - - - /** - * @brief @c node_metatype identifier. - */ - const char * const coordinate_double_metatype::id = - "urn:X-openvrml:node:CoordinateDouble"; - - /** - * @brief Construct. - * - * @param browser the @c browser associated with this - * @c coordinate_double_metatype. - */ - coordinate_double_metatype:: - coordinate_double_metatype(openvrml::browser & browser): - node_metatype(coordinate_double_metatype::id, browser) - {} - - /** - * @brief Destroy. - */ - coordinate_double_metatype::~coordinate_double_metatype() OPENVRML_NOTHROW - {} - - /** - * @brief Create a node_type. - * - * @param id the name for the new node_type. - * @param interfaces the interfaces for the new node_type. - * - * @return a @c node_type capable of creating CoordinateDouble nodes. - * - * @exception unsupported_interface if @p interfaces includes an interface - * not supported by coordinate_double_metatype. - * @exception std::bad_alloc if memory allocation fails. - */ - const boost::shared_ptr<openvrml::node_type> - coordinate_double_metatype:: - do_create_type(const std::string & id, - const node_interface_set & interfaces) const - OPENVRML_THROW2(unsupported_interface, std::bad_alloc) - { - typedef boost::array<node_interface, 2> supported_interfaces_t; - static const supported_interfaces_t supported_interfaces = { - node_interface(node_interface::exposedfield_id, - field_value::sfnode_id, - "metadata"), - node_interface(node_interface::exposedfield_id, - field_value::mfvec3d_id, - "point") - }; - typedef node_type_impl<coordinate_double_node> node_type_t; - - const boost::shared_ptr<node_type> type(new node_type_t(*this, id)); - node_type_t & the_node_type = static_cast<node_type_t &>(*type); - - for (node_interface_set::const_iterator interface_(interfaces.begin()); - interface_ != interfaces.end(); - ++interface_) { - supported_interfaces_t::const_iterator supported_interface = - supported_interfaces.begin() - 1; - if (*interface_ == *++supported_interface) { - the_node_type.add_exposedfield( - supported_interface->field_type, - supported_interface->id, - &coordinate_double_node::metadata); - } else if (*interface_ == *++supported_interface) { - the_node_type.add_exposedfield( - supported_interface->field_type, - supported_interface->id, - &coordinate_double_node::point_); - } else { - throw unsupported_interface(*interface_); - } - } - return type; - } - - - /** - * @brief @c node_metatype identifier. - */ - const char * const nurbs_curve_metatype::id = - "urn:X-openvrml:node:NurbsCurve"; - - /** - * @brief Construct. - * - * @param browser the @c browser associated with this @c nurbs_curve_metatype. - */ - nurbs_curve_metatype::nurbs_curve_metatype(openvrml::browser & browser): - node_metatype(nurbs_curve_metatype::id, browser) - {} - - /** - * @brief Destroy. - */ - nurbs_curve_metatype::~nurbs_curve_metatype() OPENVRML_NOTHROW - {} - - /** - * @brief Create a node_type. - * - * @param id the name for the new node_type. - * @param interfaces the interfaces for the new node_type. - * - * @return a @c node_type capable of creating NurbsCurve nodes. - * - * @exception unsupported_interface if @p interfaces includes an interface - * not supported by nurbs_curve_metatype. - * @exception std::bad_alloc if memory allocation fails. - */ - const boost::shared_ptr<openvrml::node_type> - nurbs_curve_metatype:: - do_create_type(const std::string & id, - const node_interface_set & interfaces) const - OPENVRML_THROW2(unsupported_interface, std::bad_alloc) - { - typedef boost::array<node_interface, 7> supported_interfaces_t; - static const supported_interfaces_t supported_interfaces = { - node_interface(node_interface::exposedfield_id, - field_value::sfnode_id, - "metadata"), - node_interface(node_interface::exposedfield_id, - field_value::sfnode_id, - "controlPoint"), - node_interface(node_interface::exposedfield_id, - field_value::sfint32_id, - "tessellation"), - node_interface(node_interface::exposedfield_id, - field_value::mfdouble_id, - "weight"), - node_interface(node_interface::field_id, - field_value::sfbool_id, - "closed"), - node_interface(node_interface::field_id, - field_value::mfdouble_id, - "knot"), - node_interface(node_interface::field_id, - field_value::sfint32_id, - "order") - }; - typedef node_type_impl<nurbs_curve_node> node_type_t; - - const boost::shared_ptr<node_type> type(new node_type_t(*this, id)); - node_type_t & the_node_type = static_cast<node_type_t &>(*type); - - for (node_interface_set::const_iterator interface_(interfaces.begin()); - interface_ != interfaces.end(); - ++interface_) { - supported_interfaces_t::const_iterator supported_interface = - supported_interfaces.begin() - 1; - if (*interface_ == *++supported_interface) { - the_node_type.add_exposedfield( - supported_interface->field_type, - supported_interface->id, - &nurbs_curve_node::metadata); - } else if (*interface_ == *++supported_interface) { - the_node_type.add_exposedfield( - supported_interface->field_type, - supported_interface->id, - &nurbs_curve_node::control_point_); - } else if (*interface_ == *++supported_interface) { - the_node_type.add_exposedfield( - supported_interface->field_type, - supported_interface->id, - &nurbs_curve_node::tessellation_); - } else if (*interface_ == *++supported_interface) { - the_node_type.add_exposedfield( - supported_interface->field_type, - supported_interface->id, - &nurbs_curve_node::weight_); - } else if (*interface_ == *++supported_interface) { - the_node_type.add_field( - supported_interface->field_type, - supported_interface->id, - &nurbs_curve_node::closed_); - } else if (*interface_ == *++supported_interface) { - the_node_type.add_field( - supported_interface->field_type, - supported_interface->id, - &nurbs_curve_node::knot_); - } else if (*interface_ == *++supported_interface) { - the_node_type.add_field( - supported_interface->field_type, - supported_interface->id, - &nurbs_curve_node::order_); - } else { - throw unsupported_interface(*interface_); - } - } - return type; - } - - - /** - * @brief @c node_metatype identifier. - */ - const char * const nurbs_curve2d_metatype::id = - "urn:X-openvrml:node:NurbsCurve2D"; - - /** - * @brief Construct. - * - * @param browser the @c browser associated with this - * @c nurbs_curve2d_metatype. - */ - nurbs_curve2d_metatype::nurbs_curve2d_metatype(openvrml::browser & browser): - node_metatype(nurbs_curve2d_metatype::id, browser) - {} - - /** - * @brief Destroy. - */ - nurbs_curve2d_metatype::~nurbs_curve2d_metatype() OPENVRML_NOTHROW - {} - - /** - * @brief Create a node_type. - * - * @param id the name for the new node_type. - * @param interfaces the interfaces for the new node_type. - * - * @return a @c node_type capable of creating NurbsCurve2D nodes. - * - * @exception unsupported_interface if @p interfaces includes an interface - * not supported by nurbs_curve2d_metatype. - * @exception std::bad_alloc if memory allocation fails. - */ - const boost::shared_ptr<openvrml::node_type> - nurbs_curve2d_metatype:: - do_create_type(const std::string & id, - const node_interface_set & interfaces) const - OPENVRML_THROW2(unsupported_interface, std::bad_alloc) - { - typedef boost::array<node_interface, 7> supported_interfaces_t; - static const supported_interfaces_t supported_interfaces = { - node_interface(node_interface::exposedfield_id, - field_value::sfnode_id, - "metadata"), - node_interface(node_interface::exposedfield_id, - field_value::mfvec2d_id, - "controlPoint"), - node_interface(node_interface::exposedfield_id, - field_value::sfint32_id, - "tessellation"), - node_interface(node_interface::exposedfield_id, - field_value::mfdouble_id, - "weight"), - node_interface(node_interface::field_id, - field_value::sfbool_id, - "closed"), - node_interface(node_interface::field_id, - field_value::mfdouble_id, - "knot"), - node_interface(node_interface::field_id, - field_value::sfint32_id, - "order") - }; - typedef node_type_impl<nurbs_curve2d_node> node_type_t; - - const boost::shared_ptr<node_type> type(new node_type_t(*this, id)); - node_type_t & the_node_type = static_cast<node_type_t &>(*type); - - for (node_interface_set::const_iterator interface_(interfaces.begin()); - interface_ != interfaces.end(); - ++interface_) { - supported_interfaces_t::const_iterator supported_interface = - supported_interfaces.begin() - 1; - if (*interface_ == *++supported_interface) { - the_node_type.add_exposedfield( - supported_interface->field_type, - supported_interface->id, - &nurbs_curve2d_node::metadata); - } else if (*interface_ == *++supported_interface) { - the_node_type.add_exposedfield( - supported_interface->field_type, - supported_interface->id, - &nurbs_curve2d_node::control_point_); - } else if (*interface_ == *++supported_interface) { - the_node_type.add_exposedfield( - supported_interface->field_type, - supported_interface->id, - &nurbs_curve2d_node::tessellation_); - } else if (*interface_ == *++supported_interface) { - the_node_type.add_exposedfield( - supported_interface->field_type, - supported_interface->id, - &nurbs_curve2d_node::weight_); - } else if (*interface_ == *++supported_interface) { - the_node_type.add_field( - supported_interface->field_type, - supported_interface->id, - &nurbs_curve2d_node::closed_); - } else if (*interface_ == *++supported_interface) { - the_node_type.add_field( - supported_interface->field_type, - supported_interface->id, - &nurbs_curve2d_node::knot_); - } else if (*interface_ == *++supported_interface) { - the_node_type.add_field( - supported_interface->field_type, - supported_interface->id, - &nurbs_curve2d_node::order_); - } else { - throw unsupported_interface(*interface_); - } - } - return type; - } - - - /** - * @brief @c node_metatype identifier. - */ - const char * const nurbs_orientation_interpolator_metatype::id = - "urn:X-openvrml:node:NurbsOrientationInterpolator"; - - /** - * @brief Construct. - * - * @param browser the @c browser associated with this - * @c nurbs_orientation_interpolator_metatype. - */ - nurbs_orientation_interpolator_metatype:: - nurbs_orientation_interpolator_metatype(openvrml::browser & browser): - node_metatype(nurbs_orientation_interpolator_metatype::id, browser) - {} - - /** - * @brief Destroy. - */ - nurbs_orientation_interpolator_metatype::~nurbs_orientation_interpolator_metatype() OPENVRML_NOTHROW - {} - - /** - * @brief Create a node_type. - * - * @param id the name for the new node_type. - * @param interfaces the interfaces for the new node_type. - * - * @return a @c node_type capable of creating NurbsOrientationInterpolator - * nodes. - * - * @exception unsupported_interface if @p interfaces includes an interface - * not supported by nurbs_orientation_interpolator_metatype. - * @exception std::bad_alloc if memory allocation fails. - */ - const boost::shared_ptr<openvrml::node_type> - nurbs_orientation_interpolator_metatype:: - do_create_type(const std::string & id, - const node_interface_set & interfaces) const - OPENVRML_THROW2(unsupported_interface, std::bad_alloc) - { - typedef boost::array<node_interface, 7> supported_interfaces_t; - static const supported_interfaces_t supported_interfaces = { - node_interface(node_interface::exposedfield_id, - field_value::sfnode_id, - "metadata"), - node_interface(node_interface::eventin_id, - field_value::sffloat_id, - "set_fraction"), - node_interface(node_interface::exposedfield_id, - field_value::sfnode_id, - "controlPoints"), - node_interface(node_interface::exposedfield_id, - field_value::mfdouble_id, - "knot"), - node_interface(node_interface::exposedfield_id, - field_value::sfint32_id, - "order"), - node_interface(node_interface::exposedfield_id, - field_value::mfdouble_id, - "weight"), - node_interface(node_interface::eventout_id, - field_value::sfrotation_id, - "value_changed") - }; - typedef node_type_impl<nurbs_orientation_interpolator_node> node_type_t; - - const boost::shared_ptr<node_type> type(new node_type_t(*this, id)); - node_type_t & the_node_type = static_cast<node_type_t &>(*type); - - for (node_interface_set::const_iterator interface_(interfaces.begin()); - interface_ != interfaces.end(); - ++interface_) { - supported_interfaces_t::const_iterator supported_interface = - supported_interfaces.begin() - 1; - if (*interface_ == *++supported_interface) { - the_node_type.add_exposedfield( - supported_interface->field_type, - supported_interface->id, - &nurbs_orientation_interpolator_node::metadata); - } else if (*interface_ == *++supported_interface) { - the_node_type.add_eventin( - supported_interface->field_type, - supported_interface->id, - &nurbs_orientation_interpolator_node::set_fraction_listener_); - } else if (*interface_ == *++supported_interface) { - the_node_type.add_exposedfield( - supported_interface->field_type, - supported_interface->id, - &nurbs_orientation_interpolator_node::control_points_); - } else if (*interface_ == *++supported_interface) { - the_node_type.add_exposedfield( - supported_interface->field_type, - supported_interface->id, - &nurbs_orientation_interpolator_node::knot_); - } else if (*interface_ == *++supported_interface) { - the_node_type.add_exposedfield( - supported_interface->field_type, - supported_interface->id, - &nurbs_orientation_interpolator_node::order_); - } else if (*interface_ == *++supported_interface) { - the_node_type.add_exposedfield( - supported_interface->field_type, - supported_interface->id, - &nurbs_orientation_interpolator_node::weight_); - } else if (*interface_ == *++supported_interface) { - the_node_type.add_eventout( - supported_interface->field_type, - supported_interface->id, - &nurbs_orientation_interpolator_node::value_changed_emitter_); - } else { - throw unsupported_interface(*interface_); - } - } - return type; - } - - - /** - * @brief @c node_metatype identifier. - */ - const char * const nurbs_patch_surface_metatype::id = - "urn:X-openvrml:node:NurbsPatchSurface"; - - /** - * @brief Construct. - * - * @param browser the @c browser associated with this - * @c nurbs_patch_surface_metatype. - */ - nurbs_patch_surface_metatype:: - nurbs_patch_surface_metatype(openvrml::browser & browser): - node_metatype(nurbs_patch_surface_metatype::id, browser) - {} - - /** - * @brief Destroy. - */ - nurbs_patch_surface_metatype::~nurbs_patch_surface_metatype() OPENVRML_NOTHROW - {} - - /** - * @brief Create a node_type. - * - * @param id the name for the new node_type. - * @param interfaces the interfaces for the new node_type. - * - * @return a @c node_type capable of creating NurbsPatchSurface nodes. - * - * @exception unsupported_interface if @p interfaces includes an interface - * not supported by nurbs_patch_surface_metatype. - * @exception std::bad_alloc if memory allocation fails. - */ - const boost::shared_ptr<openvrml::node_type> - nurbs_patch_surface_metatype:: - do_create_type(const std::string & id, - const node_interface_set & interfaces) const - OPENVRML_THROW2(unsupported_interface, std::bad_alloc) - { - typedef boost::array<node_interface, 15> supported_interfaces_t; - static const supported_interfaces_t supported_interfaces = { - node_interface(node_interface::exposedfield_id, - field_value::sfnode_id, - "metadata"), - node_interface(node_interface::exposedfield_id, - field_value::sfnode_id, - "controlPoint"), - node_interface(node_interface::exposedfield_id, - field_value::sfnode_id, - "texCoord"), - node_interface(node_interface::exposedfield_id, - field_value::sfint32_id, - "uTessellation"), - node_interface(node_interface::exposedfield_id, - field_value::sfint32_id, - "vTessellation"), - node_interface(node_interface::exposedfield_id, - field_value::mfdouble_id, - "weight"), - node_interface(node_interface::field_id, - field_value::sfbool_id, - "solid"), - node_interface(node_interface::field_id, - field_value::sfbool_id, - "uClosed"), - node_interface(node_interface::field_id, - field_value::sfint32_id, - "uDimension"), - node_interface(node_interface::field_id, - field_value::mfdouble_id, - "uKnot"), - node_interface(node_interface::field_id, - field_value::sfint32_id, - "uOrder"), - node_interface(node_interface::field_id, - field_value::sfbool_id, - "vClosed"), - node_interface(node_interface::field_id, - field_value::sfint32_id, - "vDimension"), - ... [truncated message content] |