Jamba C++ API  5.1.1
StepButtonView Class Reference

A step button lets you step through the values of a parameter by repeatedly clicking on the button. More...

#include <StepButtonView.h>

Inherits CustomDiscreteControlView.

Classes

class  Creator
 

Public Types

enum  EArrowDirection {
  kAuto, kUp, kRight, kDown,
  kLeft
}
 Represents the direction of the arrow (if not using an image) More...
 
- Public Types inherited from TCustomControlView< int32 >
using Creator = CustomViewCreator< TCustomControlView< int32 >, CustomControlView >
 

Public Member Functions

void draw (CDrawContext *iContext) override
 
virtual void drawHeldButton (CDrawContext *iContext)
 
virtual void drawReleasedButton (CDrawContext *iContext)
 
EArrowDirection getArrowDirection () const
 Used only when no bitmap provided in order to draw an arrow pointing in the direction defined by this attribute. More...
 
CColor const & getHeldColor () const
 Color to use when the button is held and no image is provided. More...
 
BitmapPtr getImage () const
 The image for the button. More...
 
CColor const & getReleasedColor () const
 Color to use when the button is not held and no image is provided. More...
 
int32 getShiftStepIncrement () const
 Value by which this button will increment (positive) or decrement (negative) the parameter when the shift key modified is being held. More...
 
int32 getStepIncrement () const
 Value by which this button will increment (positive) or decrement (negative) the parameter. More...
 
