Graphite  Version 3
An experimental 3D geometry processing program
OGF::Grob Class Referenceabstract

Base class for all 3D Graphite objects. More...

#include <OGF/scene_graph/grob/grob.h>

Inheritance diagram for OGF::Grob:
OGF::Node OGF::Object GEO::Counted OGF::CompositeGrob OGF::LuaGrob OGF::MeshGrob OGF::VoxelGrob OGF::SceneGraph

Public Member Functions

 Grob (CompositeGrob *parent)
 Grob constructor. More...
 
 ~Grob () override
 Grob destructor.
 
const std::string & name () const
 Gets the name of this Grob. More...
 
virtual Box3d bbox () const =0
 Gets the bounding box. More...
 
virtual Box3d world_bbox () const
 Gets the bounding box in world coordinates. More...
 
virtual bool is_serializable () const
 Tests whether this Grob can be serialized in GeoFile. More...
 
virtual bool serialize_read (InputGraphiteFile &geofile)
 Reads this Grob from a GeoFile. More...
 
virtual bool serialize_write (OutputGraphiteFile &geofile)
 Writes this Grob into a stream. 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...
 
ArgListattributes ()
 Gets the attributes associated with this Grob. More...
 
const ArgListattributes () 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 Interpreterinterpreter ()
 Gets a pointer to the main Interpreter. More...
 
virtual void redraw ()
 Triggers update events and redraws the scene. More...
 
SceneGraphscene_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 clear ()
 Clears this Grob.
 
virtual void rename (const std::string &value)
 Renames this Grob. More...
 
virtual Grobduplicate (SceneGraph *sg)
 Duplicates this Grob. More...
 
virtual Objectquery_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...
 
Objectget_shader () const
 Gets the shader associated with this Grob. More...
 
Objectget_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 mat4get_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.
 
virtual void add_child (Node *child)
 Adds a child to this Node. More...
 
virtual void remove_child (Node *child)
 Removes a child from this Node. \parma[in] child a pointer to the child to be removed.
 
Nodeget_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 MetaClassmeta_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 Connectionconnect_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...
 
MetaClassget_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...
 

Static Public Member Functions

static Grobfind (SceneGraph *sg, const std::string &name)
 Finds a Grob by name. More...
 
- Static Public Member Functions inherited from OGF::Object
static Objectid_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...
 

Public Attributes

 __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 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...
 

Protected Attributes

std::string name_
 
std::string filename_
 
bool visible_
 
SceneGraphscene_graph_
 
mat4 obj_to_world_
 
Object_var shader_manager_
 
ArgList grob_attributes_
 
bool dirty_
 
index_t nb_graphics_locks_
 

Friends

class SceneGraph
 
class SceneGraphShaderManager
 
class ShaderManager
 

Detailed Description

Base class for all 3D Graphite objects.

Definition at line 68 of file grob.h.

Constructor & Destructor Documentation

◆ Grob()

OGF::Grob::Grob ( CompositeGrob parent)

Grob constructor.

Parameters
[in]parenta pointer to the CompositeGrob this Grob belongs to (i.e., the SceneGraph)

Member Function Documentation

◆ append()

virtual bool OGF::Grob::append ( const FileName value)
virtual

Appends the content of the specified file to this Grob.

Parameters
[in]valuethe name of the file
Return values
trueon success
falseotherwise

Reimplemented in OGF::MeshGrob.

◆ attributes() [1/2]

ArgList& OGF::Grob::attributes ( )
inline

Gets the attributes associated with this Grob.

Returns
a modifiable reference to the attributes

Each Grob has a set of name-value pairs that can be used to store additional information (to extend the current state of the object, if needed by some algorithms).

Definition at line 178 of file grob.h.

◆ attributes() [2/2]

const ArgList& OGF::Grob::attributes ( ) const
inline

Gets the attributes associated with this Grob.

Returns
a const reference to the attributes

