SBCClassInterface.hpp File Reference

Classes

class  SBCClassInterface
 This class describes a class interface in a class proxy. More...
 

Typedefs

typedef SBCClassInterface SBInterface
 The short name of SBCClassInterface.
 

Descriptions of class interfaces

#define SB_INTERFACE_BEGIN
 Declares the beginning of the class interface.
 
#define SB_INTERFACE_END
 Declares the end of the class interface.
 

Descriptions of functions

#define SB_FUNCTION_0(OUTPUT, CLASS, FUNCTION)
 Declares a class function OUTPUT CLASS::FUNCTION()
 
#define SB_FUNCTION_1(OUTPUT, CLASS, FUNCTION, T0)
 Declares a class function OUTPUT CLASS::FUNCTION(T0)
 
#define SB_FUNCTION_2(OUTPUT, CLASS, FUNCTION, T0, T1)
 Declares a class function OUTPUT CLASS::FUNCTION(T0,T1)
 
#define SB_FUNCTION_3(OUTPUT, CLASS, FUNCTION, T0, T1, T2)
 Declares a class function OUTPUT CLASS::FUNCTION(T0,T1,T2)
 
#define SB_FUNCTION_4(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3)
 Declares a class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3)
 
#define SB_FUNCTION_5(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4)
 Declares a class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4)
 
#define SB_FUNCTION_6(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4, T5)
 Declares a class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4,T5)
 
#define SB_FUNCTION_7(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4, T5, T6)
 Declares a class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4,T5,T6)
 
#define SB_FUNCTION_8(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4, T5, T6, T7)
 Declares a class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4,T5,T6,T7)
 
#define SB_FUNCTION_9(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4, T5, T6, T7, T8)
 Declares a class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4,T5,T6,T7,T8)
 
#define SB_FUNCTION_10(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)
 Declares a class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9)
 
#define SB_FUNCTION_11(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)
 Declares a class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10)
 
#define SB_FUNCTION_12(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)
 Declares a class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11)
 
#define SB_FUNCTION_13(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)
 Declares a class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12)
 
#define SB_FUNCTION_14(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)
 Declares a class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13)
 
#define SB_FUNCTION_15(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)
 Declares a class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14)
 
#define SB_FUNCTION_16(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)
 Declares a class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15)
 

Descriptions of const functions

#define SB_CONST_FUNCTION_0(OUTPUT, CLASS, FUNCTION)
 Declares a const class function OUTPUT CLASS::FUNCTION()
 
#define SB_CONST_FUNCTION_1(OUTPUT, CLASS, FUNCTION, T0)
 Declares a const class function OUTPUT CLASS::FUNCTION(T0)
 
#define SB_CONST_FUNCTION_2(OUTPUT, CLASS, FUNCTION, T0, T1)
 Declares a const class function OUTPUT CLASS::FUNCTION(T0,T1)
 
#define SB_CONST_FUNCTION_3(OUTPUT, CLASS, FUNCTION, T0, T1, T2)
 Declares a const class function OUTPUT CLASS::FUNCTION(T0,T1,T2)
 
#define SB_CONST_FUNCTION_4(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3)
 Declares a const class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3)
 
#define SB_CONST_FUNCTION_5(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4)
 Declares a const class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4)
 
#define SB_CONST_FUNCTION_6(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4, T5)
 Declares a const class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4,T5)
 
#define SB_CONST_FUNCTION_7(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4, T5, T6)
 Declares a const class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4,T5,T6)
 
#define SB_CONST_FUNCTION_8(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4, T5, T6, T7)
 Declares a const class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4,T5,T6,T7)
 
#define SB_CONST_FUNCTION_9(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4, T5, T6, T7, T8)
 Declares a const class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4,T5,T6,T7,T8)
 
#define SB_CONST_FUNCTION_10(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)
 Declares a const class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9)
 
#define SB_CONST_FUNCTION_11(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)
 Declares a const class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10)
 
#define SB_CONST_FUNCTION_12(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)
 Declares a const class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11)
 
