Rumba C++ SDK
maquina::Shape Class Reference

A value with geometrical attributes. Base of all shape values. More...

#include <Shape.h>

Inheritance diagram for maquina::Shape:
maquina::Value maquina::Points maquina::Curves maquina::Lattice maquina::Mesh maquina::NurbsCurve maquina::NurbsSurface

Classes

struct  Attribute
 A Shape attribute, with name, value and topology. More...
 
class  Attributes
 An shape's attribute iteration. More...
 

Public Types

enum  Topology { constant =0, vertex, face, face_varying }
 The different attribute topologies. More...
 

Public Member Functions

 Shape ()
 
 Shape (const Value &v)
 Cast a Value object in Shape. More...
 
bool has_attribute (const char *attribute_name, Topology topology) const
 Test if the shape has this attribute. More...
 
template<typename T >
write_attribute (const char *attribute_name, Topology topology)
 Get a write access to an attribute. More...
 
const Value read_attribute (const char *attribute_name, Topology topology) const
 Get a read access to an attribute. More...
 
bool set_attribute (const char *name, Topology topology, const Value &value)
 Set an attribute. More...
 
bool remove_attribute (const char *name, Topology topology)
 Remove an attribute. More...
 
void finalize ()
 Finalize the shape after deformation. More...
 
size_t topology_size (Topology topology) const
 Get the number of faces, edges or vertices. More...
 
Attributes read_attributes () const
 Return a read-only attribute iteration. More...
 
- Public Member Functions inherited from maquina::Value
 Value ()
 
 Value (Value &&other)=default
 
 Value (const Value &other)=default
 
Valueoperator= (Value &&other)=default
 
Valueoperator= (const Value &other)=default
 
virtual ~Value ()=default
 
Value duplicate () const
 Duplicate the value. More...
 
bool as_bool () const
 Returns the value as a bool. More...
 
int as_int () const
 Returns the value as an integer. More...
 
float as_float () const
 Returns the value as a float. More...
 
double as_double () const
 Returns the value as a double. More...
 
const std::string & as_string () const
 Returns the value as a string. More...
 
std::wstring as_wstring () const
 Returns the value as a wstring. More...
 
Imath::V2f as_V2f () const
 Returns the value as a V2f. More...
 
Imath::V3f as_V3f () const
 Returns the value as a V3f. More...
 
Imath::V4f as_V4f () const
 Returns the value as a V4f. More...
 
const Imath::V2das_V2d () const
 Returns the value as a V2d. More...
 
const Imath::V3das_V3d () const
 Returns the value as a V3d. More...
 
const Imath::V4das_V4d () const
 Returns the value as a V4d. More...
 
const Imath::V2ias_V2i () const
 Returns the value as a V2i. More...
 
const Imath::V3ias_V3i () const
 Returns the value as a V3i. More...
 
const Imath::V4ias_V4i () const
 Returns the value as a V4i. More...
 
Imath::M44f as_M44f () const
 Returns the value as a M44f. More...
 
const Imath::M44das_M44d () const
 Returns the value as a M44d. More...
 
const Imath::Box3fas_Box3f () const
 Returns the value as a Box3f. More...
 
const Imath::Color4fas_Color4f () const
 Returns the value as a Color4f. More...
 
Imath::Quatf as_Quatf () const
 Returns the value as a Quatf. More...
 
const Imath::Quatdas_Quatd () const
 Returns the value as a Quatd. More...
 
std::shared_ptr< const UserDataas_user_data () const
 Returns the value as a user data. More...
 
StringView type_name () const
 Return the type name of the Value. More...
 
virtual bool has_node_delegate () const
 Check if this value can produces a NodeDelegate. More...
 
virtual std::shared_ptr< NodeDelegatenode_delegate (const std::shared_ptr< NodeDelegate > &parent, const StringView &name) const
 
bool operator== (const Value &o) const
 Compare the two values. More...
 
bool operator!= (const Value &o) const
 