Each Grob has a set of name-value pairs that can be used to store additional information (to extend the current state of the object, if needed by some algorithms).

Definition at line 189 of file grob.h.

◆ bbox()

virtual Box3d OGF::Grob::bbox ( ) const
pure virtual

Gets the bounding box.

Returns
the bounding box

Implemented in OGF::VoxelGrob, OGF::CompositeGrob, OGF::MeshGrob, and OGF::LuaGrob.

◆ dirty()

bool OGF::Grob::dirty ( ) const
inline

Gets the dirty flag.

The dirty flag indicates whether cached information, such as Vertex Buffer Objects, need to be reconstructed.

Return values
trueif this VoxelGrob is dirty
falseotherwise

Definition at line 200 of file grob.h.

◆ duplicate()

virtual Grob* OGF::Grob::duplicate ( SceneGraph sg)
virtual

Duplicates this Grob.

The newly created Grob has the same name as the current one, with "_copy" appended.

Reimplemented in OGF::VoxelGrob, OGF::MeshGrob, and OGF::LuaGrob.

◆ find()

static Grob* OGF::Grob::find ( SceneGraph sg,
const std::string &  name 
)
static

Finds a Grob by name.

Parameters
[in]sga pointer to the SceneGraph
[in]namethe name
Returns
a pointer to the Grob named as name in the SceneGraph sg if it exists, or nil otherwise.

◆ get_filename()

const std::string& OGF::Grob::get_filename ( ) const
inline

Gets the filename of this Grob.

The system stores for each grob the filename it was read from.

Returns
a const reference to the filename

Definition at line 441 of file grob.h.

◆ get_obj_to_world_transform()

const mat4& OGF::Grob::get_obj_to_world_transform ( ) const
inline

Gets the object to world transform.

Returns
a const reference to the object to world transform, as a 4x4 homogeneous matrix
Note
In most cases, this is the identity matrix. \TODO more explanations needed here

Definition at line 496 of file grob.h.

◆ get_shader()

Object* OGF::Grob::get_shader ( ) const

Gets the shader associated with this Grob.

Returns
a pointer to the Shader

◆ get_shader_and_shader_properties()

void OGF::Grob::get_shader_and_shader_properties ( std::string &  classname,
ArgList properties,
bool  pointers = true 
)

Gets the classname of the shader and its properties.

Ignored in non-graphic mode

Parameters
[out]classnamethe classname of the current shader
[out]propertiesthe properties of the current shader
[in]pointersif set, get attributes with pointer types, else ignore them

◆ get_shader_manager()

Object* OGF::Grob::get_shader_manager ( ) const
inline

Gets the ShaderManager associated with this Grob.

Returns
a pointer to the ShaderManager.

Definition at line 472 of file grob.h.

◆ get_visible()

bool OGF::Grob::get_visible ( ) const

Tests whether this Grob is visible.

In the GUI, this corresponds to the checkboxes in the object list.

Return values
trueif this Grob is visible
falseotherwise

◆ graphics_are_locked()

bool OGF::Grob::graphics_are_locked ( ) const
inline

Tests whether this VoxelGrob is locked for graphics display.

When graphics updates are locked, redraw requests are ignored for this VoxelGrob.

Return values
trueif this VoxelGrob is locked
falseotherwise

Definition at line 222 of file grob.h.

◆ initialize_name()

void OGF::Grob::initialize_name ( const std::string &  name)
protected

Initializes the name of this Grob.

Parameters
[in]namethe new name for this Grob

Tests if there is already a Grob with the same name in the SceneGraph, and generates a unique name if this was the case.

◆ interpreter()

virtual Interpreter* OGF::Grob::interpreter ( )
virtual

Gets a pointer to the main Interpreter.

Returns
a pointer to the main Interpreter.

Reimplemented in OGF::SceneGraph.

◆ is_serializable()

virtual bool OGF::Grob::is_serializable ( ) const
virtual

