Jamba C++ API  5.1.1
MomentaryButtonView Class Reference

A momentary button is a button that lets you set the value of a parameter to its "on" value when pressed, otherwise its "off" value. More...

#include <MomentaryButtonView.h>

Inherits CustomDiscreteControlView.

Classes

class  Creator
 

Public Member Functions

void draw (CDrawContext *iContext) override
 Calls drawOn() or drawOff() depending on the state (takes into account the inverse attribute) More...
 
virtual void drawOff (CDrawContext *iContext)
 called to display the "off" state (can be overriden) More...
 
virtual void drawOn (CDrawContext *iContext)
 called to display the "on" state (can be overriden) More...
 
int32 getComputedOffStep () const
 Computes "off" step based on value of off-step attribute. More...
 
int32 getComputedOnStep () const
 Computes "on" step based on value of on-step attribute. More...
 
CColor const & getDisabledColor () const
 When no image is provided and the control is disabled, this color is used instead. More...
 
BitmapPtr getImage () const
 The image to use to draw the button. More...
 
bool getImageHasDisabledState () const
 Flag to determine whether the image contains a disabled state (3 frames) or not (2 frames) More...
 
bool getInverse () const
 Inverses the meaning of "on" and "off" in regards to drawing the view/image. More...
 
int32 getOffStep () const
 Maps to the "off" value unless it is set to its default (-1) value in which case it maps to 0 (should be -1 or a value in [0, stepCount]). More...
 
CColor const & getOnColor () const
 When no image is provided, back-color is used for the "off" state and on-color for the "on" state (draws a rectangle with this color). More...
 
int32 getOnStep () const
 Maps to the "on" value unless it is set to its default (-1) value in which case it maps to getStepCount() (should be -1 or a value in [0, stepCount]). More...
 
bool isHeld () const
 
bool isOff () const
 
bool isOn () const
 
 MomentaryButtonView (const CRect &iSize)
 
int32_t onKeyDown (VstKeyCode &keyCode) override
 
int32_t onKeyUp (VstKeyCode &keyCode) override
 
CMouseEventResult onMouseCancel () override
 
CMouseEventResult onMouseDown (CPoint &where, const CButtonState &buttons) override
 
CMouseEventResult onMouseUp (CPoint &where, const CButtonState &buttons) override
 
void setDisabledColor (CColor const &iColor)
 
void setImage (BitmapPtr iImage)
 Attribute button-image. More...
 
void setImageHasDisabledState (bool iValue)
 
void setInverse (bool iInverse)
 
void setOffStep (int32 iStep)
 Attribute off-step More...
 
void setOnColor (CColor const &iColor)
 Attribute on-color (the "off" color is the back color...) More...
 
void setOnStep (int32 iStep)
 Attribute on-step More...
 
bool sizeToFit () override
 
- Public Member Functions inherited from CustomDiscreteControlView
 CustomDiscreteControlView (const CRect &iSize)
 
int32 getStepCount () const
 The number of steps of the managed discrete parameter as specified by this view. More...
 
void registerParameters () override
 Registers the optional parameter using getControlTag() as its id. More...
 
void setStepCount (int32 iStepCount)
 
- Public Member Functions inherited from TCustomControlView< int32 >
int32 getControlValue () const
 Returns the value of the managed parameter (properly typed) More...
 
void registerParameters () override
 Registers the optional parameter using getControlTag() as its id. More...
 
virtual void setControlValue (int32 const &iControlValue)
 Sets the value of the managed parameter to the provided value. More...
 
 TCustomControlView (const CRect &iSize)
 
- Public Member Functions inherited from CustomControlView
 CustomControlView (const CRect &iSize)
 
ParamID getControlTag () const
 Id of the parameter that this view manages. More...
 
virtual void setControlTag (ParamID iTag)
 
- Public Member Functions inherited from CustomView
void afterApplyAttributes () override
 Handles the lifecycle behavior getting triggered once all the attributes have been set (which usually happens after the XML file (uidesc) has been read/processed, or when you modify attributes in the VSTGUI Editor). More...
 
 CustomView (const CRect &iSize)
 
 CustomView (const CustomView &c)=delete
 
void draw (CDrawContext *iContext) override
 The basic draw method which will erase the background with the back color. More...
 
virtual void drawBackColor (CDrawContext *iContext)
 Draws the back color (if not set to transparent) More...
 
void drawStyleChanged ()
 Called when the draw style is changed (simply marks the view dirty) More...
 
