ASPiK SDK
Steinberg::Vst::Project::PluginEditor Class Reference

The VST GUI for the plugin. This is needed because VST3 requires an IPlugView GUI, which is VST3 specific (involves VST3 SDK files) More...

#include <vst3plugin.h>

Inheritance diagram for Steinberg::Vst::Project::PluginEditor:
VSTGUI::PluginGUI IGUIWindowFrame IGUIView

Public Types

typedef std::map< int32_t, VST3UpdateHandler * > UpdaterHandlerMap
 

Public Member Functions

 PluginEditor (VSTGUI::UTF8StringPtr _xmlFile, PluginCore *_pluginCore, GUIPluginConnector *_guiPluginConnector, PluginHostConnector *_pluginHostConnector, VST3Plugin *editController)
 ASPiK support VST3 GUI - this wraps the ASPiK GUI so that it conforms to the IPlugView interface. More...
 
virtual ~PluginEditor ()
 ASPiK support VST3 GUI - this wraps the ASPiK GUI so that it conforms to the IPlugView interface. More...
 
const ViewRect & getRect () const
 
void setRect (const ViewRect &r)
 
bool isAttached () const
 
virtual void attachedToParent () override
 
virtual void removedFromParent () override
 
virtual tresult PLUGIN_API attached (void *parent, FIDString type) override
 ASPiK support VST3 GUI - this wraps the ASPiK GUI so that it conforms to the IPlugView interface. More...
 
virtual tresult PLUGIN_API removed () override
 ASPiK support VST3 GUI - this wraps the ASPiK GUI so that it conforms to the IPlugView interface. More...
 
virtual tresult PLUGIN_API onWheel (float distance) override
 
virtual tresult PLUGIN_API isPlatformTypeSupported (FIDString type) override
 ASPiK support VST3 GUI - this wraps the ASPiK GUI so that it conforms to the IPlugView interface. More...
 
virtual tresult PLUGIN_API onSize (ViewRect *newSize) override
 ASPiK support VST3 GUI - this wraps the ASPiK GUI so that it conforms to the IPlugView interface. More...
 
virtual tresult PLUGIN_API getSize (ViewRect *size) override
 ASPiK support VST3 GUI - this wraps the ASPiK GUI so that it conforms to the IPlugView interface. More...
 
virtual tresult PLUGIN_API onFocus (TBool) override
 
virtual tresult PLUGIN_API setFrame (IPlugFrame *frame) override
 ASPiK support VST3 GUI - this wraps the ASPiK GUI so that it conforms to the IPlugView interface. More...
 
virtual tresult PLUGIN_API canResize () override
 
virtual tresult PLUGIN_API checkSizeConstraint (ViewRect *rect) override
 
virtual bool setWindowFrameSize (double left=0, double top=0, double right=0, double bottom=0) override
 
virtual bool getWindowFrameSize (double &left, double &top, double &right, double &bottom) override
 
- Public Member Functions inherited from VSTGUI::PluginGUI
 PluginGUI (UTF8StringPtr _xmlFile)
 PluginGUI constructor; note that this maintains both Mac and Windows contexts, the bundle ref for Mac and the external void* for Windows. More...
 
virtual ~PluginGUI ()
 PluginGUI destructor. More...
 
bool open (UTF8StringPtr _viewName, void *parent, const std::vector< PluginParameter *> *pluginParameterPtr, const PlatformType &platformType=kDefaultNative, IGUIPluginConnector *_guiPluginConnector=nullptr, void *data=nullptr)
 creates the GUI control objects, creates outer frame, inserts contents into window More...
 
void close ()
 prepares the GUI control objects for destruction, cleans up More...
 
void syncGUIControl (uint32_t controlID)
 safely sets the GUI control value based on the plugin parameter value More...
 
void getSize (float &width, float &height)
 returns the size into the pass-by-reference variables More...
 
void scaleGUISize (uint32_t controlValue)
 scales the GUI; this is the handler for the special scaling GUI control More...
 
void writeToPresetFile ()
 writes the current state of all GUI controls into a text file so that yuu can simply cut and paste the C++ code into the core object file. More...
 