Tests whether this Grob can be serialized in GeoFile.

Return values
trueif this Grob is serializable
falseotherwise
See also
serialize_read(), serialize_write()

Reimplemented in OGF::VoxelGrob, OGF::SceneGraph, OGF::MeshGrob, and OGF::LuaGrob.

◆ ith_grob_attribute_name()

const std::string& OGF::Grob::ith_grob_attribute_name ( index_t  i) const
inline

gets the name of a grob attribute

Parameters
[in]ithe index of the grob attribute, in 0 .. nb_grob_attributes()-1
Returns
the name of the attribute

Definition at line 379 of file grob.h.

◆ ith_grob_attribute_value()

std::string OGF::Grob::ith_grob_attribute_value ( index_t  i) const
inline

gets the value of a grob attribute

Parameters
[in]ithe index of the grob attribute, in 0 .. nb_grob_attributes()-1
Returns
the value of the attribute, as a string

Definition at line 389 of file grob.h.

◆ load()

virtual bool OGF::Grob::load ( const FileName value)
virtual

Replaces this Grob with the contents of a file.

Parameters
[in]valuethe name of the file
Return values
trueon success
falseotherwise

Reimplemented in OGF::MeshGrob.

◆ lock_graphics()

void OGF::Grob::lock_graphics ( )
inline

Locks graphics for this VoxelGrob.

When graphics updates are locked, redraw requests are ignored for this VoxelGrob. Graphics needs to be locked whenever there is a possibility that a graphics object will be requested on an object that is in a transient state. For instance, this function can be used to avoid OpenGL warnings that the buffer object has not the expected size. Multiple lock/unlock requests can be nested, the VoxelGrob keeps track of the number of active locks. The object is considered unlocked when the number of graphics locks is zero.

Definition at line 240 of file grob.h.

◆ name()

const std::string& OGF::Grob::name ( ) const
inline

Gets the name of this Grob.

Each Grob has a unique name that identifies it in the SceneGraph. This corresponds to the names that appear in the GUI, in the object list.

Returns
a const reference to the name of this object

Definition at line 91 of file grob.h.

◆ nb_grob_attributes()

index_t OGF::Grob::nb_grob_attributes ( ) const
inline

gets the number of grob attributes

Returns
the number of grob attributes

Definition at line 369 of file grob.h.

◆ query_interface()

virtual Object* OGF::Grob::query_interface ( const std::string &  name)
virtual

Creates an Interface object connected to this Grob.

This is used in GEL scripts, to easily invoke commands on objects by using for instance:

mesh.query_interface(
"OGF::MeshGrobSurfaceCommands"
).remesh_smooth(nb_pts=10000)
Parameters
[in]namethe class name of the Interface or Commands object as a string, with the "OGF::" prefix
Returns
a pointer to the created Interface object

◆ redraw()

virtual void OGF::Grob::redraw ( )
virtual

Triggers update events and redraws the scene.

Used by commands to display the intermediary state of the object during computations.

◆ rename()

virtual void OGF::Grob::rename ( const std::string &  value)
virtual

Renames this Grob.

Parameters
[in]valuethe new name. If another Grob exists with the specified name, then the name is changed (by appending a number to it).

◆ save()

virtual bool OGF::Grob::save ( const NewFileName value)
virtual

Saves this Grob to a file.

Parameters
[in]valuethe name of the file
Return values
trueon success
falseotherwise

Reimplemented in OGF::MeshGrob.

◆ scene_graph()

SceneGraph* OGF::Grob::scene_graph ( ) const
inline

Gets the SceneGraph.

Returns
a pointer to the SceneGraph

Definition at line 300 of file grob.h.

◆ serialize_read()

virtual bool OGF::Grob::serialize_read ( InputGraphiteFile geofile)
virtual

Reads this Grob from a GeoFile.