CColor const & getBackColor () const
 The back color (background) for the view. More...
 
TagID getCustomViewTag () const
 The tag associated to this custom view. More...
 
bool getEditorMode () const
 A flag whose purpose is to render/log information during development when the flag is set to true. More...
 
void markDirty ()
 Marks this view dirty which will (at the appropriate time in the rendering lifecycle) trigger a call to draw() More...
 
void onParameterChange (ParamID iParamID) override
 Callback when a parameter changes. More...
 
void setBackColor (CColor const &iColor)
 
void setCustomViewTag (TagID iTag)
 
void setEditorMode (bool iEditorMode)
 
- Public Member Functions inherited from ParamAware
virtual void initState (GUIState *iGUIState)
 Called during initialization. More...
 
void invokeAll ()
 Invoke all (currently) registered callbacks and onParameterChange() (if registered). More...
 
IGUIParam registerBaseCallback (ParamID iParamID, Parameters::ChangeCallback iChangeCallback, bool iInvokeCallback)
 Registers a callback for the "base" param for the most generic use case. More...
 
IGUIParam registerBaseCallback (ParamID iParamID, Parameters::ChangeCallback1< IGUIParam > iChangeCallback, bool iInvokeCallback)
 Registers a callback for the "base" param for the most generic use case. More...
 
IGUIParam registerBaseParam (ParamID iParamID, bool iSubscribeToChanges=true)
 Registers the "base" param for the most generic use case but as a result is fairly limited and mainly gives access to the string representation of the param. More...
 
GUIRawVstParam registerCallback (RawVstParam const &iParamDef, Parameters::ChangeCallback iChangeCallback, bool iInvokeCallback=false)
 Registers a raw parameter (no conversion). More...
 
GUIRawVstParam registerCallback (RawVstParam const &iParamDef, Parameters::ChangeCallback1< GUIRawVstParam > iChangeCallback, bool iInvokeCallback=false)
 Registers a raw parameter (no conversion). More...
 
template<typename T >
GUIVstParam< T > registerCallback (VstParam< T > const &iParamDef, Parameters::ChangeCallback iChangeCallback, bool iInvokeCallback=false)
 Convenient call to register a callback for the Vst param simply by using its description (accessible in state-aware views via fParams->fMyParam). More...
 
template<typename T >
GUIVstParam< T > registerCallback (VstParam< T > const &iParamDef, Parameters::ChangeCallback1< GUIVstParam< T >> iChangeCallback, bool iInvokeCallback=false)
 Convenient call to register a callback for the Vst param simply by using its description (accessible in state-aware views via fParams->fMyParam). More...
 
template<typename T >
GUIJmbParam< T > registerCallback (JmbParam< T > const &iParamDef, Parameters::ChangeCallback iChangeCallback, bool iInvokeCallback=false)
 Convenient call to register a callback for the Jmb param simply by using its description (accessible in state-aware views via fParams->fMyParam). More...
 
template<typename T >
GUIJmbParam< T > registerCallback (JmbParam< T > const &iParamDef, Parameters::ChangeCallback1< GUIJmbParam< T >> iChangeCallback, bool iInvokeCallback=false)
 Convenient call to register a callback for the Jmb param simply by using its description (accessible in state-aware views via fParams->fMyParam). More...
 
template<typename T >
GUIJmbParam< T > registerCallback (GUIJmbParam< T > &iParam, Parameters::ChangeCallback iChangeCallback, bool iInvokeCallback=false)
 Convenient call to register a callback for the Jmb param simply by using the param from the state (accessible in state-aware views via fState->fMyParam). More...
 
template<typename T >
GUIJmbParam< T > registerCallback (GUIJmbParam< T > &iParam, Parameters::ChangeCallback1< GUIJmbParam< T >> iChangeCallback, bool iInvokeCallback=false)
 Convenient call to register a callback for the Jmb param simply by using the param from the state (accessible in state-aware views via fState->fMyParam). More...
 
template<typename T >
GUIJmbParam< T > registerJmbCallback (ParamID iParamID, Parameters::ChangeCallback iChangeCallback, bool iInvokeCallback=false)
 Registers a callback for the Jmb param by its id and return the wrapper to the param. More...
 
template<typename T >
GUIJmbParam< T > registerJmbCallback (ParamID iParamID, Parameters::ChangeCallback1< GUIJmbParam< T >> iChangeCallback, bool iInvokeCallback=false)
 Registers a callback for the Jmb param by its id and return the wrapper to the param. More...
 