bool is_instance (const char *value_type_name) const
 Check if this type derives from another value type. More...
 
 operator bool () const
 
 Value (bool)
 Create a boolean value. More...
 
 Value (int)
 Create an integer value. More...
 
 Value (float)
 Create a float value. More...
 
 Value (double)
 Create a double value (stored in a float right now) More...
 
 Value (const char *string)
 Create a string value. More...
 
 Value (const wchar_t *string)
 Create a string value. More...
 
 Value (const std::string &string)
 Create a string value. More...
 
 Value (const std::wstring &string)
 Create a wide string value. More...
 
 Value (const Imath::V2f &)
 Create a Imath::V2f value. More...
 
 Value (const Imath::V3f &)
 Create a Imath::V3f value. More...
 
 Value (const Imath::V4f &)
 Create a Imath::V4f value. More...
 
 Value (const Imath::V2d &)
 Create a Imath::V2d value. More...
 
 Value (const Imath::V3d &)
 Create a Imath::V3d value. More...
 
 Value (const Imath::V4d &)
 Create a Imath::V4d value. More...
 
 Value (const Imath::V2i &)
 Create a Imath::V2i value. More...
 
 Value (const Imath::V3i &)
 Create a Imath::V3i value. More...
 
 Value (const Imath::V4i &)
 Create a Imath::V4i value. More...
 
 Value (const Imath::Color4f &)
 Create a Imath::Color4f value. More...
 
 Value (const Imath::M44f &)
 Create a Imath::M44f value. More...
 
 Value (const Imath::M44d &)
 Create a Imath::M44d value. More...
 
 Value (const Imath::Box3f &)
 Create a Imath::Box3f value. More...
 
 Value (const Imath::Quatf &)
 Create a Imath::Quatf value. More...
 
 Value (const Imath::Quatd &)
 Create a Imath::Quatd value. More...
 
 Value (const std::shared_ptr< const UserData > &user_data)
 Create a user data value. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from maquina::Value
static bool validate_type_name (const char *type_name)
 Return true if the name is a valid type name. More...
 
static Value get_default_value (const char *type_name)
 Return a default value for a given type. More...
 
- Static Public Attributes inherited from maquina::Value
static const Value default_value
 The default value. More...
 

Detailed Description

A value with geometrical attributes. Base of all shape values.

Member Enumeration Documentation

◆ Topology

The different attribute topologies.

Enumerator
constant 

The attribute is constant.

vertex 

The attribute is a per-vertex buffer.

face 

The attribute is a per-face buffer.

face_varying 

The attribute is a per-face corner buffer.

Constructor & Destructor Documentation

◆ Shape() [1/2]

maquina::Shape::Shape ( )

◆ Shape() [2/2]

maquina::Shape::Shape ( const Value v)

Cast a Value object in Shape.

If v has not the good type, a default value is constructed.

Member Function Documentation

◆ finalize()

void maquina::Shape::finalize ( )

Finalize the shape after deformation.

Normalizes the ending points of a periodic nurbs curve.

◆ has_attribute()

bool maquina::Shape::has_attribute ( const char *  attribute_name,
Topology  topology 
) const

Test if the shape has this attribute.

◆ read_attribute()

const Value maquina::Shape::read_attribute ( const char *  attribute_name,
Topology  topology 
) const

Get a read access to an attribute.

If it doesn't exists, is returns a default attribute.

◆ read_attributes()

Attributes maquina::Shape::read_attributes ( ) const

Return a read-only attribute iteration.

◆ remove_attribute()

bool maquina::Shape::remove_attribute ( const char *  name,
Topology  topology 
)

Remove an attribute.

Return true if the attribute has been found.

◆ set_attribute()

bool maquina::Shape::set_attribute ( const char *  name,
Topology  topology,
const Value value 
)

Set an attribute.

◆ topology_size()

size_t maquina::Shape::topology_size ( Topology  topology) const

Get the number of faces, edges or vertices.

◆ write_attribute()

template<typename T >
MAQUINA_EXTERN_TEMPLATE MAQUINA_EXPORT SparseBuffer< float > maquina::Shape::write_attribute< SparseBuffer< float > > ( const char *  attribute_name,
Topology  topology 
)

Get a write access to an attribute.

If the attribute doesn't exist, the attribute is created. If the channel exists it will be replaced by this one. Returns an empty buffer if the name or the topology are invalid for this object.


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