#define SB_CONST_FUNCTION_13(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)
 Declares a const class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12)
 
#define SB_CONST_FUNCTION_14(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)
 Declares a const class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13)
 
#define SB_CONST_FUNCTION_15(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)
 Declares a const class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14)
 
#define SB_CONST_FUNCTION_16(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)
 Declares a const class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15)
 

Descriptions of static functions

#define SB_STATIC_FUNCTION_0(OUTPUT, CLASS, FUNCTION)
 Declares a static class function OUTPUT CLASS::FUNCTION()
 
#define SB_STATIC_FUNCTION_1(OUTPUT, CLASS, FUNCTION, T0)
 Declares a static class function OUTPUT CLASS::FUNCTION(T0)
 
#define SB_STATIC_FUNCTION_2(OUTPUT, CLASS, FUNCTION, T0, T1)
 Declares a static class function OUTPUT CLASS::FUNCTION(T0,T1)
 
#define SB_STATIC_FUNCTION_3(OUTPUT, CLASS, FUNCTION, T0, T1, T2)
 Declares a static class function OUTPUT CLASS::FUNCTION(T0,T1,T2)
 
#define SB_STATIC_FUNCTION_4(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3)
 Declares a static class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3)
 
#define SB_STATIC_FUNCTION_5(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4)
 Declares a static class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4)
 
#define SB_STATIC_FUNCTION_6(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4, T5)
 Declares a static class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4,T5)
 
#define SB_STATIC_FUNCTION_7(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4, T5, T6)
 Declares a static class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4,T5,T6)
 
#define SB_STATIC_FUNCTION_8(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4, T5, T6, T7)
 Declares a static class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4,T5,T6,T7)
 
#define SB_STATIC_FUNCTION_9(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4, T5, T6, T7, T8)
 Declares a static class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4,T5,T6,T7,T8)
 
#define SB_STATIC_FUNCTION_10(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)
 Declares a static class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9)
 
#define SB_STATIC_FUNCTION_11(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)
 Declares a static class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10)
 
#define SB_STATIC_FUNCTION_12(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)
 Declares a static class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11)
 
#define SB_STATIC_FUNCTION_13(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)
 Declares a static class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12)
 
#define SB_STATIC_FUNCTION_14(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)
 Declares a static class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13)
 
#define SB_STATIC_FUNCTION_15(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)
 Declares a static class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14)
 
#define SB_STATIC_FUNCTION_16(OUTPUT, CLASS, FUNCTION, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)
 Declares a static class function OUTPUT CLASS::FUNCTION(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15)
 

Descriptions of attributes

#define SB_ATTRIBUTE_READ_ONLY(TYPE, CLASS, NAME, DESCRIPTION, GROUP)
 
#define SB_ATTRIBUTE_READ_WRITE(TYPE, CLASS, NAME, DESCRIPTION, GROUP)
 
#define SB_ATTRIBUTE_READ_WRITE_CLEAR(TYPE, CLASS, NAME, DESCRIPTION, GROUP)
 
#define SB_ATTRIBUTE_READ_WRITE_CLEAR_ARRAY(TYPE, CLASS, NAME, DESCRIPTION, GROUP)
 
#define SB_ATTRIBUTE_READ_WRITE_RANGE(TYPE, CLASS, NAME, DESCRIPTION, GROUP)
 
#define SB_ATTRIBUTE_READ_WRITE_RANGE_SLIDER(TYPE, CLASS, NAME, DESCRIPTION, GROUP)
 
#define SB_ATTRIBUTE_READ_WRITE_LIST(CLASS, NAME, DESCRIPTION, GROUP)
 

Macro Definition Documentation

◆ SB_ATTRIBUTE_READ_ONLY

#define SB_ATTRIBUTE_READ_ONLY (   TYPE,
  CLASS,
  NAME,
  DESCRIPTION,
  GROUP 
)

Declares a non-modifiable attribute NAME of type TYPE from a class CLASS which associated functionality should be exposed and which should also be accessible for users in the Inspector in a group GROUP with a description name DESCRIPTION. String or numeric attributes will be shown as a text in a label, pointer attributes (e.g. a pointer to a SBAtom node) will be represented as a button.

