iPlug2 - C++ Audio Plug-in Framework
|
A base class for slider/fader controls, to handle mouse action and Sender. More...
#include <IControl.h>
Public Member Functions | |
ISliderControlBase (const IRECT &bounds, int paramIdx=kNoParameter, EDirection dir=EDirection::Vertical, double gearing=DEFAULT_GEARING, float handleSize=0.f) | |
ISliderControlBase (const IRECT &bounds, IActionFunction aF=nullptr, EDirection dir=EDirection::Vertical, double gearing=DEFAULT_GEARING, float handleSize=0.f) | |
void | OnResize () override |
Called when IControl is constructed or resized using SetRect(). More... | |
void | OnMouseDown (float x, float y, const IMouseMod &mod) override |
Implement this method to respond to a mouse down event on this control. More... | |
void | OnMouseUp (float x, float y, const IMouseMod &mod) override |
Implement this method to respond to a mouse up event on this control. More... | |
void | OnMouseDrag (float x, float y, float dX, float dY, const IMouseMod &mod) override |
Implement this method to respond to a mouse drag event on this control. More... | |
void | OnMouseWheel (float x, float y, const IMouseMod &mod, float d) override |
Implement this method to respond to a mouse wheel event on this control. More... | |
void | SetGearing (double gearing) |
bool | IsFineControl (const IMouseMod &mod, bool wheel) const |
![]() | |
IControl (const IRECT &bounds, int paramIdx=kNoParameter, IActionFunction actionFunc=nullptr) | |
Constructor. More... | |
IControl (const IRECT &bounds, const std::initializer_list< int > ¶ms, IActionFunction actionFunc=nullptr) | |
Constructor (range of parameters) More... | |
IControl (const IRECT &bounds, IActionFunction actionFunc) | |
Constructor (no paramIdx) More... | |
IControl (const IControl &)=delete | |
void | operator= (const IControl &)=delete |
virtual | ~IControl () |
Destructor. More... | |
virtual void | OnMouseDown (float x, float y, const IMouseMod &mod) |
Implement this method to respond to a mouse down event on this control. More... | |
virtual void | OnMouseUp (float x, float y, const IMouseMod &mod) |
Implement this method to respond to a mouse up event on this control. More... | |
virtual void | OnMouseDrag (float x, float y, float dX, float dY, const IMouseMod &mod) |
Implement this method to respond to a mouse drag event on this control. More... | |
virtual void | OnMouseDblClick (float x, float y, const IMouseMod &mod) |
Implement this method to respond to a mouse double click event on this control. More... | |
virtual void | OnMouseWheel (float x, float y, const IMouseMod &mod, float d) |
Implement this method to respond to a mouse wheel event on this control. More... | |
virtual bool | OnKeyDown (float x, float y, const IKeyPress &key) |
Implement this method to respond to a key down event on this control. More... | |
virtual bool | OnKeyUp (float x, float y, const IKeyPress &key) |
Implement this method to respond to a key up event on this control. More... | |
virtual void | OnMouseOver (float x, float y, const IMouseMod &mod) |
Implement this method to respond to a mouseover event on this control. More... | |
virtual void | OnMouseOut () |
Implement this method to respond to a mouseout event on this control. More... | |
virtual void | OnTouchCancelled (float x, float y, const IMouseMod &mod) |
Implement this method to respond to a touch cancel event on this control. More... | |
virtual void | OnDrop (const char *str) |
Implement to do something when something was drag 'n dropped onto this control. More... | |
virtual void | OnDropMultiple (const std::vector< const char * > &paths) |
Implement to handle multiple items drag 'n dropped onto this control. More... | |
virtual void | OnRescale () |
Implement to do something when graphics is scaled globally (e.g. More... | |
virtual void | OnResize () |
Called when IControl is constructed or resized using SetRect(). More... | |
virtual void | OnInit () |
Called just prior to when the control is attached, after its delegate and graphics member variable set. More... | |
virtual void | OnAttached () |
Called after the control has been attached, and its delegate and graphics member variable set. More... | |
virtual void | OnMsgFromDelegate (int msgTag, int dataSize, const void *pData) |
Implement to receive messages sent to the control, see IEditorDelegate:SendControlMsgFromDelegate() More... | |
virtual void | OnMidi (const IMidiMsg &msg) |
Implement to receive MIDI messages sent to the control if mWantsMidi == true, see IEditorDelegate:SendMidiMsgFromDelegate() More... | |
virtual bool | OnGesture (const IGestureInfo &info) |
virtual void | CreateContextMenu (IPopupMenu &contextMenu) |
Called by default when the user right clicks a control. More... | |
virtual void | OnPopupMenuSelection (IPopupMenu *pSelectedMenu, int valIdx) |
Implement this method to handle popup menu selection after IGraphics::CreatePopupMenu/IControlPromptUserInput. More... | |
virtual void | OnDeleteFromPopupMenu (IPopupMenu *pMenu, int itemIdx) |
Implement this method to handle popup menu deletion interactions (on IOS) after IGraphics::CreatePopupMenu/IControlPromptUserInput. More... | |
virtual void | OnTextEntryCompletion (const char *str, int valIdx) |
Implement this method to handle text input after IGraphics::CreateTextEntry/IControlPromptUserInput. More... | |
virtual void | OnContextSelection (int itemSelected) |
Implement this to respond to a menu selection from CreateContextMenu();. More... | |
virtual void | Draw (IGraphics &g)=0 |
Draw the control to the graphics context. More... | |
virtual void | DrawPTHighlight (IGraphics &g) |
Implement this to customise how a colored highlight is drawn on the control in ProTools (AAX format only), when a control is linked to a parameter that is automated. More... | |
void | PromptUserInput (int valIdx=0) |
Call this method in response to a mouse event to create an edit box so the user can enter a value, or pop up a pop-up menu, if the control is linked to a parameter (mParamIdx > kNoParameter) More... | |
void | PromptUserInput (const IRECT &bounds, int valIdx=0) |
Create a text entry box so the user can enter a value, or pop up a pop-up menu, if the control is linked to a parameter (mParamIdx > kNoParameter) specifying the bounds. More... | |
IControl * | SetActionFunction (IActionFunction actionFunc) |
Set an Action Function for this control. More... | |
IControl * | SetAnimationEndActionFunction (IActionFunction actionFunc) |
Set an Action Function to be called at the end of an animation. More... | |
IControl * | SetTooltip (const char *str) |
Set a tooltip for the control. More... | |
const char * | GetTooltip () const |
int | GetParamIdx (int valIdx=0) const |
Get the index of a parameter that the control is linked to Normaly controls are either linked to a single parameter or no parameter but some may be linked to multiple parameters. More... | |
virtual void | SetParamIdx (int paramIdx, int valIdx=0) |
Set the index of a parameter that the control is linked to If you are calling this "manually" to reuse a control for multiple parameters, you probably want to call IEditorDelegate::SendCurrentParamValuesFromDelegate() afterward, to update the control values. More... | |
int | LinkedToParam (int paramIdx) const |
Check if the control is linked to a particular parameter. More... | |
int | NVals () const |
virtual int | GetValIdxForPos (float x, float y) const |
Check to see which of the control's values relates to this x and y coordinate. More... | |
const IParam * | GetParam (int valIdx=0) const |
Get a const pointer to the IParam object (owned by the editor delegate class), associated with this control. More... | |
virtual void | SetValueFromDelegate (double value, int valIdx=0) |
Set the control's value from the delegate This method is called from the class implementing the IEditorDelegate interface in order to update a control's value members and set it to be marked dirty for redraw. More... | |
virtual void | SetValueFromUserInput (double value, int valIdx=0) |
Set the control's value after user input. More... | |
virtual void | SetValueToDefault (int valIdx=kNoValIdx) |
Set one or all of the control's values to the default value of the associated parameter. More... | |
virtual void | SetValue (double value, int valIdx=0) |
Set one of the control's values. More... | |
double | GetValue (int valIdx=0) const |
Get the control's value. More... | |
void | SetGroup (const char *groupName) |
Assign the control to a control group. More... | |
const char * | GetGroup () const |
Get the group that the control belongs to, if any. More... | |
const IText & | GetText () const |
Get the Text object for the control. More... | |
virtual void | SetText (const IText &txt) |
Set the Text object typically used to determine font/layout/size etc of the main text in a control. More... | |
void | SetBlend (const IBlend &blend) |
Set the Blend for this control. More... | |
IBlend | GetBlend () const |
Get the Blend for this control. More... | |
int | GetTextEntryLength () const |
Get the max number of characters that are allowed in text entry. More... | |
void | SetTextEntryLength (int len) |
Set the max number of characters that are allowed in text entry. More... | |
const IRECT & | GetRECT () const |
Get the rectangular draw area for this control, within the graphics context. More... | |
void | SetRECT (const IRECT &bounds) |
Set the rectangular draw area for this control, within the graphics context. More... | |
const IRECT & | GetTargetRECT () const |
Get the rectangular mouse tracking target area, within the graphics context for this control. More... | |
void | SetTargetRECT (const IRECT &bounds) |
Set the rectangular mouse tracking target area, within the graphics context for this control. More... | |
void | SetTargetAndDrawRECTs (const IRECT &bounds) |
Set BOTH the draw rect and the target area, within the graphics context for this control. More... | |
virtual void | SetPosition (float x, float y) |
Set the position of the control, preserving the width and height. More... | |
virtual void | SetSize (float w, float h) |
Set the size of the control, preserving the current position. More... | |
void | SetPTParameterHighlight (bool isHighlighted, int color) |
Used internally by the AAX wrapper view interface to set the control parmeter highlight. More... | |
bool | GetMouseDblAsSingleClick () const |
Get double click as single click By default, mouse double click has its own handler. More... | |
virtual void | Hide (bool hide) |
Shows or hides the IControl. More... | |
bool | IsHidden () const |
virtual void | SetDisabled (bool disable) |
Sets disabled mode for the control, the default implementation modifies the mBlend member. More... | |
bool | IsDisabled () const |
void | SetMouseOverWhenDisabled (bool allow) |
Specify whether the control should respond to mouse overs when disabled. More... | |
void | SetMouseEventsWhenDisabled (bool allow) |
Specify whether the control should respond to other mouse events when disabled. More... | |
bool | GetMouseOverWhenDisabled () const |
bool | GetMouseEventsWhenDisabled () const |
bool | GetIgnoreMouse () const |
virtual void | SetIgnoreMouse (bool ignore) |
Specify whether the control should respond to mouse events. More... | |
bool | GetPromptShowsParamLabel () const |
void | SetPromptShowsParamLabel (bool enable) |
Set if the control should show parameter labels/units e.g. More... | |
virtual bool | IsHit (float x, float y) const |
Hit test the control. More... | |
virtual void | SetDirty (bool triggerAction=true, int valIdx=kNoValIdx) |
Mark the control as dirty, i.e. More... | |
virtual void | SetClean () |
void | Animate () |
virtual bool | IsDirty () |
Called at each display refresh by the IGraphics draw loop, after IControl::Animate(), to determine if the control is marked as dirty. More... | |
void | DisablePrompt (bool disable) |
Disable/enable default prompt for user input. More... | |
virtual void | OnGUIIdle () |
This is an idle timer tick call on the GUI thread, only active if USE_IDLE_CALLS is defined. More... | |
int | GetTag () const |
Get the control's tag. More... | |
void | SetWantsMidi (bool enable=true) |
Specify whether this control wants to know about MIDI messages sent to the UI. More... | |
bool | GetWantsMidi () const |
void | SetWantsMultiTouch (bool enable=true) |
Specify whether this control supports multiple touches. More... | |
bool | GetWantsMultiTouch () const |
IControl * | AttachGestureRecognizer (EGestureType type, IGestureFunc func) |
Add a IGestureFunc that should be triggered in response to a certain type of gesture. More... | |
virtual bool | GetWantsGestures () const |
EGestureType | GetLastGesture () const |
IGEditorDelegate * | GetDelegate () |
Gets a pointer to the class implementing the IEditorDelegate interface that handles parameter changes from this IGraphics instance. More... | |
void | SetDelegate (IGEditorDelegate &dlg) |
Used internally to set the mDelegate (and mGraphics) variables. More... | |
IContainerBase * | GetParent () const |
void | SetParent (IContainerBase *pParent) |
IGraphics * | GetUI () |
const IGraphics * | GetUI () const |
bool | GetMouseIsOver () const |
This can be used in IControl::Draw() to check if the mouse is over the control, without implementing mouse over methods. More... | |
virtual void | SnapToMouse (float x, float y, EDirection direction, const IRECT &bounds, int valIdx=-1, double minClip=0., double maxClip=1.) |
Set control value based on x, y position within a rectangle. More... | |
virtual void | OnEndAnimation () |
void | StartAnimation (int duration) |
void | SetAnimation (IAnimationFunction func) |
Set the animation function. More... | |
void | SetAnimation (IAnimationFunction func, int duration) |
Set the animation function and starts it. More... | |
IAnimationFunction | GetAnimationFunction () |
Get the control's animation function, if it exists. More... | |
IActionFunction | GetActionFunction () |
Get the control's action function, if it exists. More... | |
double | GetAnimationProgress () const |
Get the progress in a control's animation, in the range 0-1. More... | |
Milliseconds | GetAnimationDuration () const |
Get the duration of animations applied to the control. More... | |
template<class T > | |
T * | As () |
Helper function to dynamic cast an IControl to a subclass. More... | |
Protected Attributes | |
bool | mHideCursorOnDrag = true |
EDirection | mDirection |
IRECT | mTrackBounds |
float | mHandleSize |
double | mGearing |
bool | mMouseDown = false |
double | mMouseDragValue |
![]() | |
IRECT | mRECT |
IRECT | mTargetRECT |
WDL_String | mGroup |
Controls can be grouped for hiding and showing panels. More... | |
IText | mText |
IBlend | mBlend |
int | mTextEntryLength = DEFAULT_TEXT_ENTRY_LEN |
bool | mDirty = true |
bool | mHide = false |
bool | mDisabled = false |
bool | mDisablePrompt = true |
bool | mDblAsSingleClick = false |
bool | mMouseOverWhenDisabled = false |
bool | mMouseEventsWhenDisabled = false |
bool | mIgnoreMouse = false |
bool | mWantsMidi = false |
bool | mWantsMultiTouch = false |
bool | mPromptShowsParamLabel = false |
bool | mMouseIsOver = false |
if mGraphics::mHandleMouseOver = true, this will be true when the mouse is over control. More... | |
WDL_String | mTooltip |
IColor | mPTHighlightColor = COLOR_RED |
bool | mPTisHighlighted = false |
Additional Inherited Members | |
![]() | |
template<typename T , typename... Args> | |
void | ForValIdx (int valIdx, T func, Args... args) |
A helper template function to call a method for an individual value, or for all values. More... | |
void | SetNVals (int nVals) |
A base class for slider/fader controls, to handle mouse action and Sender.
Definition at line 1402 of file IControl.h.
ISliderControlBase::ISliderControlBase | ( | const IRECT & | bounds, |
int | paramIdx = kNoParameter , |
||
EDirection | dir = EDirection::Vertical , |
||
double | gearing = DEFAULT_GEARING , |
||
float | handleSize = 0.f |
||
) |
Definition at line 883 of file IControl.cpp.
ISliderControlBase::ISliderControlBase | ( | const IRECT & | bounds, |
IActionFunction | aF = nullptr , |
||
EDirection | dir = EDirection::Vertical , |
||
double | gearing = DEFAULT_GEARING , |
||
float | handleSize = 0.f |
||
) |
Definition at line 891 of file IControl.cpp.
bool ISliderControlBase::IsFineControl | ( | const IMouseMod & | mod, |
bool | wheel | ||
) | const |
Definition at line 1005 of file IControl.cpp.
|
overridevirtual |
Implement this method to respond to a mouse down event on this control.
x | The X coordinate of the mouse event |
y | The Y coordinate of the mouse event |
mod | A struct indicating which modifier keys are held for the event |
Reimplemented from IControl.
Definition at line 906 of file IControl.cpp.
References IControl::GetParam(), IControl::GetUI(), IControl::GetValue(), IGraphics::HideMouseCursor(), IControl::OnMouseDown(), and IControl::SnapToMouse().
Referenced by IVSliderControl::OnMouseDown(), and IWheelControl::OnMouseDown().
|
overridevirtual |
Implement this method to respond to a mouse drag event on this control.
x | The X coordinate of the mouse event |
y | The Y coordinate of the mouse event |
dX | The X delta (difference) since the last event |
dY | The Y delta (difference) since the last event |
mod | A struct indicating which modifier keys are held for the event |
Reimplemented from IControl.
Definition at line 935 of file IControl.cpp.
References Clip(), IParam::ConstrainNormalized(), IControl::GetParam(), IParam::GetStep(), IParam::GetStepped(), IControl::SetDirty(), IControl::SetValue(), and IControl::SnapToMouse().
|
overridevirtual |
Implement this method to respond to a mouse up event on this control.
x | The X coordinate of the mouse event |
y | The Y coordinate of the mouse event |
mod | A struct indicating which modifier keys are held for the event |
Reimplemented from IControl.
Definition at line 926 of file IControl.cpp.
References IControl::GetUI(), IGraphics::HideMouseCursor(), and IControl::SetDirty().
Referenced by IVSliderControl::OnMouseUp(), and IWheelControl::OnMouseUp().
|
overridevirtual |
Implement this method to respond to a mouse wheel event on this control.
x | The X coordinate of the mouse event |
y | The Y coordinate of the mouse event |
mod | A struct indicating which modifier keys are held for the event |
d | The delta value (difference) since the last mouse wheel event |
Reimplemented from IControl.
Definition at line 975 of file IControl.cpp.
References IParam::FromNormalized(), IControl::GetParam(), IParam::GetStep(), IParam::GetStepped(), IControl::GetValue(), IControl::SetDirty(), IControl::SetValue(), and IParam::ToNormalized().
|
overridevirtual |
Called when IControl is constructed or resized using SetRect().
NOTE: if you call SetDirty() in this method, you should call SetDirty(false) to avoid triggering parameter changes
Reimplemented from IControl.
Definition at line 899 of file IControl.cpp.
References IControl::SetDirty(), and IControl::SetTargetRECT().
|
inline |
Definition at line 1414 of file IControl.h.
|
protected |
Definition at line 1419 of file IControl.h.
|
protected |
Definition at line 1422 of file IControl.h.
|
protected |
Definition at line 1421 of file IControl.h.
|
protected |
Definition at line 1418 of file IControl.h.
|
protected |
Definition at line 1423 of file IControl.h.
|
protected |
Definition at line 1424 of file IControl.h.
|
protected |
Definition at line 1420 of file IControl.h.