CMessageResult notify (CBaseObject *sender, IdStringPtr message) override
 incoming VSTGUI4 message handler More...
 
virtual void valueChanged (VSTGUI::CControl *pControl) override
 THE function that all controls pour their control changes into. The result of this function is to push the GUI control change safely into the plugin shell owner. More...
 
virtual int32_t controlModifierClicked (VSTGUI::CControl *pControl, VSTGUI::CButtonState button) override
 return 1 if you want the control to not handle it, otherwise 0 More...
 
virtual void controlBeginEdit (VSTGUI::CControl *pControl) override
 start of control/auomation notification More...
 
virtual void controlEndEdit (VSTGUI::CControl *pControl) override
 end of control/auomation notification More...
 
virtual void controlTagWillChange (VSTGUI::CControl *pControl) override
 called when a control is being removed from the GUI, or when it is being created (step 1) More...
 
virtual void controlTagDidChange (VSTGUI::CControl *pControl) override
 called when a control is being created on the GUI (step 2) More...
 
CView * createUserCustomView (std::string viewname, const CRect rect, IControlListener *listener, int32_t tag)
 add your custom views here; this is where you can create and register the views outside of the createView( ) method below. More...
 
CView * createView (const UIAttributes &attributes, const IUIDescription *description) override
 this is called for every view obeject in the XML file that will be visible to check and see if you want to supply your own object, that you create with the new operator; that object takes the place of the stock GUI object, allowing you to customize the view behavior. This is called the "Custom View" paradigm and along with the sub-controller make VSTGUI4 extremely powerful. More...
 
IController * createSubController (UTF8StringPtr name, const IUIDescription *description) override
 for advanced users: you can create and even register sub-controllers here More...
 
ControlUpdateReceivergetControlUpdateReceiver (int32_t tag) const
 find the receiver for a given tag; there can be only one receiver for any tag More...
 
void onViewAdded (CFrame *frame, CView *view) override
 
void onViewRemoved (CFrame *frame, CView *view) override
 called before GUI control is removed from the view More...
 
void onMouseEntered (CView *view, CFrame *frame) override
 
void onMouseExited (CView *view, CFrame *frame) override
 
CMouseEventResult onMouseDown (CFrame *frame, const CPoint &where, const CButtonState &buttons) override
 message handler for mouse down event More...
 
CMouseEventResult onMouseMoved (CFrame *frame, const CPoint &where, const CButtonState &buttons) override
 message handler for mouse move event More...
 
int32_t onKeyDown (const VstKeyCode &code, CFrame *frame) override
 
int32_t onKeyUp (const VstKeyCode &code, CFrame *frame) override
 
virtual void setGUIWindowFrame (IGUIWindowFrame *frame) override
 set the interface pointer for resizing from the GUI More...
 
bool hasWriteableControl (CControl *control)
 check to see if we already store this meter control More...
 
void checkAddWriteableControl (PluginParameter *piParam, CControl *control)
 check to see if we already store this meter control and add it if we don't More...
 
void checkRemoveWriteableControl (CControl *control)
 check to see if we already store this meter control and remove it if we do More...
 
void deleteControlUpdateReceivers ()
 delete all reciever objects
 
void forgetWriteableControls ()
 forget all writeable (neter) controls
 
bool hasICustomView (CView *view)
 simple helper function to test view for ICustomView More...
 
bool hasICustomView (IController *subController)
 simple helper function to test sub-controller for ICustomView More...
 
- Public Member Functions inherited from IGUIWindowFrame
virtual void enableGUIDesigner (bool enable)
 

Public Attributes

UpdaterHandlerMap updateHandlers
 
IPlugFrame * plugFrame
 

Protected Attributes

PluginCorepluginCore = nullptr
 the core
 
GUIPluginConnectorguiPluginConnector = nullptr
 GUI Plugin interface.
 
PluginHostConnectorpluginHostConnector = nullptr
 Plugin Host interface.
 
VST3PlugineditController = nullptr
 parent VST3
 
