Graphite
Version 3
An experimental 3D geometry processing program
|
Represents the list of objects loaded in Graphite. More...
#include <OGF/scene_graph/types/scene_graph.h>
Public Member Functions | |
SceneGraph (Interpreter *interpreter=nullptr) | |
SceneGraph constructor. More... | |
~SceneGraph () override | |
SceneGraph destructor. | |
void | update () override |
Triggers the value_changed() signal. | |
void | update_values () |
Triggers the values_changed(), visibilities_changed(), types_changed() and value_changed() signals. | |
bool | is_serializable () const override |
Tests whether this Grob can be serialized in GeoFile. More... | |
bool | serialize_read (InputGraphiteFile &in) override |
Reads this Grob from a GeoFile. More... | |
bool | serialize_write (OutputGraphiteFile &out) override |
Writes this Grob into a stream. More... | |
void | delete_current_object () |
Deletes the current object. | |
Grob * | duplicate_current () |
Duplicates the current object. More... | |
void | move_current_up () |
Swaps the current object with the previous one. More... | |
void | move_current_down () |
Swaps the current object with the next one. More... | |
void | clear () override |
Clears this SceneGraph. More... | |
Grob * | load_object (const FileName &value, const std::string &type="default", bool invoked_from_gui=false) |
Loads an object from a file, and stores it in this SceneGraph. More... | |
void | load_objects (const std::string &value, const std::string &type="default", bool invoked_from_gui=false) |
Loads objects from a list of files, and stores them in this SceneGraph. More... | |
bool | save_current_object (const NewFileName &value) |
Saves the current object to a file. More... | |
Grob * | create_object (const GrobClassName &classname, const std::string &name="") |
Creates an object. More... | |
Grob * | create_mesh (const std::string &name="") |
Creates a mesh. More... | |
Grob * | find_or_create_object (const GrobClassName &classname, const std::string &name) |
Creates a new object or retreives an existing one. More... | |
Grob * | current () |
Gets the current object. More... | |
void | set_visibility (index_t index, bool value) |
Sets the visibility flag of one of the objects. More... | |
void | register_grob_commands (MetaClass *grob_class, MetaClass *commands_class) |
Associates a Commands class to a Grob class. More... | |
const std::string & | get_current_object () const |
Gets the name of the current object. More... | |
std::string | get_values () const |
Gets the names of all the objects in this SceneGraph. More... | |
void | set_visibilities (const std::string &value) |
Sets the visibility flags for all the objects. More... | |
std::string | get_visibilities () const |
Gets the visibility flags for all the objects. More... | |
std::string | get_types () const |
Gets the object types for all the objects. More... | |
void | set_render_area (Object *rdra) |
Sets the render area. More... | |
Object * | get_render_area () const |
Gets the render area. More... | |
void | set_application (Object *app) |
Sets the application. More... | |
Object * | get_application () const |
Gets the application. More... | |
void | set_scene_graph_shader_manager (Object *sgshdmgr) |
sets the scene graph shader manager. More... | |
Object * | get_scene_graph_shader_manager () const |
gets the scene graph shader manager. More... | |
virtual void | visibilities_changed (const std::string &value) |
a signal that is triggered whenever object visibility flags change. More... | |
virtual void | types_changed (const std::string &value) |
a signal that is triggered whenever the list of objects changes. More... | |
void | value_changed (Grob *value) override |
a signal that is triggered whenever this SceneGraph changes. More... | |
virtual void | current_object_changed (const std::string &value) |
a signal that is triggered whenever the current object changes. More... | |
void | grob_created (const std::string &name) |
a signal that is triggered whenever an object is created in this SceneGraph More... | |
void | grob_deleted (const std::string &name) |
a signal that is triggered whenever an object is deleted in this SceneGraph More... | |
void | grob_renamed () |
a signal that is triggered whenever an object is renamed in this SceneGraph | |
void | set_current_object (const std::string &value, bool record_history) |
Sets the current object. More... | |
Interpreter * | interpreter () override |
Gets a pointer to the main Interpreter. More... | |
Public Member Functions inherited from OGF::CompositeGrob | |
CompositeGrob (CompositeGrob *parent) | |
CompositeGrob constructor. More... | |
Grob * | resolve (const std::string &name) const |
Finds a child by name. More... | |
Grob * | ith_child (index_t i) const |
Gets a child by index. More... | |
void | add_child (Node *child) override |
Adds a child to this Grob. More... | |
void | remove_child (Node *child) override |
Removes a child from this Grob. More... | |
Box3d | bbox () const override |
Gets the bounding box. More... | |
Box3d | world_bbox () const override |
Gets the bounding box in world coordinates. More... | |
Public Member Functions inherited from OGF::Grob | |
Grob (CompositeGrob *parent) | |
Grob constructor. More... | |
~Grob () override | |
Grob destructor. | |
const std::string & | name () const |
Gets the name of this Grob. More... | |
void | set_shader (const std::string &value) |
Changes the current shader of this Grob. More... | |
void | get_shader_and_shader_properties (std::string &classname, ArgList &properties, bool pointers=true) |
Gets the classname of the shader and its properties. More... | |
void | set_shader_and_shader_properties (const std::string &classname, const ArgList &properties) |
Sets the shader and its properties. More... | |
ArgList & | attributes () |
Gets the attributes associated with this Grob. More... | |
const ArgList & | attributes () const |
Gets the attributes associated with this Grob. More... | |
bool | dirty () const |
Gets the dirty flag. More... | |
void | up_to_date () |
Tests whether this object is up to date. More... | |
bool | graphics_are_locked () const |
Tests whether this VoxelGrob is locked for graphics display. More... | |
void | lock_graphics () |
Locks graphics for this VoxelGrob. More... | |
void | unlock_graphics () |
Unlocks graphics for this VoxelGrob. More... | |
virtual void | redraw () |
Triggers update events and redraws the scene. More... | |
SceneGraph * | scene_graph () const |
Gets the SceneGraph. More... | |
virtual bool | load (const FileName &value) |
Replaces this Grob with the contents of a file. More... | |
virtual bool | save (const NewFileName &value) |
Saves this Grob to a file. More... | |
virtual bool | append (const FileName &value) |
Appends the content of the specified file to this Grob. More... | |
virtual void | rename (const std::string &value) |
Renames this Grob. More... | |
virtual Grob * | duplicate (SceneGraph *sg) |
Duplicates this Grob. More... | |
virtual Object * | query_interface (const std::string &name) |
Creates an Interface object connected to this Grob. More... | |
index_t | nb_grob_attributes () const |
gets the number of grob attributes More... | |
const std::string & | ith_grob_attribute_name (index_t i) const |
gets the name of a grob attribute More... | |
std::string | ith_grob_attribute_value (index_t i) const |
gets the value of a grob attribute More... | |
void | set_grob_attribute (const std::string &name, const std::string &value) |
sets the value of a grob attribute More... | |
void | set_filename (const std::string &value) |
Sets the name of this Grob. More... | |
const std::string & | get_filename () const |
Gets the filename of this Grob. More... | |
bool | get_visible () const |
Tests whether this Grob is visible. More... | |
void | set_visible (bool value) |
Sets the visibility flag of this Grob. More... | |
Object * | get_shader () const |
Gets the shader associated with this Grob. More... | |
Object * | get_shader_manager () const |
Gets the ShaderManager associated with this Grob. More... | |
void | set_obj_to_world_transform (const mat4 &value) |
Sets the object to world transform. More... | |
const mat4 & | get_obj_to_world_transform () const |
Gets the object to world transform. More... | |
Public Member Functions inherited from OGF::Node | |
Node (Node *parent=nullptr) | |
Node constructor. More... | |
virtual | ~Node () |
Node destructor. | |
Node * | get_parent () const |
Gets the parent. More... | |
Public Member Functions inherited from OGF::Object | |
Object (bool transient=false) | |
Object constructor. More... | |
virtual | ~Object () |
Object destructor. | |
virtual MetaClass * | meta_class () const |
Gets the meta class. More... | |
virtual void | set_meta_class (MetaClass *mclass) |
Sets the meta class. More... | |
unsigned int | id () const |
Gets the identifier of this object. More... | |
std::string | string_id () const |
Gets the unique string identifier. More... | |
bool | has_method (const std::string &method_name) const |
Tests whether a method is defined. More... | |
virtual bool | invoke_method (const std::string &method_name, const ArgList &args, Any &ret_val) |
Invokes a method by method name and argument list, and gets the return value. More... | |
bool | invoke_method (const std::string &method_name, const ArgList &args) |
Invokes a method by method name and argument list. More... | |
bool | invoke_method (const std::string &method_name) |
Invokes a method by method name. More... | |
bool | has_property (const std::string &prop_name) const |
Tests whether a property is defined. More... | |
virtual bool | get_property (const std::string &prop_name, std::string &prop_value) const |
Gets a property. More... | |
virtual Connection * | connect_signal_to_slot (const std::string &signal_name, Object *to, const std::string &slot_name) |
Connects a signal with a slot of another object. More... | |
virtual void | add_connection (Connection *connection) |
Adds a connection to this object. More... | |
virtual void | remove_connection (Connection *connection) |
Removes a connection to this object. More... | |
virtual void | get_element (index_t i, Any &value) const |
Gets an element by index. More... | |
virtual void | set_element (index_t i, const Any &value) |
Sets an element by index. More... | |
virtual void | search (const std::string &needle, const std::string &path="") |
Displays the names of all objects that contain a substring. More... | |
bool | get_signals_enabled () const |
Tests wheter signals are enabled. More... | |
void | set_signals_enabled (bool value) |
Enables or disables signals. More... | |
bool | get_slots_enabled () const |
Tests wheter slots are enabled. More... | |
void | set_slots_enabled (bool value) |
Enables or disables slots. More... | |
MetaClass * | get_meta_class () const |
Gets the meta class. More... | |
std::string | get_string_id () const |
Gets the unique string identifier. More... | |
virtual std::string | get_doc () const |
Gets the documentation. More... | |
virtual Sign | compare (const Object *other) const |
Compares this object with another one. More... | |
virtual bool | is_a (const MetaType *type) const |
Tests whether this object inherits a given type. More... | |
void | disconnect () |
Removes all connections from signals of this objects. More... | |
void | enable_signals () |
Enables signals. | |
void | disable_signals () |
Disables signals. | |
void | enable_slots () |
Enables slots. | |
void | disable_slots () |
Disables slots. | |
void | set_properties (const ArgList &args) |
Sets several properties in a single call. More... | |
virtual bool | set_property (const std::string &name, const std::string &value) |
Sets an individual property. More... | |
void | help () const |
Displays some help about this object. More... | |
virtual bool | set_property (const std::string &name, const Any &value) |
Sets an individual property. More... | |
virtual bool | get_property (const std::string &prop_name, Any &prop_value) const |
Gets a property. More... | |
Public Member Functions inherited from GEO::Counted | |
void | ref () const |
Increments the reference count. More... | |
void | unref () const |
Decrements the reference count. More... | |
bool | is_shared () const |
Check if the object is shared. More... | |
int | nb_refs () const |
Gets the number of references that point to this object. More... | |
Public Attributes | |
__pad0__: bool save_viewer_properties(const std::string& value) | |
__pad1__: void set_current_object(const std::string& value) | |
gom_signals | __pad2__: virtual void values_changed(const std::string& value) |
Public Attributes inherited from OGF::CompositeGrob | |
__pad0__: Scope* get_objects() const { return new CompositeGrobScope(const_cast<CompositeGrob*>(this)) | |
__pad1__: bool is_bound(const std::string& name) const | |
Public Attributes inherited from OGF::Grob | |
__pad0__: virtual void update() | |
gom_signals | __pad1__: virtual void value_changed(Grob* value) |
__pad2__: const std::string& get_name() const { return name_ | |
Public Attributes inherited from OGF::Node | |
__pad0__: Node* ith_child(index_t i) const { ogf_assert(i < get_nb_children()) | |
return | children_ [i] |
__pad1__: size_t get_nb_children() const { return children_.size() | |
Public Attributes inherited from OGF::Object | |
__pad0__: virtual index_t get_nb_elements() const | |
__pad1__: bool equals(const Object* other) const | |
Protected Member Functions | |
void | begin_graphite_file (OutputGraphiteFile &out, bool all_scene) |
Writes the preamble of a gsg file to a stream. More... | |
void | end_graphite_file (OutputGraphiteFile &out) |
Writes the trailer of a gsg file. More... | |
void | serialize_grob_write (Grob *grob, OutputGraphiteFile &out) |
Writes an object to a geogram file. More... | |
Grob * | serialize_grob_read (InputGraphiteFile &in) |
Reads an object from a geogram file. More... | |
void | get_grob_shader (Grob *grob, std::string &classname, ArgList &properties) |
void | set_grob_shader (Grob *grob, const std::string &classname, const ArgList &properties) |
void | copy_property_to_arglist (const std::string &obj_prop_name, ArgList &args) |
Copies an objet property to an arglist. More... | |
void | copy_arglist_to_properties (const ArgList &args) |
Copies all the object properties previously recorded by copy_property_to_arglist() from an ArgList to the gom objects. More... | |
Protected Member Functions inherited from OGF::Grob | |
void | initialize_name (const std::string &name) |
Initializes the name of this Grob. More... | |
void | set_shader_manager (Object *s) |
Sets the ShaderManager associated with this Grob. More... | |
Protected Member Functions inherited from OGF::Node | |
void | swap_children (Node *n1, Node *n2) |
Swaps two children by indices. More... | |
Protected Member Functions inherited from OGF::Object | |
virtual bool | emit_signal (const std::string &signal_name, const ArgList &args, bool called_from_slot=false) |
Emits a signal and calls the slots it is connected to. More... | |
Protected Member Functions inherited from GEO::Counted | |
Counted () | |
Creates a reference counted object. More... | |
virtual | ~Counted () |
Destroys a reference counted object. More... | |
Static Protected Member Functions | |
static bool | load_aln (const std::string &filename, SceneGraph *sg) |
Loads alignment data for pointsets. More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from OGF::Grob | |
static Grob * | find (SceneGraph *sg, const std::string &name) |
Finds a Grob by name. More... | |
Static Public Member Functions inherited from OGF::Object | |
static Object * | id_to_object (unsigned int id) |
Gets an object from a unique object id. More... | |
Static Public Member Functions inherited from GEO::Counted | |
static void | ref (const Counted *counted) |
Increments the reference count. More... | |
static void | unref (const Counted *counted) |
Decrements the reference count. More... | |
Protected Attributes inherited from OGF::Grob | |
std::string | name_ |
std::string | filename_ |
bool | visible_ |
SceneGraph * | scene_graph_ |
mat4 | obj_to_world_ |
Object_var | shader_manager_ |
ArgList | grob_attributes_ |
bool | dirty_ |
index_t | nb_graphics_locks_ |
Represents the list of objects loaded in Graphite.
A SceneGraph stores a list of Grob and manages the associated events. It has a current object, that is the target of commands invocation.
Definition at line 62 of file scene_graph.h.
OGF::SceneGraph::SceneGraph | ( | Interpreter * | interpreter = nullptr | ) |
SceneGraph constructor.
[in] | interpreter | a pointer to the main interpreter, or nullptr. If interpreter is set to nullptr, then the default interpreter is used. |
|
protected |
Writes the preamble of a gsg file to a stream.
[in,out] | out | the stream |
[in] | all_scene | if true, the gsg file is meant to record the whole scene, else it is for a single object |
|
overridevirtual |
|
protected |
Copies all the object properties previously recorded by copy_property_to_arglist() from an ArgList to the gom objects.
[in] | args | an ArgList, with recorded object properties, with names "objectid.propname", where objectid is the name of a gom object and propname a name of a property of the object. Args with names that do not match this pattern are ignored. |
|
protected |
Copies an objet property to an arglist.
[in] | obj_prop_name | a string in the form "objectid.propname", where objectid is the name of a gom object and propname a name of a property of the object. |
[in,out] | args | the ArgList where the value of the property should be copied. Its name will be "objectid.propname". |
|
inline |
Creates a mesh.
[in] | name | the name of the mesh in the SceneGraph. If no name is specified, then the created object will be given a default name. |
Definition at line 212 of file scene_graph.h.
Grob* OGF::SceneGraph::create_object | ( | const GrobClassName & | classname, |
const std::string & | name = "" |
||
) |
Creates an object.
[in] | classname | the class name of the object to create, as a string, with the "OGF::" prefix |
[in] | name | the name of the object in the SceneGraph. If no name is specified, then the created object will be given a default name. |
Grob* OGF::SceneGraph::current | ( | ) |
Gets the current object.
|
virtual |
a signal that is triggered whenever the current object changes.
[in] | value | the name of the new current object |
Grob* OGF::SceneGraph::duplicate_current | ( | ) |
Duplicates the current object.
The name of the created object will be the same as current object name with "_copy" appended.
|
protected |
Writes the trailer of a gsg file.
[in,out] | out | the stream |
Grob* OGF::SceneGraph::find_or_create_object | ( | const GrobClassName & | classname, |
const std::string & | name | ||
) |
Creates a new object or retreives an existing one.
[in] | classname | the class name of the object to create, as a string, with the "OGF::" prefix. |
[in] | name | the name of the object |
|
inline |
Gets the application.
Definition at line 324 of file scene_graph.h.
const std::string& OGF::SceneGraph::get_current_object | ( | ) | const |
Gets the name of the current object.
|
inline |
Gets the render area.
Definition at line 307 of file scene_graph.h.
Object* OGF::SceneGraph::get_scene_graph_shader_manager | ( | ) | const |
gets the scene graph shader manager.
std::string OGF::SceneGraph::get_types | ( | ) | const |
Gets the object types for all the objects.
std::string OGF::SceneGraph::get_values | ( | ) | const |
Gets the names of all the objects in this SceneGraph.
std::string OGF::SceneGraph::get_visibilities | ( | ) | const |
Gets the visibility flags for all the objects.
void OGF::SceneGraph::grob_created | ( | const std::string & | name | ) |
a signal that is triggered whenever an object is created in this SceneGraph
[in] | name | the name of the created object |
void OGF::SceneGraph::grob_deleted | ( | const std::string & | name | ) |
a signal that is triggered whenever an object is deleted in this SceneGraph
[in] | name | the name of the deleted object |
|
overridevirtual |
Gets a pointer to the main Interpreter.
Reimplemented from OGF::Grob.
|
overridevirtual |
Tests whether this Grob can be serialized in GeoFile.
true | if this Grob is serializable |
false | otherwise |
Reimplemented from OGF::Grob.
|
staticprotected |
Loads alignment data for pointsets.
The loaded transform are stored in the object to world transforms of all objects.
[in] | filename | name of the alignment data file |
[in] | sg | a pointer to the SceneGraph |
true | if alignment data could be read |
false | otherwise |
Grob* OGF::SceneGraph::load_object | ( | const FileName & | value, |
const std::string & | type = "default" , |
||
bool | invoked_from_gui = false |
||
) |
Loads an object from a file, and stores it in this SceneGraph.
[in] | value | the name of the file |
[in] | type | the class name that should be used to create the object, or "default" (then it is deduced from the file extension) |
[in] | invoked_from_gui | set to true by file menu, and makes it change directory to the directory that contains the file |
void OGF::SceneGraph::load_objects | ( | const std::string & | value, |
const std::string & | type = "default" , |
||
bool | invoked_from_gui = false |
||
) |
Loads objects from a list of files, and stores them in this SceneGraph.
[in] | value | the list of file names, separated with ';' |
[in] | type | the class name that should be used to create the objects, or "default" (then it is deduced from the file extensions) |
[in] | invoked_from_gui | set to true by file menu, and makes it change directory to the directory that contains the file |
void OGF::SceneGraph::move_current_down | ( | ) |
Swaps the current object with the next one.
Does nothing if there is no current object or if current object is the last one
void OGF::SceneGraph::move_current_up | ( | ) |
Swaps the current object with the previous one.
Does nothing if there is no current object or if current object is the first one
bool OGF::SceneGraph::save_current_object | ( | const NewFileName & | value | ) |
Saves the current object to a file.
[in] | value | the name of the file |
|
protected |
Reads an object from a geogram file.
[in,out] | in | the stream |
|
protected |
Writes an object to a geogram file.
[in] | grob | a pointer to the object |
[in,out] | out | the stream where the object should be written |
|
overridevirtual |
Reads this Grob from a GeoFile.
[in,out] | geofile | the input GeoFile |
true | if the Grob could be successfully read |
false | otherwise |
Reimplemented from OGF::Grob.
|
overridevirtual |
Writes this Grob into a stream.
[in,out] | geofile | the output GeoFile The file extension determines the file format used to write the object. |
true | if the Grob could be successfully written |
false | otherwise |
Reimplemented from OGF::Grob.
|
inline |
Sets the application.
[in] | app | a pointer to the application. |
Definition at line 315 of file scene_graph.h.
void OGF::SceneGraph::set_current_object | ( | const std::string & | value, |
bool | record_history | ||
) |
Sets the current object.
[in] | value | name of the current object |
[in] | record_history | if true, the change of current object is recorded in Graphite's history |
|
inline |
Sets the render area.
[in] | rdra | a pointer to the render area. |
Definition at line 298 of file scene_graph.h.
void OGF::SceneGraph::set_scene_graph_shader_manager | ( | Object * | sgshdmgr | ) |
sets the scene graph shader manager.
[in] | sgshdmgr | a pointer to the scene graph shader manager. |
void OGF::SceneGraph::set_visibilities | ( | const std::string & | value | ) |
Sets the visibility flags for all the objects.
[in] | value | the ';'-separated list of object visibilities, as a string |
void OGF::SceneGraph::set_visibility | ( | index_t | index, |
bool | value | ||
) |
Sets the visibility flag of one of the objects.
[in] | index | the index of the object, in O..nb_children()-1 |
[in] | value | true if the object is made visible, false if it is made invisible |
|
virtual |
a signal that is triggered whenever the list of objects changes.
[in] | value | the ';'-separated list of object types |
|
override |
a signal that is triggered whenever this SceneGraph changes.
[in] | value | a pointer to this SceneGraph |
|
virtual |
a signal that is triggered whenever object visibility flags change.
[in] | value | the ';'-separated list of object visibility flags |