template<typename T >
GUIJmbParam< T > registerJmbParam (ParamID iParamID, bool iSubscribeToChanges=true)
 Registers the Jmb param by its id and return the wrapper to the param. More...
 
template<typename T >
GUIOptionalParam< T > registerOptionalCallback (ParamID iParamID, Parameters::ChangeCallback iChangeCallback, bool iInvokeCallback=false)
 Registers an optional parameter which handles Vst, Jmb or no parameter at all. More...
 
template<typename T >
GUIOptionalParam< T > registerOptionalCallback (ParamID iParamID, Parameters::ChangeCallback1< GUIOptionalParam< T >> iChangeCallback, bool iInvokeCallback=false)
 Registers an optional parameter which handles Vst, Jmb or no parameter at all. More...
 
GUIOptionalParam< int32 > registerOptionalDiscreteCallback (ParamID iParamID, int32 iStepCount, Parameters::ChangeCallback iChangeCallback, bool iInvokeCallback=false)
 Registers an optional discrete parameter which handles Vst, Jmb or no parameter at all. More...
 
GUIOptionalParam< int32 > registerOptionalDiscreteCallback (ParamID iParamID, int32 iStepCount, Parameters::ChangeCallback1< GUIOptionalParam< int32 >> iChangeCallback, bool iInvokeCallback=false)
 Registers an optional discrete parameter which handles Vst, Jmb or no parameter at all. More...
 
GUIOptionalParam< int32 > registerOptionalDiscreteParam (ParamID iParamID, int32 iStepCount, bool iSubscribeToChanges=true)
 Registers an optional discrete parameter which handles Vst, Jmb or no parameter at all. More...
 
template<typename T >
GUIOptionalParam< T > registerOptionalParam (ParamID iParamID, bool iSubscribeToChanges=true)
 Registers an optional parameter which handles Vst, Jmb or no parameter at all. More...
 
GUIRawVstParam registerParam (RawVstParam const &iParamDef, bool iSubscribeToChanges=true)
 Registers a raw parameter (no conversion). More...
 
template<typename T >
GUIVstParam< T > registerParam (VstParam< T > const &iParamDef, bool iSubscribeToChanges=true)
 Convenient call to register a Vst param simply by using its description (accessible in state-aware views via fParams->fMyParam). More...
 
template<typename T >
GUIJmbParam< T > registerParam (JmbParam< T > const &iParamDef, bool iSubscribeToChanges=true)
 Convenient call to register a Jmb param simply by using its description (accessible in state-aware views via fParams->fMyParam). More...
 
template<typename T >
GUIJmbParam< T > registerParam (GUIJmbParam< T > &iParam, bool iSubscribeToChanges=true)
 Convenient call to register a Jmb param simply by using the param from the state (accessible in state-aware views via fState->fMyParam). More...
 
GUIRawVstParam registerRawVstCallback (ParamID iParamID, Parameters::ChangeCallback iChangeCallback, bool iInvokeCallback=false)
 Registers a raw parameter (no conversion) The callback will be invoked when the parameter changes. More...
 
GUIRawVstParam registerRawVstCallback (ParamID iParamID, Parameters::ChangeCallback1< GUIRawVstParam > iChangeCallback, bool iInvokeCallback=false)
 Registers a raw parameter (no conversion) The callback will be invoked when the parameter changes. More...
 
GUIRawVstParam registerRawVstParam (ParamID iParamID, bool iSubscribeToChanges=true)
 Registers a raw parameter (no conversion) onParameterChange() will be called on changes (if iSubscribeToChanges is set to true). More...
 
GUIVstParam< bool > registerVstBooleanParam (ParamID iParamID, bool iSubscribeToChanges=true)
 
template<typename T >
GUIVstParam< T > registerVstCallback (ParamID iParamID, Parameters::ChangeCallback iChangeCallback, bool iInvokeCallback=false)
 Register a callback for a Vst parameter simply given its id The callback will be invoked when the parameter changes. More...
 
template<typename T >
GUIVstParam< T > registerVstCallback (ParamID iParamID, Parameters::ChangeCallback1< GUIVstParam< T >> iChangeCallback, bool iInvokeCallback=false)
 Register a callback for a Vst parameter simply given its id The callback will be invoked when the parameter changes. More...
 
template<typename T >
GUIVstParam< T > registerVstParam (ParamID iParamID, bool iSubscribeToChanges=true)
 Register a Vst parameter simply given its id onParameterChange() will be called on changes (if iSubscribeToChanges is set to true). More...
 