bool getWrap () const
 Defines what happens when the value reaches its end of range after being incremented (resp. More...
 
bool isHeld () const
 
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 setArrowDirection (EArrowDirection iArrowDirection)
 Attribute arrow-direction. More...
 
void setHeldColor (CColor const &iColor)
 
void setImage (BitmapPtr iImage)
 Attribute button-image. More...
 
void setReleasedColor (CColor const &iColor)
 
void setShiftStepIncrement (int32 iStepIncrement)
 
void setStepIncrement (int32 iStepIncrement)
 
void setWrap (bool iFlag)
 
 StepButtonView (const CRect &iSize)
 
- 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 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 Member Functions

virtual int32 computeNextValue (int32 iIncrement) const
 Adds the increment to the current value and wrap if necessary. More...
 
virtual CDrawContext::PointList * getButtonPolygon ()
 
void registerParameters () override
 Registers the optional parameter using getControlTag() as its id. More...
 
void setViewSize (const CRect &rect, bool invalid) override
 
- 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...
 

Protected Attributes

EArrowDirection fArrowDirection {EArrowDirection::kAuto}
 
std::unique_ptr< CDrawContext::PointList > fButtonPolygon {}
 
bool fHeld {false}
 State of the button (true for held, false for released) More...
 
CColor fHeldColor {kRedCColor}
 
BitmapSPtr fImage {nullptr}
 
CColor fReleasedColor {kGreyCColor}
 
int32 fShiftStepIncrement {1}
 
int32 fStepIncrement {1}
 
bool fWrap {false}
 
- 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 {}
 

Detailed Description

A step button lets you step through the values of a parameter by repeatedly clicking on the button.

This view works for any parameter (both Vst and Jmb) that is (or can be interpreted as) a discrete parameter.

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

Attribute Description
step-increment Value by which this button will increment (positive) or decrement (negative) the parameter.
shift-step-increment Value by which this button will increment (positive) or decrement (negative) the parameter when the shift key modified is being held. This allows to have bigger steps (or smaller steps) when shift is used.
wrap Defines what happens when the value reaches its end of range after being incremented (resp. decremented). When set to true it will wrap around, otherwise it will remain at its max (resp. min)
held-color Color to use when the button is held and no image is provided.
released-color Color to use when the button is not held and no image is provided.
button-image

The image for the button. The image should contain 2 frames (each is of size image height / 2) with the following convention:

y frame
0 the button in its released state
image height / 2 the button in its held state

Example: 2 frames example

arrow-direction Used only when no bitmap provided in order to draw an arrow pointing in the direction defined by this attribute. A value of auto will trigger the rendering of an arrow up if step-increment is positive, and down if negative.
See also
CustomDiscreteControlView for details on discrete parameters and the usage of step-count

Member Enumeration Documentation

◆ EArrowDirection

enum EArrowDirection
strong

Represents the direction of the arrow (if not using an image)

Enumerator
kAuto 
kUp 
kRight 
kDown 
kLeft 

Constructor & Destructor Documentation

◆ StepButtonView()

StepButtonView ( const CRect &  iSize)
inlineexplicit

Member Function Documentation

◆ computeNextValue()

int32 computeNextValue ( int32  iIncrement) const
protectedvirtual

Adds the increment to the current value and wrap if necessary.

Returns
the next value (which may be the current value if no wrap)

◆ draw()

void draw ( CDrawContext *  iContext)
override

◆ drawHeldButton()

void drawHeldButton ( CDrawContext *  iContext)
virtual

◆ drawReleasedButton()

void drawReleasedButton ( CDrawContext *  iContext)
virtual

◆ getArrowDirection()

EArrowDirection getArrowDirection ( ) const
inline

Used only when no bitmap provided in order to draw an arrow pointing in the direction defined by this attribute.

A value of auto will trigger the rendering of an arrow up if step-increment is positive, and down if negative.

◆ getButtonPolygon()

CDrawContext::PointList * getButtonPolygon ( )
protectedvirtual
Returns
the polygon used to draw the button (by default a triangle pointing up if fStepIncrement is positive).

◆ getHeldColor()

CColor const& getHeldColor ( ) const
inline

Color to use when the button is held and no image is provided.

◆ getImage()

BitmapPtr getImage ( ) const
inline

The image for the button.

The image should contain 2 frames (each is of size image height / 2) with the following convention:

y frame
0 the button in its released state
image height / 2 the button in its held state

Example: 2 frames example

◆ getReleasedColor()

CColor const& getReleasedColor ( ) const
inline

Color to use when the button is not held and no image is provided.

◆ getShiftStepIncrement()

int32 getShiftStepIncrement ( ) const
inline

Value by which this button will increment (positive) or decrement (negative) the parameter when the shift key modified is being held.

This allows to have bigger steps (or smaller steps) when shift is used.

◆ getStepIncrement()

int32 getStepIncrement ( ) const
inline

Value by which this button will increment (positive) or decrement (negative) the parameter.

◆ getWrap()

bool getWrap ( ) const
inline

Defines what happens when the value reaches its end of range after being incremented (resp.

decremented). When set to true it will wrap around, otherwise it will remain at its max (resp. min)

◆ isHeld()

bool isHeld ( ) 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

◆ registerParameters()

void registerParameters ( )
overrideprotectedvirtual

Registers the optional parameter using getControlTag() as its id.

Reimplemented from CustomDiscreteControlView.

◆ setArrowDirection()

void setArrowDirection ( EArrowDirection  iArrowDirection)
inline

Attribute arrow-direction.

◆ setHeldColor()

void setHeldColor ( CColor const &  iColor)
inline

◆ setImage()

void setImage ( BitmapPtr  iImage)
inline

Attribute button-image.

◆ setReleasedColor()

void setReleasedColor ( CColor const &  iColor)
inline

◆ setShiftStepIncrement()

void setShiftStepIncrement ( int32  iStepIncrement)
inline

◆ setStepIncrement()

void setStepIncrement ( int32  iStepIncrement)
inline

◆ setViewSize()

void setViewSize ( const CRect &  rect,
bool  invalid 
)
overrideprotected

◆ setWrap()

void setWrap ( bool  iFlag)
inline

Member Data Documentation

◆ fArrowDirection

EArrowDirection fArrowDirection {EArrowDirection::kAuto}
protected

◆ fButtonPolygon

std::unique_ptr<CDrawContext::PointList> fButtonPolygon {}
protected

◆ fHeld

bool fHeld {false}
protected

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

◆ fHeldColor

CColor fHeldColor {kRedCColor}
protected

◆ fImage

BitmapSPtr fImage {nullptr}
protected

◆ fReleasedColor

CColor fReleasedColor {kGreyCColor}
protected

◆ fShiftStepIncrement

int32 fShiftStepIncrement {1}
protected

◆ fStepIncrement

int32 fStepIncrement {1}
protected

◆ fWrap

bool fWrap {false}
protected

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