This reference page is linked to from the following overview topics: Major New Features, SDK Change Details, Caddy Controls.
A pure virtual interface for implementing grips.
class IBaseGrip A Grip or Caddy is a collection of modeless, transparent, in canvas UI elements that lets a user perform actions or modify values. A user can create their own grip by inheriting from IBaseGrip, implementing IBaseGrip's pure virtual functions, and then enable it on via the IGripManager interface. Based upon the number of grip items the grip contains and the type each item is, the system will create a set of in canvas UI representations for each item, which then interact with the IBaseGrip item via various functions. Usually the implementation of the IBaseGrip acts as a bridge between some existing data and the in canvas UI. For example if a grip was created to modify different soft selection values in a modifier, the grip would get the values from that modifier and then set the values back onto it. The grip itself will get displayed via the IGripManager::EnableGrip function which basically calls various IBaseGrip functions to set up the in canvas UI and then ferry messages to and from the UI to the grip.
#include <igrip.h>
Classes |
|
struct | ComboLabel |
The label and icon that make up each
individual option for Type::eCombo grip item. More... |
|
struct | GripValue |
The grip value that's used by the grip item
when it's value is retrieved via GetValue or set via SetValue.
More... |
|
Public Types |
|
enum | Type
{ eInvalid = -1, eInt = 0, eFloat, eTime, eUniverse, eCombo, eToggle, eAction, eCommand, eStatus } |
enum | Customization { eSameRow = 0x1, eTurnOffLabel = 0x2, eDisableAlt = 0x4 } |
Public Member Functions |
|
virtual | ~IBaseGrip () |
Deconstructor. |
|
virtual void | GetGripName (MSTR &string)=0 |
Get the name of the grip. |
|
virtual int | GetNumGripItems ()=0 |
Get the number of grip items this grip
contains. |
|
virtual IBaseGrip::Type | GetType (int which)=0 |
Get the type that the specified grip item
will control. |
|
virtual bool | GetText (int which, MSTR &string)=0 |
Get the name of the specified grip item.
|
|
virtual bool | GetResolvedIconName (int which, MSTR &string)=0 |
Get the file path of the icon that
represents the specified grip item. |
|
virtual DWORD | GetCustomization (int which)=0 |
Get any special customization flags that
this grip item needs to follow. |
|
virtual bool | GetComboOptions (int which, Tab< ComboLabel * > &comboOptions)=0 |
Get the option possibilities for this combo
grip item. |
|
virtual bool | GetCommandIcon (int which, MSTR &string)=0 |
Get an icon for the IBaseGrip::eCommand grip
item. |
|
virtual bool | GetValue (int which, TimeValue t, IBaseGrip::GripValue &value)=0 |
Get the value of the specified grip item.
|
|
virtual bool | ShowKeyBrackets (int which, TimeValue t)=0 |
Whether or not key brackets, which will show
in a spinner that a key is present, should be shown at the
specified time. |
|
virtual bool | GetRange (int which, IBaseGrip::GripValue &minRange, IBaseGrip::GripValue &maxRange)=0 |
Get the range of this grip values. |
|
virtual bool | GetResetValue (int which, IBaseGrip::GripValue &resetValue)=0 |
Get the reset value of the grip. |
|
virtual bool | ResetValue (TimeValue t, int which)=0 |
Reset the specified grip. |
|
Operations
|
|
The Okay, Cancel and Apply operations that a grip may implement. |
|
virtual bool | SupportsOkayApplyCancel ()=0 |
Whether or not, the Okay, Apply and Cancel
grip buttons will get shown or not. |
|
virtual void | Okay (TimeValue t)=0 |
Accept any necessary changes and disable the
grip to close the UI. |
|
virtual void | Cancel ()=0 |
Disregard and cancel any necessary changes
and disable the grip to close the UI. |
|
virtual void | Apply (TimeValue t)=0 |
Accept any necessary changes and perform any
pending action if needed. |
|
Set Functions
|
|
Set of functions which are called when setting a value. Note that SetValue may be called multiple times within each StartSetValue pair. |
|
virtual bool | SetValue (int which, TimeValue t, IBaseGrip::GripValue &value)=0 |
Set the value of the specified. |
|
virtual bool | StartSetValue (int which, TimeValue t)=0 |
Get ready to set this value. |
|
virtual bool | EndSetValue (int which, TimeValue t, bool accepted)=0 |
The value is done setting values. |
|
Scaling Functions
|
|
Set of functions which are called when the grip is scaled by either incrementing or decrementing it. This value is the value that will thus added or subtracted from it. Only supports those grip items which have spinners. |
|
virtual bool | GetAutoScale (int which)=0 |
Whether or nor we will use auto scaling when
incrementing or decrementing this item. |
|
virtual bool | GetScale (int which, IBaseGrip::GripValue &scaleValue)=0 |
Get the scale value for this item when we
increment or decrement it. |
|
virtual bool | GetScaleInViewSpace (int which, float &depth)=0 |
Get the scale value for this grip in view
space, if one exists. |
virtual ~IBaseGrip | ( | ) | [inline, virtual] |
Deconstructor.
{};
virtual bool SupportsOkayApplyCancel | ( | ) | [pure virtual] |
Whether or not, the Okay, Apply and Cancel grip buttons will get shown or not.
virtual void Okay | ( | TimeValue | t | ) | [pure virtual] |
Accept any necessary changes and disable the grip to close the UI.
Basically do whatever operations you would do similar if the Okay button was pressed in a modeless dialog. Note that it's the implementations responsibility to disable the grip.
[in] | t | The time at which to perform the okay. |
virtual void Cancel | ( | ) | [pure virtual] |
Disregard and cancel any necessary changes and disable the grip to close the UI.
Basically do whatever operations you would do similar if the Cancel button was pressed in a modeless dialog. Note that it's the implementations responsibility to disable the grip.
virtual void Apply | ( | TimeValue | t | ) | [pure virtual] |
Accept any necessary changes and perform any pending action if needed.
Unlike Okay, after an Apply the grip stays active and displayed.
[in] | t | The time at which to perform the apply. |
virtual void GetGripName | ( | MSTR & | string | ) | [pure virtual] |
virtual int GetNumGripItems | ( | ) | [pure virtual] |
Get the number of grip items this grip contains.
virtual IBaseGrip::Type GetType | ( | int | which | ) | [pure virtual] |
Get the type that the specified grip item will control.
[in] | which | The zero based index of the item. |
virtual bool GetText | ( | int | which, |
MSTR & | string | ||
) | [pure virtual] |
Get the name of the specified grip item.
[in] | which | The zero based index of the item. |
[out] | string | The name of the specified grip item. |
virtual bool GetResolvedIconName | ( | int | which, |
MSTR & | string | ||
) | [pure virtual] |
Get the file path of the icon that represents the specified grip item.
Every grip item no matter it's type should try to provide an icon that represents the string that's returned by GetText.
[in] | which | The zero based index of the grip item. |
[out] | string | The name of the resolved path of the icon. It's this functions responsibility to resolve the path completely. |
virtual DWORD GetCustomization | ( | int | which | ) | [pure virtual] |
Get any special customization flags that this grip item needs to follow.
[in] | which | The zero based index of the item. |
virtual bool GetComboOptions | ( | int | which, |
Tab< ComboLabel * > & | comboOptions | ||
) | [pure virtual] |
Get the option possibilities for this combo grip item.
[in] | which | The zero based index of the item. |
[out] | cobmoOptions | A returned tab of labels that describes each possible option for the IBaseGrip::eCombo type grip button. These values will be presented in the UI as the possible options which can be selected. Note that it's the responsiblity of the client of this function to delete each allocated ComboLabel pointer in the Tab. |
virtual bool GetCommandIcon | ( | int | which, |
MSTR & | string | ||
) | [pure virtual] |
Get an icon for the IBaseGrip::eCommand grip item.
Since a IBaseGrip::eCommand can have two different states, the grip item can show additional icons, in addition to the one returned by GetResolvedIconName, to represent these states.
[in] | which | The zero based index of the grip item. |
[out] | string | The name of the resolved path of the icon. It's this functions responsibility to resolve the path completely. |
virtual bool GetValue | ( | int | which, |
TimeValue | t, | ||
IBaseGrip::GripValue & | value | ||
) | [pure virtual] |
Get the value of the specified grip item.
[in] | which | The zero based index of the grip item. |
[in] | t | The time at which to get the value. |
[out] | value | The value for that grip. See ::GripValue to see the values that are supported. |
virtual bool SetValue | ( | int | which, |
TimeValue | t, | ||
IBaseGrip::GripValue & | value | ||
) | [pure virtual] |
Set the value of the specified.
[in] | which | The zero based index of the grip item. |
[in] | t | The time at which to set the value. |
[in] | value | The value for that grip. See ::GripValue to see the values that are supported. |
virtual bool StartSetValue | ( | int | which, |
TimeValue | t | ||
) | [pure virtual] |
Get ready to set this value.
Sometimes an item needs to do some setup before a value get's set, for example cache some values, or get ready for an undo. This is called before SetValue is called and SetValue may be called multiple times after StartSetValue is called.
[in] | which | The zero based index of the grip item. |
[in] | t | The time at which to set the value. |
virtual bool EndSetValue | ( | int | which, |
TimeValue | t, | ||
bool | accepted | ||
) | [pure virtual] |
The value is done setting values.
Sometimes an item needs to do some cleanup after a value get's set, for example delete some cached values or accept an undo. This will get called immediately after the last SetValue function get's called.
[in] | which | The zero based index of the grip item. |
[in] | t | The time at which the value was set. |
[in] | accepted | If true the setvalue operation has succeeded and any undo's may be accepted if needed. If false then the setvalue operation was canceled and it's the implementors responsibility to rever the value back to it's original value it had when StartSetValue was called, for example it could do this by canceling the hold. |
virtual bool ShowKeyBrackets | ( | int | which, |
TimeValue | t | ||
) | [pure virtual] |
Whether or not key brackets, which will show in a spinner that a key is present, should be shown at the specified time.
Usually this function will check to see if a key exists at this time.
[in] | which | The zero based index of the grip item, which we are checking key brackets for. Will only check for those grip items which have spinners. |
[in] | t | The time at which we are checking to see if we should show a key bracket. |
virtual bool GetAutoScale | ( | int | which | ) | [pure virtual] |
Whether or nor we will use auto scaling when incrementing or decrementing this item.
[in] | which | The zero based index of the grip item. |
virtual bool GetScale | ( | int | which, |
IBaseGrip::GripValue & | scaleValue | ||
) | [pure virtual] |
Get the scale value for this item when we increment or decrement it.
Will normally only get used if GetAutoScale and GetSCaleInViewSpace returns false.
[in] | which | The zero based index of the grip item. |
[out] | scaleValue | The value of the scale. |
virtual bool GetScaleInViewSpace | ( | int | which, |
float & | depth | ||
) | [pure virtual] |
Get the scale value for this grip in view space, if one exists.
[in] | which | The zero based index of the grip item. |
[out] | depth | The screen space depth that the scale should use. /see ViewExp::MapScreenToView for a more in depth description on screen depth. -200 is usually a good default value. |
virtual bool GetRange | ( | int | which, |
IBaseGrip::GripValue & | minRange, | ||
IBaseGrip::GripValue & | maxRange | ||
) | [pure virtual] |
Get the range of this grip values.
[in] | which | The grip item |
[in] | minRange | The minimum range value for this grip. If the grip type is Type::eAction then no valid value is expected. |
[in] | maxRange | The maximum range value for this grip. If the grip type is Type::eAction then no valid value is expected. |
virtual bool GetResetValue | ( | int | which, |
IBaseGrip::GripValue & | resetValue | ||
) | [pure virtual] |
Get the reset value of the grip.
[in] | which | The grip item whose reset value we will get. |
[out] | resetValue | The resetValue for that value. If the grip type is eAction then no valid value is expected. |
virtual bool ResetValue | ( | TimeValue | t, |
int | which | ||
) | [pure virtual] |
Reset the specified grip.
[in] | t | The time at which to reset. |
[in] | which | Which grip item to reset. |