GUIVstParam< PercentregisterVstPercentParam (ParamID iParamID, bool iSubscribeToChanges=true)
 
void unregisterAll ()
 Unregisters all parameters. More...
 
bool unregisterParam (ParamID iParamID)
 Removes the registration of the provided param (closing the connection/stopping to listen) More...
 
GUIRawVstParam unregisterParam (GUIRawVstParam const &iParam)
 Removes the registration of the provided param (closing the connection/stopping to listen) More...
 
template<typename T >
GUIVstParam< T > unregisterParam (GUIVstParam< T > const &iParam)
 Removes the registration of the provided param (closing the connection/stopping to listen) More...
 
template<typename T >
GUIJmbParam< T > unregisterParam (GUIJmbParam< T > const &iParam)
 Removes the registration of the provided param (closing the connection/stopping to listen) More...
 
virtual ~ParamAware ()
 

Protected Attributes

CColor fDisabledColor {kBlackCColor}
 
bool fHeld {false}
 State of the button (true for held, false for released) More...
 
BitmapSPtr fImage {nullptr}
 
bool fImageHasDisabledState {false}
 
bool fInverse {false}
 
int32 fOffStep {-1}
 
CColor fOnColor {kRedCColor}
 
int32 fOnStep {-1}
 
- Protected Attributes inherited from CustomDiscreteControlView
int32 fStepCount {-1}
 
- Protected Attributes inherited from TCustomControlView< int32 >
GUIOptionalParam< int32 > fControlParameter
 
- Protected Attributes inherited from CustomControlView
ParamID fControlTag {UNDEFINED_PARAM_ID}
 
- Protected Attributes inherited from CustomView
CColor fBackColor
 
ParamID fTag
 
- Protected Attributes inherited from ParamAware
std::unique_ptr< GUIParamCxMgrfParamCxMgr {}
 

Additional Inherited Members

- Public Types inherited from TCustomControlView< int32 >
using Creator = CustomViewCreator< TCustomControlView< int32 >, CustomControlView >
 
- Protected Member Functions inherited from CustomView
void sizeToFit (CCoord iWidth, CCoord iHeight)
 Convenient call to size to fit this view according to the and height provided. More...
 
bool sizeToFit (BitmapPtr iBitmap, int iFrameCount=1)
 Convenient call to size to fit this view to match the bitmap. More...
 

Detailed Description

A momentary button is a button that lets you set the value of a parameter to its "on" value when pressed, otherwise its "off" value.

This view is designed to handle parameters which are backed by a bool representation but it works for any parameter (both Vst and Jmb) that is (or can be interpreted as) a discrete parameter.

Note
This view defines the "on" state as being the opposite of the "off" state and so the "off" state is the one being checked against the off value (otherwise we could end up in a situation where both isOn and isOff are true...). The consequence is that the underlying parameter might have a value that is neither the "off" value nor the "on" value, but for the sake of this view it will be treated as "on" (similarly to C/C++ where 0 is false and any non-zero is true).

In addition to the attributes exposed by CustomDiscreteControlView, this class exposes the following attributes:

Attribute Description
on-step Maps to the "on" value unless it is set to its default (-1) value in which case it maps to getStepCount() (should be -1 or a value in [0, stepCount]).
off-step Maps to the "off" value unless it is set to its default (-1) value in which case it maps to 0 (should be -1 or a value in [0, stepCount]).
on-color When no image is provided, back-color is used for the "off" state and on-color for the "on" state (draws a rectangle with this color).
disabled-color When no image is provided and the control is disabled, this color is used instead.
button-image

The image to use to draw the button. If button-image-has-disabled-state is true then the image should contain the following 3 frames (each is of size image height / 3):

y frame
0 the button in its disabled state
1 * image height / 3 the button in its "off" state
2 * image height / 3 the button in its "on" state

Example: 3 frames example

If button-image-has-disabled-state is false then the image should contain the following 2 frames (each is of size image height / 2):

y frame
0 the button in its "off" state
image height / 2 the button in its "on" state

Example: 2 frames example

button-image-has-disabled-state Flag to determine whether the image contains a disabled state (3 frames) or not (2 frames)
See also
getImage() for details on the impact of this flag on the image
inverse Inverses the meaning of "on" and "off" in regards to drawing the view/image.
See also
CustomDiscreteControlView for details on discrete parameters and the usage of step-count

Constructor & Destructor Documentation