The following functionality should be present in the CLASS:

  • TYPE CLASS::getNAME(); - returns the value.

Note, that this macros also exposes the abovementioned functions associated with an attribute NAME, so you do not need to expose them using e.g. SB_FUNCTION_1 macros.

Example: Let's say that we want to expose in the Inspector an attribute called "NumberOfEdges" of type "unsigned int" from a class called "SEMyVisualModel". You need to have the following functions implemented in the class CLASS:

  • unsigned int SEMyVisualModel::getNumberOfEdges();

Then, in the class descriptor file, you can expose this functionality and the attribute in the Inspector as follows:

SB_CLASS_BEGIN(SEMyVisualModel);
SB_CLASS_DESCRIPTION("MyVisualModel class description");
SB_CONSTRUCTOR_0(SEMyVisualModel);
SB_ATTRIBUTE_READ_ONLY(unsigned int, SEMyVisualModel, NumberOfEdges, "Number of edges", "Properties");
SB_CLASS_END(SEMyVisualModel);
See also
SB_ATTRIBUTE_READ_WRITE
SB_ATTRIBUTE_READ_WRITE_CLEAR
Introspection

◆ SB_ATTRIBUTE_READ_WRITE

#define SB_ATTRIBUTE_READ_WRITE (   TYPE,
  CLASS,
  NAME,
  DESCRIPTION,
  GROUP 
)

Declares a modifiable attribute NAME of type TYPE from a class CLASS which associated functionality should be exposed and which should also be accessible for users in the Inspector in a group GROUP with a description name DESCRIPTION and with the possibility to modify it using a text edit for numerical and string values, or a check box for boolean values.

The following functionality should be present in the CLASS:

  • TYPE CLASS::getNAME(); - returns the value.
  • void CLASS::setNAME(TYPE value); - sets the value.

Note, that this macros also exposes the abovementioned functions associated with an attribute NAME, so you do not need to expose them using e.g. SB_FUNCTION_1 macros.

Example: Let's say that we want to expose in the Inspector an attribute called "ShowLines" of type "bool" from a class called "SEMyVisualModel". You need to have the following functions implemented in the class CLASS:

  • bool SEMyVisualModel::getShowLines();
  • void SEMyVisualModel::setShowLines(bool value);

Then, in the class descriptor file, you can expose this functionality and the attribute in the Inspector as follows:

SB_CLASS_BEGIN(SEMyVisualModel);
SB_CLASS_DESCRIPTION("MyVisualModel class description");
SB_CONSTRUCTOR_0(SEMyVisualModel);
SB_ATTRIBUTE_READ_WRITE(bool, SEMyVisualModel, ShowLines, "Show lines", "Properties");
SB_CLASS_END(SEMyVisualModel);
See also
SB_ATTRIBUTE_READ_ONLY
SB_ATTRIBUTE_READ_WRITE_CLEAR
Introspection

◆ SB_ATTRIBUTE_READ_WRITE_CLEAR

#define SB_ATTRIBUTE_READ_WRITE_CLEAR (   TYPE,
  CLASS,
  NAME,
  DESCRIPTION,
  GROUP 
)

Declares a modifiable attribute NAME of type TYPE from a class CLASS which associated functionality should be exposed and which should also be accessible for users in the Inspector in a group GROUP with a description name DESCRIPTION and with the possibility to modify it using a text edit for numerical and string values, or a check box for boolean values.

The following functionality should be present in the CLASS:

  • TYPE CLASS::getNAME(); - returns the value if set.
  • void CLASS::setNAME(TYPE value); - sets the value.
  • bool CLASS::hasNAME(); - returns true of the attribute is set.
  • void CLASS::clearNAME(); - clears the attribute.

Note, that this macros also exposes the abovementioned functions associated with an attribute NAME, so you do not need to expose them using e.g. SB_FUNCTION_1 macros.

