21 BEGIN_IGRAPHICS_NAMESPACE
30 IVNumberBoxControl(
const IRECT& bounds,
int paramIdx = kNoParameter, IActionFunction actionFunc =
nullptr,
const char* label =
"",
const IVStyle& style = DEFAULT_STYLE,
double defaultValue = 50.f,
double minValue = 1.f,
double maxValue = 100.f,
const char* fmtStr =
"%0.0f")
31 :
IControl(bounds, paramIdx, actionFunc)
33 .WithValueText(style.valueText.WithVAlign(EVAlign::Middle)))
37 , mRealValue(defaultValue)
39 assert(defaultValue >= minValue && defaultValue <= maxValue);
66 if(mIncButton && mDecButton)
68 IRECT sections = mWidgetBounds;
70 sections.
Pad(-1.f, 1.f, 0.f, 1.f);
79 IRECT sections = mWidgetBounds;
82 mTextReadout->
SetStrFmt(32, mFmtStr.Get(), mRealValue);
84 sections.
Pad(-1.f, 1.f, 0.f, 1.f);
91 if (mHideCursorOnDrag)
100 if (mHideCursorOnDrag)
109 double gearing = IsFineControl(mod,
true) ? mSmallIncrement : mLargeIncrement;
110 mRealValue -= (double(dY) * gearing);
122 mRealValue = atof(str);
128 double gearing = IsFineControl(mod,
true) ? mSmallIncrement : mLargeIncrement;
129 double inc = (d > 0.f ? 1. : -1.) * gearing;
139 OnValueChanged(
true);
150 OnValueChanged(
true);
164 bool IsFineControl(
const IMouseMod& mod,
bool wheel)
const 170 return wheel ? mod.C : mod.R;
173 return (mod.C || mod.S);
177 void OnValueChanged(
bool preventAction =
false)
179 mRealValue =
Clip(mRealValue, mMinValue, mMaxValue);
181 mTextReadout->
SetStrFmt(32, mFmtStr.Get(), mRealValue);
189 double GetRealValue()
const {
return mRealValue; }
193 IActionFunction mIncrementFunc = [
this](
IControl* pCaller) { mRealValue += mLargeIncrement; OnValueChanged(); };
194 IActionFunction mDecrementFunc = [
this](
IControl* pCaller) { mRealValue -= mLargeIncrement; OnValueChanged(); };
199 double mLargeIncrement = 1.f;
200 double mSmallIncrement = 0.1f;
203 double mRealValue = 0.f;
204 bool mHideCursorOnDrag =
true;
207 END_IGRAPHICS_NAMESPACE
bool Contains(const IRECT &rhs) const
Returns true if this IRECT completely contains rhs.
The lowest level base class of an IGraphics control.
Used to manage a rectangular area, independent of draw class/platform.
virtual void SetValueFromUserInput(double value, int valIdx=0)
Set the control's value after user input.
IGEditorDelegate * GetDelegate()
Gets a pointer to the class implementing the IEditorDelegate interface that handles parameter changes...
void CreateTextEntry(IControl &control, const IText &text, const IRECT &bounds, const char *str="", int valIdx=0)
Create a text entry box.
Used to manage mouse modifiers i.e.
bool mMouseIsOver
if mGraphics::mHandleMouseOver = true, this will be true when the mouse is over control.
const IParam * GetParam(int valIdx=0) const
Get a const pointer to the IParam object (owned by the editor delegate class), associated with this c...
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 IEdit...
virtual void BeginInformHostOfParamChangeFromUI(int paramIdx)=0
Called by the UI at the beginning of a parameter change gesture, in order to notify the host (via a c...
const char * GetStr() const
void OnMouseUp(float x, float y, const IMouseMod &mod) override
Implement this method to respond to a mouse up event on this control.
IRECT FracRectVertical(float frac, bool fromTop=false) const
Returns a new IRECT with a height that is multiplied by frac.
void SetValueFromUserInput(double value, int valIdx=0) override
Set the control's value after user input.
IControl * SetAnimationEndActionFunction(IActionFunction actionFunc)
Set an Action Function to be called at the end of an animation.
void AttachIControl(IControl *pControl, const char *label)
Call in the constructor of your IVControl to link the IVectorBase and IControl.
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 si...
This file contains the base IControl implementation, along with some base classes for specific types ...
A "meta control" for a number box with an Inc/Dec button It adds several child buttons.
IRECT MakeRects(const IRECT &parent, bool hasHandle=false)
Calculate the rectangles for the various areas, depending on the style.
double GetMin() const
Returns the parameter's minimum value.
void OnAttached() override
Called after the control has been attached, and its delegate and graphics member variable set...
double FromNormalized(double normalizedValue) const
Convert a normalized value to real value for this parameter.
const IRECT & GetRECT() const
Get the rectangular draw area for this control, within the graphics context.
double GetMax() const
Returns the parameter's maximum value.
void SetValueFromDelegate(double value, int valIdx=0) override
Set the control's value from the delegate This method is called from the class implementing the IEdit...
A vector label control that can display text with a shadow.
void Draw(IGraphics &g) override
Draw the control to the graphics context.
const IColor & GetColor(EVColor color) const
Get value of a specific EVColor in the IVControl.
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.
IControl(const IRECT &bounds, int paramIdx=kNoParameter, IActionFunction actionFunc=nullptr)
Constructor.
void OnMouseDown(float x, float y, const IMouseMod &mod) override
Implement this method to respond to a mouse down event on this control.
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.
double GetDefault(bool normalized=false) const
Returns the parameter's default value.
The lowest level base class of an IGraphics context.
IVectorBase(const IVStyle &style, bool labelInWidget=false, bool valueInWidget=false)
IVectorBase Constructor.
virtual void DrawLabel(IGraphics &g)
Draw the IVControl label text.
IRECT ReduceFromLeft(float amount)
Reduce in width from the left edge by 'amount' and return the removed region.
virtual void FillRect(const IColor &color, const IRECT &bounds, const IBlend *pBlend=0)
Fill a rectangular region of the graphics context with a color.
virtual void EndInformHostOfParamChangeFromUI(int paramIdx)=0
Called by the user interface at the end of a parameter change gesture, in order to notify the host (v...
BEGIN_IPLUG_NAMESPACE T Clip(T x, T lo, T hi)
Clips the value x between lo and hi.
void SetTargetAndDrawRECTs(const IRECT &bounds)
Set BOTH the draw rect and the target area, within the graphics context for this control.
virtual void HideMouseCursor(bool hide=true, bool lock=true)=0
Call to hide/show the mouse cursor.
void OnTextEntryCompletion(const char *str, int valIdx) override
Implement this method to handle text input after IGraphics::CreateTextEntry/IControl::PromptUserInput...
void SplashClickActionFunc(IControl *pCaller)
The splash click action function is used by IVControls to start SplashAnimationFunc.
void Pad(float padding)
Pad this IRECT N.B.
double ToNormalized(double nonNormalizedValue) const
Convert a real value to normalized value for this parameter.
void SetTargetRECT(const IRECT &bounds)
Set the rectangular mouse tracking target area, within the graphics context for this control...
void OnMouseDblClick(float x, float y, const IMouseMod &mod) override
Implement this method to respond to a mouse double click event on this control.
virtual void SetStyle(const IVStyle &style)
Set the Style of this IVControl.
IControl * AttachControl(IControl *pControl, int ctrlTag=kNoTag, const char *group="")
Attach an IControl to the graphics context and add it to the top of the control stack.
virtual void SetStrFmt(int maxlen, const char *fmt,...)
Set the text to display, using a printf-like format string.
void OnResize() override
Called when IControl is constructed or resized using SetRect().
virtual void SetValue(double value, int valIdx=0)
Set one of the control's values.
A base interface to be combined with IControl for vectorial controls "IVControls", in order for them to share a common style If you need more flexibility, you're on your own!
void SetStyle(const IVStyle &style) override
Set the Style of this IVControl.
void OnInit() override
Called just prior to when the control is attached, after its delegate and graphics member variable se...
A struct encapsulating a set of properties used to configure IVControls.
virtual void SetDirty(bool triggerAction=true, int valIdx=kNoValIdx)
Mark the control as dirty, i.e.