- Protected Attributes inherited from VSTGUI::PluginGUI
IGUIPluginConnectorguiPluginConnector = nullptr
 the plugin shell interface that arrives with the open( ) function; OK if NULL for standalone GUIs
 
UIDescription * description = nullptr
 the description version of the XML file
 
std::string viewName
 name
 
std::string xmlFile
 the XML file name
 
uint32_t numUIControls = 0
 control counter
 
double zoomFactor = 1.0
 scaling factor for built-in scaling
 
CVSTGUITimer * timer
 timer object (this is platform dependent)
 
CPoint minSize
 the min size of the GUI window
 
CPoint maxSize
 the max size of the GUI window
 
CRect nonEditRect
 non-edit area for GUI designer
 
bool showGUIEditor = false
 show the GUI designer
 
bool createNewView = true
 show the normal GUI
 
double guiDesignerWidth
 GUI Designer's frame size.
 
double guiDesignerHeight
 GUI Designer's frame size.
 
float guiWidth
 embedded GUI size
 
float guiHeight
 embedded GUI size
 
IGUIWindowFrameguiWindowFrame = nullptr
 interface to allow plugin shell to resize our window
 
CFrame * guiEditorFrame = nullptr
 pointer to our frame
 
uint32_t knobAction = kLinearMode
 knob mode
 

Additional Inherited Members

- Static Public Member Functions inherited from VSTGUI::PluginGUI
static bool parseSize (const std::string &str, CPoint &point)
 simple helper function to get size from string More...
 
- Protected Member Functions inherited from VSTGUI::PluginGUI
virtual void idle ()
 perform idling operation; called directly from timer thread More...
 
void preCreateGUI ()
 one-time pre-create init, currently used for AU only More...
 
bool createGUI (bool bShowGUIEditor)
 creates either the GUI or the GUI Designer More...
 
void save (bool saveAs=false)
 save GUI state in XML file More...
 
virtual int32_t getKnobMode () const override
 returns mode More...
 
void deleteGUIControlList ()
 
PluginParametergetGuiControlWithTag (int tag)
 find the local PluginParameter that is connected to the same control ID More...
 
std::string getGUIDesignerSize ()
 get size string More...
 
int getControlID_WithMouseCoords (const CPoint &where)
 control finder, for AAX only, part of Pro Tools automation keyboard shortcut More...
 
CControl * getControl_WithMouseCoords (const CPoint &where)
 control finder, for AAX only, part of Pro Tools automation keyboard shortcut More...
 
CMouseEventResult sendAAXMouseDown (int controlID, const CButtonState &buttons)
 mouse down handler for Pro Tools keyboard shortcuts More...
 
CMouseEventResult sendAAXMouseMoved (int controlID, const CButtonState &buttons, const CPoint &where)
 mouse moved handler for Pro Tools keyboard shortcuts More...
 
CMouseEventResult sendAUMouseDown (CControl *control, const CButtonState &buttons)
 mouse down handler for AU automation More...
 
CMouseEventResult sendAUMouseMoved (CControl *control, const CButtonState &buttons, const CPoint &where)
 
void setPluginParameterFromGUIControl (CControl *control, int tag, float actualValue, float normalizedValue)
 safely set a plugin shell parameter with a GUI control More...
 

Detailed Description

The VST GUI for the plugin. This is needed because VST3 requires an IPlugView GUI, which is VST3 specific (involves VST3 SDK files)

Author
Will Pirkle http://www.willpirkle.com
Remarks
This object is included in Designing Audio Effects Plugins in C++ 2nd Ed. by Will Pirkle
Version
Revision : 1.0
Date
Date : 2018 / 09 / 7

Constructor & Destructor Documentation

◆ PluginEditor()

Steinberg::Vst::Project::PluginEditor::PluginEditor ( VSTGUI::UTF8StringPtr  _xmlFile,
PluginCore _pluginCore,
GUIPluginConnector _guiPluginConnector,
PluginHostConnector _pluginHostConnector,
VST3Plugin _editController 
)

ASPiK support VST3 GUI - this wraps the ASPiK GUI so that it conforms to the IPlugView interface.