Example: Let's say that we want to expose in the Inspector an attribute called "Comment" of type "std::string" from a class called "SEMyVisualModel". You need to have the following functions implemented in the class CLASS:

  • const std::string& SEMyVisualModel::getComment();
  • void SEMyVisualModel::setComment(const std::string& value);
  • bool CLASS::hasComment();
  • void CLASS::clearComment();

Then, in the class descriptor file, you can expose this functionality and the attribute in the Inspector as follows:

SB_CLASS_BEGIN(SEMyVisualModel);
SB_CLASS_DESCRIPTION("MyVisualModel class description");
SB_CONSTRUCTOR_0(SEMyVisualModel);
SB_ATTRIBUTE_READ_WRITE_CLEAR(const std::string&, SEMyVisualModel, Comment, "Comment", "Information");
SB_CLASS_END(SEMyVisualModel);
See also
SB_ATTRIBUTE_READ_ONLY
SB_ATTRIBUTE_READ_WRITE
Introspection

◆ SB_ATTRIBUTE_READ_WRITE_CLEAR_ARRAY

#define SB_ATTRIBUTE_READ_WRITE_CLEAR_ARRAY (   TYPE,
  CLASS,
  NAME,
  DESCRIPTION,
  GROUP 
)

Declares a modifiable array attribute NAME of type TYPE from a class CLASS which associated functionality should be exposed and which should also be accessible for users in the Inspector in a group GROUP with a description name DESCRIPTION.

See also
SB_ATTRIBUTE_READ_WRITE_CLEAR
Introspection

◆ SB_ATTRIBUTE_READ_WRITE_LIST

#define SB_ATTRIBUTE_READ_WRITE_LIST (   CLASS,
  NAME,
  DESCRIPTION,
  GROUP 
)

Declares a modifiable attribute NAME from a class CLASS which associated functionality should be exposed and which should also be accessible for users in the Inspector in a group GROUP with a description name DESCRIPTION and with the possibility to choose from a list using a combo box.

The following functionality should be present in the CLASS:

  • int CLASS::getNAMECount(); - returns the number of elements in the list.
  • int CLASS::getNAMECurrentIndex(); - returns the current value's index in the list.
  • void CLASS::setNAMECurrentindex(const int); - sets the current value based on the index in the list.
  • std::string CLASS::getNAMEItemText(const int); - returns a string representation of the list items.

Note, that this macros also exposes the abovementioned functions associated with an attribute NAME, so you do not need to expose them using e.g. SB_FUNCTION_1 macros.

Example: Let's say that we want to expose in the Inspector an attribute called "VisualizationPreset" from a class called "SEMyVisualModel" and that has a limited number of variants. You need to have the following functions implemented in the class CLASS:

  • int SEMyVisualModel::getVisualizationPresetCount();
  • int SEMyVisualModel::getVisualizationPresetCurrentIndex();
  • void SEMyVisualModel::setVisualizationPresetCurrentIndex(const int);
  • std::string SEMyVisualModel::getVisualizationPresetItemText(const int);

Then, in the class descriptor file, you can expose this functionality and the attribute in the Inspector as follows:

SB_CLASS_BEGIN(SEMyVisualModel);
SB_CLASS_DESCRIPTION("MyVisualModel class description");
SB_CONSTRUCTOR_0(SEMyVisualModel);
SB_ATTRIBUTE_READ_WRITE_LIST(SEMyVisualModel, VisualizationPreset, "Visualization preset", "Properties");
SB_CLASS_END(SEMyVisualModel);
See also
Introspection

◆ SB_ATTRIBUTE_READ_WRITE_RANGE

#define SB_ATTRIBUTE_READ_WRITE_RANGE (   TYPE,
  CLASS,
  NAME,
  DESCRIPTION,
  GROUP 
)

Declares a modifiable attribute NAME of type TYPE from a class CLASS which associated functionality should be exposed and which should also be accessible for users in the Inspector in a group GROUP with a description name DESCRIPTION and with the possibility to modify it using a spin box that changes from a given minimum value to a given maximum value with a given step size.