Parameters
[in,out]geofilethe input GeoFile
Return values
trueif the Grob could be successfully read
falseotherwise
See also
is_serializable()

Reimplemented in OGF::SceneGraph, OGF::VoxelGrob, OGF::MeshGrob, and OGF::LuaGrob.

◆ serialize_write()

virtual bool OGF::Grob::serialize_write ( OutputGraphiteFile geofile)
virtual

Writes this Grob into a stream.

Parameters
[in,out]geofilethe output GeoFile The file extension determines the file format used to write the object.
Return values
trueif the Grob could be successfully written
falseotherwise
See also
is_serializable()

Reimplemented in OGF::SceneGraph, OGF::VoxelGrob, OGF::MeshGrob, and OGF::LuaGrob.

◆ set_filename()

void OGF::Grob::set_filename ( const std::string &  value)
inline

Sets the name of this Grob.

The system stores for each grob the filename it was read from.

Parameters
[in]valuea const reference to the name

Definition at line 431 of file grob.h.

◆ set_grob_attribute()

void OGF::Grob::set_grob_attribute ( const std::string &  name,
const std::string &  value 
)
inline

sets the value of a grob attribute

if the attribute already exists it is overwritten else it is created

Parameters
[in]namethe name of the attribute
[in]valuethe new value of the attrinute as a string

Definition at line 400 of file grob.h.

◆ set_obj_to_world_transform()

void OGF::Grob::set_obj_to_world_transform ( const mat4 value)
inline

Sets the object to world transform.

Parameters
[in]valuethe object to world transform, as a 4x4 homogeneous matrix
Note
In most cases, this is the identity matrix. \TODO more explanations needed here

Definition at line 485 of file grob.h.

◆ set_shader()

void OGF::Grob::set_shader ( const std::string &  value)

Changes the current shader of this Grob.

Ignored in non-graphic mode

Parameters
[in]valuethe shader user class name to be used, as a string (without the "OGF::" prefix).
Note
This Grob needs to be the current object in its SceneGraph.

◆ set_shader_and_shader_properties()

void OGF::Grob::set_shader_and_shader_properties ( const std::string &  classname,
const ArgList properties 
)

Sets the shader and its properties.

Ignored in non-graphic mode

Parameters
[in]classnamethe classname of the shader
[in]propertiesthe properties of the shader to be set

◆ set_shader_manager()

void OGF::Grob::set_shader_manager ( Object s)
inlineprotected

Sets the ShaderManager associated with this Grob.

Parameters
[in]sa pointer to the ShaderManager

Definition at line 515 of file grob.h.

◆ set_visible()

void OGF::Grob::set_visible ( bool  value)

Sets the visibility flag of this Grob.

In the GUI, this corresponds to the checkboxes in the object list.

Parameters
[in]valuethe new value of the visibility flag

◆ unlock_graphics()

void OGF::Grob::unlock_graphics ( )
inline

Unlocks graphics for this VoxelGrob.

When graphics updates are locked, redraw requests are ignored for this VoxelGrob. Graphics needs to be locked whenever there is a possibility that a graphics object will be requested on an object that is in a transient state. For instance, this function can be used to avoid OpenGL warnings that the buffer object has not the expected size. Multiple lock/unlock requests can be nested, the VoxelGrob keeps track of the number of active locks. The object is considered unlocked when the number of graphics locks is zero.

Definition at line 259 of file grob.h.

◆ up_to_date()

void OGF::Grob::up_to_date ( )
inline

Tests whether this object is up to date.

An object is up to date if it is not dirty.

Return values
trueif this object is up to date
falseotherwise

Definition at line 210 of file grob.h.

◆ world_bbox()

virtual Box3d OGF::Grob::world_bbox ( ) const
virtual

Gets the bounding box in world coordinates.

Returns
the bounding box in world coordinates \TODO some explanations are missing there

Reimplemented in OGF::CompositeGrob.


The documentation for this class was generated from the following file: