neuray API Programmer's Manual

mi::ICompound Class Reference

[Compounds]

Description

This interface represents compounds, i.e., vectors, matrices, colors, spectrums, and bounding boxes. It can be used to represent vectors and matrices by an interface derived from mi::base::IInterface. In contrast to specialized interfaces for particular vector and matrix types it has a generic interface for vectors and matrices of any size and any primitive type as element type. See Types for description of the type system.

This interface treats vectors as column vectors, i.e., as matrices with a single column. Colors are treated as vectors of length 3 or 4, spectrums as vectors of length 3, and bounding boxes as matrices of 2 rows and 3 columns.

In case of vectors and matrices the type name of a compound is the type name of the element followed by "<", the size of the compound, and finally ">". In case of vectors, the size is specified by a single positive integer. In case of matrices the size is specified as two positive integers separated by a comma. The first and second integer indicate the number of rows and columns, respectively. Examples of valid type names are "Sint32<3>" or "Float32<2,2>". The type names of the two color types are "Color" and "Color3", the type name of spectrums is "Spectrum", and the type name of bounding boxes is "Bbox3".

The following keys are supported with the methods of mi::IData_collection are the following: vectors support the keys "x", "y", "z", and "w" (or subsets thereof, depending on the dimension). Matrices support the keys "xx", "xy", "xz", "xw", "yx", "yy", "yz", "yw", "zx", "zy", "zz", "zw", "wx", "wy", "wz", and "ww" (or subsets thereof, depending on the dimension). Colors support the keys "r", "g", "b", and "a" (the type "Color3" lacks the "a" key). Spectrums support the keys "0", "1", and "2". Finally, bounding boxes support the keys "min_x", "min_y", "min_z", "max_x", "max_y", and "max_z".

Note:

Currently the element type is restricted to be either bool, mi::Sint32, mi::Float32, or mi::Float64. If used as an attribute, matrices are restricted to mi::Float32 as element type with the exception of 4 x 4 matrices of elements of type mi::Float64.

Public Member Functions

virtual const char* get_element_type_name() const =0
Returns the type name of elements of the compound.
virtual Size get_length() const =0
Returns the total number of elements. More...
virtual Size get_number_of_columns() const =0
Returns the number of columns of the represented matrix. More...
virtual Size get_number_of_rows() const =0
Returns the number of rows of the represented matrix or vector.
virtual bool  get_value( Size row, Size column, bool& value) const =0
Accesses the (row, column)-th element. More...
virtual bool  get_value( Size row, Size column, Sint32& value) const =0
Accesses the (row, column)-th element. More...
virtual bool  get_value( Size row, Size column, Uint32& value) const =0
Accesses the (row, column)-th element. More...
virtual bool  get_value( Size row, Size column, Float32& value) const =0
Accesses the (row, column)-th element. More...
virtual bool  get_value( Size row, Size column, Float64& value) const =0
Accesses the (row, column)-th element. More...
template< class T>get_value( Size row, Size column) const
Accesses the (row, column)-th element. More...
virtual void get_values( bool* values) const =0
Accesses the elements of the compound. More...
virtual void get_values( Sint32* values) const =0
Accesses the elements of the compound. More...
virtual void get_values( Uint32* values) const =0
Accesses the elements of the compound. More...
virtual void get_values( Float32* values) const =0
Accesses the elements of the compound. More...
virtual void get_values( Float64* values) const =0
Accesses the elements of the compound. More...
virtual bool  set_value( Size row, Size column, bool value) =0
Sets the (row, column)-th element to value. More...
virtual bool  set_value( Size row, Size column, Sint32 value) =0
Sets the (row, column)-th element to value. More...
virtual bool  set_value( Size row, Size column, Uint32 value) =0
Sets the (row, column)-th element to value. More...
virtual bool  set_value( Size row, Size column, Float32 value) =0
Sets the (row, column)-th element to value. More...
virtual bool  set_value( Size row, Size column, Float64 value) =0
Sets the (row, column)-th element to value. More...
virtual void set_values( const bool* values) =0
Sets the elements of the compound. More...
virtual void set_values( const Sint32* values) =0
Sets the elements of the compound. More...
virtual void set_values( const Uint32* values) =0
Sets the elements of the compound. More...
virtual void set_values( const Float32* values) =0
Sets the elements of the compound. More...
virtual void set_values( const Float64* values) =0
Sets the elements of the compound. More...

Member Functions

virtual const char* mi::​ICompound::get_element_type_name() const [pure virtual]

Returns the type name of elements of the compound.

virtual Size mi::​ICompound::get_length() const [pure virtual]

Returns the total number of elements. This value is the product of get_number_of_rows() and get_number_of_columns().

virtual Size mi::​ICompound::get_number_of_columns() const [pure virtual]

Returns the number of columns of the represented matrix. Always returns 1 in case of vectors.

virtual Size mi::​ICompound::get_number_of_rows() const [pure virtual]

Returns the number of rows of the represented matrix or vector.

virtual bool mi::​ICompound::get_value( Size row, Size column, bool& value) const [pure virtual]

Accesses the (row, column)-th element.

Precondition:

row < get_number_of_rows(), column < get_number_of_columns()

virtual bool mi::​ICompound::get_value( Size row, Size column, Sint32& value) const [pure virtual]

Accesses the (row, column)-th element.

Precondition:

row < get_number_of_rows(), column < get_number_of_columns()

virtual bool mi::​ICompound::get_value( Size row, Size column, Uint32& value) const [pure virtual]

Accesses the (row, column)-th element.

Precondition:

row < get_number_of_rows(), column < get_number_of_columns()

virtual bool mi::​ICompound::get_value( Size row, Size column, Float32& value) const [pure virtual]

Accesses the (row, column)-th element.

Precondition:

row < get_number_of_rows(), column < get_number_of_columns()

virtual bool mi::​ICompound::get_value( Size row, Size column, Float64& value) const [pure virtual]

Accesses the (row, column)-th element.

Precondition:

row < get_number_of_rows(), column < get_number_of_columns()

template< class T>

T mi::​ICompound::get_value( Size row, Size column) const [inline]

Accesses the (row, column)-th element.

Precondition:

row < get_number_of_rows(), column < get_number_of_columns()

virtual void mi::​ICompound::get_values( bool* values) const [pure virtual]

Accesses the elements of the compound.

Parameters

values
The values of the compound elements are written to this buffer. The size of the buffer has to be at least get_length() times sizeof(bool).
virtual void mi::​ICompound::get_values( Sint32* values) const [pure virtual]

Accesses the elements of the compound.

Parameters

values
The values of the compound elements are written to this buffer. The size of the buffer has to be at least get_length() times sizeof(Sint32).
virtual void mi::​ICompound::get_values( Uint32* values) const [pure virtual]

Accesses the elements of the compound.

Parameters

values
The values of the compound elements are written to this buffer. The size of the buffer has to be at least get_length() times sizeof(Uint32).
virtual void mi::​ICompound::get_values( Float32* values) const [pure virtual]

Accesses the elements of the compound.

Parameters

values
The values of the compound elements are written to this buffer. The size of the buffer has to be at least get_length() times sizeof(Float32).
virtual void mi::​ICompound::get_values( Float64* values) const [pure virtual]

Accesses the elements of the compound.

Parameters

values
The values of the compound elements are written to this buffer. The size of the buffer has to be at least get_length() times sizeof(Float64).
virtual bool mi::​ICompound::set_value( Size row, Size column, bool value) [pure virtual]

Sets the (row, column)-th element to value.

Precondition:

row < get_number_of_rows(), column < get_number_of_columns()

virtual bool mi::​ICompound::set_value( Size row, Size column, Sint32 value) [pure virtual]

Sets the (row, column)-th element to value.

Precondition:

row < get_number_of_rows(), column < get_number_of_columns()

virtual bool mi::​ICompound::set_value( Size row, Size column, Uint32 value) [pure virtual]

Sets the (row, column)-th element to value.

Precondition:

row < get_number_of_rows(), column < get_number_of_columns()

virtual bool mi::​ICompound::set_value( Size row, Size column, Float32 value) [pure virtual]

Sets the (row, column)-th element to value.

Precondition:

row < get_number_of_rows(), column < get_number_of_columns()

virtual bool mi::​ICompound::set_value( Size row, Size column, Float64 value) [pure virtual]

Sets the (row, column)-th element to value.

Precondition:

row < get_number_of_rows(), column < get_number_of_columns()

virtual void mi::​ICompound::set_values( const bool* values) [pure virtual]

Sets the elements of the compound.

Parameters

values
The new values of the compound elements are read to this buffer. The size of the buffer has to be at least get_length() times sizeof(bool).
virtual void mi::​ICompound::set_values( const Sint32* values) [pure virtual]

Sets the elements of the compound.

Parameters

values
The new values of the compound elements are read to this buffer. The size of the buffer has to be at least get_length() times sizeof(Sint32).
virtual void mi::​ICompound::set_values( const Uint32* values) [pure virtual]

Sets the elements of the compound.

Parameters

values
The new values of the compound elements are read to this buffer. The size of the buffer has to be at least get_length() times sizeof(Uint32).
virtual void mi::​ICompound::set_values( const Float32* values) [pure virtual]

Sets the elements of the compound.

Parameters

values
The new values of the compound elements are read to this buffer. The size of the buffer has to be at least get_length() times sizeof(Float32).
virtual void mi::​ICompound::set_values( const Float64* values) [pure virtual]

Sets the elements of the compound.

Parameters

values
The new values of the compound elements are read to this buffer. The size of the buffer has to be at least get_length() times sizeof(Float64).