NOTES:

  • see Designing Audio Effects in C++ 2nd Ed. by Will Pirkle for more information and a VST3 Programming Guide
  • see VST3 SDK Documentation for more information on this function and its parameters

◆ ~PluginEditor()

Steinberg::Vst::Project::PluginEditor::~PluginEditor ( )
virtual

ASPiK support VST3 GUI - this wraps the ASPiK GUI so that it conforms to the IPlugView interface.

NOTES:

  • see Designing Audio Effects in C++ 2nd Ed. by Will Pirkle for more information and a VST3 Programming Guide
  • see VST3 SDK Documentation for more information on this function and its parameters

Member Function Documentation

◆ attached()

tresult PLUGIN_API Steinberg::Vst::Project::PluginEditor::attached ( void *  parent,
FIDString  type 
)
overridevirtual

ASPiK support VST3 GUI - this wraps the ASPiK GUI so that it conforms to the IPlugView interface.

NOTES:

  • see Designing Audio Effects in C++ 2nd Ed. by Will Pirkle for more information and a VST3 Programming Guide
  • see VST3 SDK Documentation for more information on this function and its parameters

◆ getSize()

tresult PLUGIN_API Steinberg::Vst::Project::PluginEditor::getSize ( ViewRect *  size)
overridevirtual

ASPiK support VST3 GUI - this wraps the ASPiK GUI so that it conforms to the IPlugView interface.

NOTES:

  • see Designing Audio Effects in C++ 2nd Ed. by Will Pirkle for more information and a VST3 Programming Guide
  • see VST3 SDK Documentation for more information on this function and its parameters

◆ getWindowFrameSize()

virtual bool Steinberg::Vst::Project::PluginEditor::getWindowFrameSize ( double &  left,
double &  top,
double &  right,
double &  bottom 
)
inlineoverridevirtual

get the frame size

Implements IGUIWindowFrame.

◆ isPlatformTypeSupported()

tresult PLUGIN_API Steinberg::Vst::Project::PluginEditor::isPlatformTypeSupported ( FIDString  type)
overridevirtual

ASPiK support VST3 GUI - this wraps the ASPiK GUI so that it conforms to the IPlugView interface.

NOTES:

  • see Designing Audio Effects in C++ 2nd Ed. by Will Pirkle for more information and a VST3 Programming Guide
  • see VST3 SDK Documentation for more information on this function and its parameters

◆ onSize()

tresult PLUGIN_API Steinberg::Vst::Project::PluginEditor::onSize ( ViewRect *  newSize)
overridevirtual

ASPiK support VST3 GUI - this wraps the ASPiK GUI so that it conforms to the IPlugView interface.

NOTES:

  • see Designing Audio Effects in C++ 2nd Ed. by Will Pirkle for more information and a VST3 Programming Guide
  • see VST3 SDK Documentation for more information on this function and its parameters

◆ removed()

tresult PLUGIN_API Steinberg::Vst::Project::PluginEditor::removed ( )
overridevirtual

ASPiK support VST3 GUI - this wraps the ASPiK GUI so that it conforms to the IPlugView interface.

NOTES:

  • see Designing Audio Effects in C++ 2nd Ed. by Will Pirkle for more information and a VST3 Programming Guide
  • see VST3 SDK Documentation for more information on this function and its parameters

◆ setFrame()

tresult PLUGIN_API Steinberg::Vst::Project::PluginEditor::setFrame ( IPlugFrame *  frame)
overridevirtual

ASPiK support VST3 GUI - this wraps the ASPiK GUI so that it conforms to the IPlugView interface.

NOTES:

  • see Designing Audio Effects in C++ 2nd Ed. by Will Pirkle for more information and a VST3 Programming Guide
  • see VST3 SDK Documentation for more information on this function and its parameters

◆ setWindowFrameSize()

virtual bool Steinberg::Vst::Project::PluginEditor::setWindowFrameSize ( double  left = 0,
double  top = 0,
double  right = 0,
double  bottom = 0 
)
inlineoverridevirtual

set the frame size

Implements IGUIWindowFrame.


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