◆ MomentaryButtonView()

MomentaryButtonView ( const CRect &  iSize)
inlineexplicit

Member Function Documentation

◆ draw()

void draw ( CDrawContext *  iContext)
override

Calls drawOn() or drawOff() depending on the state (takes into account the inverse attribute)

◆ drawOff()

void drawOff ( CDrawContext *  iContext)
virtual

called to display the "off" state (can be overriden)

◆ drawOn()

void drawOn ( CDrawContext *  iContext)
virtual

called to display the "on" state (can be overriden)

◆ getComputedOffStep()

int32 getComputedOffStep ( ) const
inline

Computes "off" step based on value of off-step attribute.

◆ getComputedOnStep()

int32 getComputedOnStep ( ) const

Computes "on" step based on value of on-step attribute.

◆ getDisabledColor()

CColor const& getDisabledColor ( ) const
inline

When no image is provided and the control is disabled, this color is used instead.

◆ getImage()

BitmapPtr getImage ( ) const
inline

The image to use to draw the button.

If button-image-has-disabled-state is true then the image should contain the following 3 frames (each is of size image height / 3):

y frame
0 the button in its disabled state
1 * image height / 3 the button in its "off" state
2 * image height / 3 the button in its "on" state

Example: 3 frames example

If button-image-has-disabled-state is false then the image should contain the following 2 frames (each is of size image height / 2):

y frame
0 the button in its "off" state
image height / 2 the button in its "on" state

Example: 2 frames example

◆ getImageHasDisabledState()

bool getImageHasDisabledState ( ) const
inline

Flag to determine whether the image contains a disabled state (3 frames) or not (2 frames)

See also
getImage() for details on the impact of this flag on the image

◆ getInverse()

bool getInverse ( ) const
inline

Inverses the meaning of "on" and "off" in regards to drawing the view/image.

◆ getOffStep()

int32 getOffStep ( ) const
inline

Maps to the "off" value unless it is set to its default (-1) value in which case it maps to 0 (should be -1 or a value in [0, stepCount]).

◆ getOnColor()

CColor const& getOnColor ( ) const
inline

When no image is provided, back-color is used for the "off" state and on-color for the "on" state (draws a rectangle with this color).

◆ getOnStep()

int32 getOnStep ( ) const
inline

Maps to the "on" value unless it is set to its default (-1) value in which case it maps to getStepCount() (should be -1 or a value in [0, stepCount]).

◆ isHeld()

bool isHeld ( ) const
inline

◆ isOff()

bool isOff ( ) const
inline

◆ isOn()

bool isOn ( ) const
inline

◆ onKeyDown()

int32_t onKeyDown ( VstKeyCode &  keyCode)
override

◆ onKeyUp()

int32_t onKeyUp ( VstKeyCode &  keyCode)
override

◆ onMouseCancel()

CMouseEventResult onMouseCancel ( )
override

◆ onMouseDown()

CMouseEventResult onMouseDown ( CPoint &  where,
const CButtonState &  buttons 
)
override

◆ onMouseUp()

CMouseEventResult onMouseUp ( CPoint &  where,
const CButtonState &  buttons 
)
override

◆ setDisabledColor()

void setDisabledColor ( CColor const &  iColor)
inline

◆ setImage()

void setImage ( BitmapPtr  iImage)
inline

Attribute button-image.

◆ setImageHasDisabledState()

void setImageHasDisabledState ( bool  iValue)
inline

◆ setInverse()

void setInverse ( bool  iInverse)
inline

◆ setOffStep()

void setOffStep ( int32  iStep)
inline

Attribute off-step

◆ setOnColor()

void setOnColor ( CColor const &  iColor)
inline

Attribute on-color (the "off" color is the back color...)

◆ setOnStep()

void setOnStep ( int32  iStep)
inline

Attribute on-step

◆ sizeToFit()

bool sizeToFit ( )
override

Member Data Documentation

◆ fDisabledColor

CColor fDisabledColor {kBlackCColor}
protected

◆ fHeld

bool fHeld {false}
protected

State of the button (true for held, false for released)

◆ fImage

BitmapSPtr fImage {nullptr}
protected

◆ fImageHasDisabledState

bool fImageHasDisabledState {false}
protected

◆ fInverse

bool fInverse {false}
protected

◆ fOffStep

int32 fOffStep {-1}
protected

◆ fOnColor

CColor fOnColor {kRedCColor}
protected

◆ fOnStep

int32 fOnStep {-1}
protected

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