16using namespace igraphics;
18IGEditorDelegate::IGEditorDelegate(
int nParams)
23IGEditorDelegate::~IGEditorDelegate()
32 if (mLastWidth && mLastHeight && mLastScale)
33 GetUI()->
Resize(mLastWidth, mLastHeight, mLastScale);
37 return mGraphics->OpenWindow(pParent);
51 mLastWidth = mGraphics->Width();
52 mLastHeight = mGraphics->Height();
53 mLastScale = mGraphics->GetDrawScale();
54 mGraphics->CloseWindow();
64 if (
auto* pGraphics =
GetUI())
66 const auto scale = pGraphics->GetPlatformWindowScale();
67 pGraphics->Resize(
static_cast<int>(width / scale),
static_cast<int>(height / scale), 1.0f,
false);
74 mGraphics->SetScreenScale(scale);
82 IControl* pControl = mGraphics->GetControlWithTag(ctrlTag);
97 IControl* pControl = mGraphics->GetControlWithTag(ctrlTag);
114 for (
int c = 0; c < mGraphics->NControls(); c++)
116 IControl* pControl = mGraphics->GetControl(c);
118 int nVals = pControl->
NVals();
120 for(
int v = 0; v < nVals; v++)
139 for (
auto c = 0; c < mGraphics->NControls(); c++)
141 IControl* pControl = mGraphics->GetControl(c);
157 int width = mGraphics ? mGraphics->Width() : mLastWidth;
158 int height = mGraphics ? mGraphics->Height() : mLastHeight;
159 float scale = mGraphics ? mGraphics->GetDrawScale() : mLastScale;
161 savedOK &= (data.
Put(&width) > 0);
162 savedOK &= (data.
Put(&height) > 0);
163 savedOK &= (data.
Put(&scale) > 0);
174 startPos = data.
Get(&width, startPos);
175 startPos = data.
Get(&height, startPos);
176 startPos = data.
Get(&scale, startPos);
180 if (width && height && scale)
186 mLastHeight = height;
225 return pGraphics->
OnKeyUp(x, y, key);
This file contains the base IControl implementation, along with some base classes for specific types ...
Manages a block of memory, for plug-in settings store/recall.
int Put(const T *pVal)
Copies arbitary typed data into the IByteChunk.
int Get(T *pDst, int startPos) const
Get arbitary typed data from the IByteChunk.
The lowest level base class of an IGraphics control.
bool GetWantsMidi() const
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...
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...
virtual void OnMsgFromDelegate(int msgTag, int dataSize, const void *pData)
Implement to receive messages sent to the control, see IEditorDelegate:SendControlMsgFromDelegate()
virtual void OnMidi(const IMidiMsg &msg)
Implement to receive MIDI messages sent to the control if mWantsMidi == true, see IEditorDelegate:Sen...
This pure virtual interface delegates communication in both directions between a UI editor and someth...
IParam * GetParam(int paramIdx)
Get a pointer to one of the delegate's IParam objects.
virtual void CloseWindow()
If you are not using IGraphics you can if you need to free resources etc when the window closes.
virtual void SendParameterValueFromDelegate(int paramIdx, double value, bool normalized)
SendParameterValueFromDelegate (Abbreviation: SPVFD) WARNING: should not be called on the realtime au...
virtual void SendMidiMsgFromDelegate(const IMidiMsg &msg)
SendMidiMsgFromDelegate (Abbreviation: SMMFD) WARNING: should not be called on the realtime audio thr...
bool SerializeEditorSize(IByteChunk &data) const
Serializes the size and scale of the IGraphics.
void * OpenWindow(void *pHandle) final
If you are not using IGraphics, you can implement this method to attach to the native parent view e....
int UnserializeEditorSize(const IByteChunk &chunk, int startPos)
Unserializes the size and scale of the IGraphics.
void SetScreenScale(float scale) final
Can be used by a host API to inform the editor of screen scale changes.
bool OnKeyDown(const IKeyPress &key) override
KeyDown handler, in order to get keystrokes from certain hosts/plugin formats that send key press mes...
bool SerializeEditorState(IByteChunk &chunk) const override
Serializes the editor state (such as scale) into a binary chunk.
void SendControlValueFromDelegate(int ctrlTag, double normalizedValue) override
SendControlValueFromDelegate (Abbreviation: SCVFD) WARNING: should not be called on the realtime audi...
void SendMidiMsgFromDelegate(const IMidiMsg &msg) override
SendMidiMsgFromDelegate (Abbreviation: SMMFD) WARNING: should not be called on the realtime audio thr...
void OnParentWindowResize(int width, int height) override
Called by app wrappers when the OS window scaling buttons/resizers are used.
int UnserializeEditorState(const IByteChunk &chunk, int startPos) override
Unserializes editor state (such as scale).
void SendControlMsgFromDelegate(int ctrlTag, int msgTag, int dataSize=0, const void *pData=nullptr) override
SendControlMsgFromDelegate (Abbreviation: SCMFD) WARNING: should not be called on the realtime audio ...
bool OnKeyUp(const IKeyPress &key) override
KeyDown handler, in order to get keystrokes from certain hosts/plugin formats that send key press mes...
IGraphics * GetUI()
Get a pointer to the IGraphics context.
virtual IGraphics * CreateGraphics()
Called to create the IGraphics instance for this editor.
void CloseWindow() final
If you are not using IGraphics you can if you need to free resources etc when the window closes.
void SendParameterValueFromDelegate(int paramIdx, double value, bool normalized) override
SendParameterValueFromDelegate (Abbreviation: SPVFD) WARNING: should not be called on the realtime au...
The lowest level base class of an IGraphics context.
void Resize(int w, int h, float scale, bool needsPlatformResize=true)
bool OnKeyDown(float x, float y, const IKeyPress &key)
bool OnKeyUp(float x, float y, const IKeyPress &key)
virtual void GetMouseLocation(float &x, float &y) const =0
Get the x, y position of the mouse cursor.
double ToNormalized(double nonNormalizedValue) const
Convert a real value to normalized value for this parameter.
Used for key press info, such as ASCII representation, virtual key (mapped to win32 codes) and modifi...
Encapsulates a MIDI message and provides helper functions.