#include <c4d_gui.h>
A convenience class that makes it easier to use the tristate feature of dialog controls, i.e. using a single control to represent the value of multiple objects.
The template allows manual instantiations for the following types: Bool, Int32, Float, Vector, BaseTime and String.
Public Member Functions | |
TriState () | |
TriState (const TYPE &val) | |
TriState (TYPE &&val) | |
Bool | GetTri () const |
void | SetTri (Bool state) |
const TYPE & | GetValue () const |
Bool | HasChanged () const |
void | Add (const TYPE &val) |
void | Add (TYPE &&val) |
void | Add (BaseContainer *bc, Int32 id) |
Int32 | Check (GeDialog *dlg, const BaseContainer &msg, Int32 cid, Int32 gid) |
Int32 | CheckVector (GeDialog *dlg, const BaseContainer &msg, Int32 current_id, Int32 gidx, Int32 gidy, Int32 gidz) |
Int32 | CheckBaseTime (GeDialog *dlg, const BaseContainer &msg, BaseDocument *doc, Int32 cid, Int32 gid) |
Private Attributes | |
Int32 | tri |
TYPE | value |
TriState | ( | ) |
Default constructor. Creates an empty tristate.
Creates a tristate and adds a single value.
[in] | val | The value to add. |
Bool GetTri | ( | ) | const |
Checks whether all added values are the same, or if a tristate mode is necessary.
void SetTri | ( | Bool | state | ) |
Sets the tristate without touching the value.
[in] | state | True if a tristate shall be set. |
const TYPE& GetValue | ( | void | ) | const |
Retrieves the value of the tristate.
TYPE()
if the object is empty. Bool HasChanged | ( | ) | const |
Checks if the tristate is empty.
void Add | ( | const TYPE & | val | ) |
Adds a value to the tristate.
[in] | val | The value to add. |
void Add | ( | TYPE && | val | ) |
void Add | ( | BaseContainer * | bc, |
Int32 | id | ||
) |
Adds a value to the tristate from a base container.
[in] | bc | The base container with the value. The caller owns the pointed base container. |
[in] | id | The ID of the value to add. |
Int32 Check | ( | GeDialog * | dlg, |
const BaseContainer & | msg, | ||
Int32 | cid, | ||
Int32 | gid | ||
) |
Analyzes a GeDialog::Command() message to see if a certain dialog control has changed, and in that case adds the new value to the tristate. The value can then be accessed with GetValue.
[in] | dlg | The dialog the message was sent to. The caller owns the pointed dialog. |
[in] | msg | The message container. |
[in] | cid | The control ID that triggered the message. |
[in] | gid | The ID of the control to check for. |
Int32 CheckVector | ( | GeDialog * | dlg, |
const BaseContainer & | msg, | ||
Int32 | current_id, | ||
Int32 | gidx, | ||
Int32 | gidy, | ||
Int32 | gidz | ||
) |
Analyzes a GeDialog::Command() message to see if any of the three dialog controls making up a vector has changed, and in that case adds the new value as a vector to the tristate. The vector can then be accessed with GetValue.
[in] | dlg | The dialog the message was sent to. The caller owns the pointed dialog. |
[in] | msg | The message container. |
[in] | current_id | The control ID that triggered the message. |
[in] | gidx | The ID of the X control to check for. |
[in] | gidy | The ID of the Y control to check for. |
[in] | gidz | The ID of the Z control to check for. |
Int32 CheckBaseTime | ( | GeDialog * | dlg, |
const BaseContainer & | msg, | ||
BaseDocument * | doc, | ||
Int32 | cid, | ||
Int32 | gid | ||
) |
Analyzes a GeDialog::Command() message to see if a time dialog control has changed, and in that case adds the new time to the tristate. The time can then be accessed with GetValue::
[in] | dlg | The dialog the message was sent to. The caller owns the pointed dialog. |
[in] | msg | The message container. |
[in] | doc | A document to get framerate settings from. |
[in] | cid | The control ID that triggered the message. |
[in] | gid | The ID of the control to check for. |
|
private |
|
private |