The following functionality should be present in the CLASS:

  • TYPE CLASS::getNAME(); - returns the value.
  • void CLASS::setNAME(TYPE value); - sets the value.
  • TYPE CLASS::getMinimumNAME(); - returns the minimum value.
  • TYPE CLASS::getMaximumNAME(); - returns the maximum value.
  • TYPE CLASS::getNAMESingleStep(); - returns the single step value.
  • std::string CLASS::getNAMESuffix(); - returns a suffix string used for the representation of the current value if the TYPE is not of the SBQuantity type.

Note, that this macros also exposes the abovementioned functions associated with an attribute NAME, so you do not need to expose them using e.g. SB_FUNCTION_1 macros.

Example: Let's say that we want to expose in the Inspector an attribute called "Radius" of type "SBQuantity::length" from a class called "SEMyVisualModel". You need to have the following functions implemented in the class CLASS:

Then, in the class descriptor file, you can expose this functionality and the attribute in the Inspector as follows:

SB_CLASS_BEGIN(SEMyVisualModel);
SB_CLASS_DESCRIPTION("MyVisualModel class description");
SB_CONSTRUCTOR_0(SEMyVisualModel);
SB_ATTRIBUTE_READ_WRITE_RANGE(const SBQuantity::length&, SEMyVisualModel, Radius, "Radius", "Properties");
SB_CLASS_END(SEMyVisualModel);
See also
SB_ATTRIBUTE_READ_WRITE_RANGE_SLIDER
Introspection

◆ SB_ATTRIBUTE_READ_WRITE_RANGE_SLIDER

#define SB_ATTRIBUTE_READ_WRITE_RANGE_SLIDER (   TYPE,
  CLASS,
  NAME,
  DESCRIPTION,
  GROUP 
)

Declares a modifiable attribute NAME of type TYPE from a class CLASS which associated functionality should be exposed and which should also be accessible for users in the Inspector in a group GROUP with a description name DESCRIPTION and with the possibility to modify it using a slider (QSlider) that changes from a given minimum value to a given maximum value with a given step size.

The following functionality should be present in the CLASS:

  • TYPE CLASS::getNAME(); - returns the value.
  • void CLASS::setNAME(TYPE value); - sets the value.
  • TYPE CLASS::getMinimumNAME(); - returns the minimum value.
  • TYPE CLASS::getMaximumNAME(); - returns the maximum value.
  • TYPE CLASS::getNAMESingleStep(); - returns the single step value.
  • std::string CLASS::getNAMESuffix(); - returns a suffix string used for the representation of the current value if the TYPE is not of the SBQuantity type.

Note, that this macros also exposes the abovementioned functions associated with an attribute NAME, so you do not need to expose them using e.g. SB_FUNCTION_1 macros.

Example: Let's say that we want to expose in the Inspector an attribute called "Opacity" of type "unsigned int" from a class called "SEMyVisualModel". And let's say that this Opacity attribute changes from 0 to 100% with a single step of 1%. You need to have the following functions implemented in the class CLASS:

  • unsigned int SEMyVisualModel::getOpacity();
  • void SEMyVisualModel::setOpacity(unsigned int value);
  • unsigned int SEMyVisualModel::getMinimumOpacity();
  • unsigned int SEMyVisualModel::getMaximumOpacity();
  • unsigned int SEMyVisualModel::getOpacitySingleStep();
  • std::string SEMyVisualModel::getOpacitySuffix();

Then, in the class descriptor file, you can expose this functionality and the attribute in the Inspector as follows:

SB_CLASS_BEGIN(SEMyVisualModel);
SB_CLASS_DESCRIPTION("MyVisualModel class description");
SB_CONSTRUCTOR_0(SEMyVisualModel);
SB_ATTRIBUTE_READ_WRITE_RANGE_SLIDER(unsigned int, SEMyVisualModel, Opacity, "Opacity", "Properties");
SB_CLASS_END(SEMyVisualModel);
See also
SB_ATTRIBUTE_READ_WRITE_RANGE
Introspection