VSTGUI 4.5 Graphical User Interface Framework not only for VST plugins

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes

- Class List
- Class Index
- Class Hierarchy
- Class Members

All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Classes | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
VST3Editor Class Reference
Version 4.0

VST3 Editor with automatic parameter binding. More...

Inheritance diagram for VST3Editor:

## Classes
struct | KeyboardHook

## Public Member Functions
| VST3Editor (Steinberg::Vst::EditController *controller, UTF8StringPtr templateName, UTF8StringPtr xmlFile)
| VST3Editor (UIDescription *desc, Steinberg::Vst::EditController *controller, UTF8StringPtr templateName, UTF8StringPtr xmlFile=0)
bool | exchangeView (UTF8StringPtr templateName)
void | enableTooltips (bool state)
bool | setEditorSizeConstrains (const CPoint &newMinimumSize, const CPoint &newMaximumSize)
void | getEditorSizeConstrains (CPoint &minimumSize, CPoint &maximumSize) const
bool | requestResize (const CPoint &newSize)
void | setZoomFactor (double factor)
double | getZoomFactor () const
void | setAllowedZoomFactors (std::vector< double > zoomFactors)
Steinberg::tresult PLUGIN_API | queryInterface (const ::Steinberg::TUID iid, void **obj) override
Public Member Functions inherited from IController
virtual int32_t | getTagForName (UTF8StringPtr name, int32_t registeredTag) const
virtual IControlListener * | getControlListener (UTF8StringPtr controlTagName)
Public Member Functions inherited from IControlListener
virtual | ~IControlListener () noexcept=default
virtual int32_t | controlModifierClicked (CControl *pControl, CButtonState button)
| return 1 if you want the control to not handle it, otherwise 0 More...
Public Member Functions inherited from IViewAddedRemovedObserver
virtual | ~IViewAddedRemovedObserver () noexcept=default
Public Member Functions inherited from IMouseObserver
virtual | ~IMouseObserver () noexcept=default

## Protected Types
typedef std::map< int32_t, ParameterChangeListener * > | ParameterChangeListenerMap

## Protected Member Functions
| ~VST3Editor ()
void | init ()
double | getAbsScaleFactor () const
ParameterChangeListener * | getParameterChangeListener (int32_t tag) const
void | recreateView ()
void | syncParameterTags ()
void | save (bool saveAs=false)
bool | enableEditing (bool state)
bool PLUGIN_API | open (void *parent, const PlatformType &type) override
void PLUGIN_API | close () override
void | beginEdit (int32_t index) override
void | endEdit (int32_t index) override
CView * | createView (const UIAttributes &attributes, const IUIDescription *description) override
CView * | verifyView (CView *view, const UIAttributes &attributes, const IUIDescription *description) override
IController * | createSubController (UTF8StringPtr name, const IUIDescription *description) override
CMessageResult | notify (CBaseObject *sender, IdStringPtr message) override
bool | beforeSizeChange (const CRect &newSize, const CRect &oldSize) override
Steinberg::tresult PLUGIN_API | onSize (Steinberg::ViewRect *newSize) override
Steinberg::tresult PLUGIN_API | canResize () override
Steinberg::tresult PLUGIN_API | checkSizeConstraint (Steinberg::ViewRect *rect) override
Steinberg::tresult PLUGIN_API | findParameter (Steinberg::int32 xPos, Steinberg::int32 yPos, Steinberg::Vst::ParamID &resultTag) override
virtual void | valueChanged (CControl *pControl) override
virtual void | controlBeginEdit (CControl *pControl) override
virtual void | controlEndEdit (CControl *pControl) override
virtual void | controlTagWillChange (CControl *pControl) override
virtual void | controlTagDidChange (CControl *pControl) override
void | onViewAdded (CFrame *frame, CView *view) override
void | onViewRemoved (CFrame *frame, CView *view) override
void | onMouseEntered (CView *view, CFrame *frame) override
void | onMouseExited (CView *view, CFrame *frame) override
CMouseEventResult | onMouseMoved (CFrame *frame, const CPoint &where, const CButtonState &buttons) override
| a mouse move event happend on the frame at position where. More...
CMouseEventResult | onMouseDown (CFrame *frame, const CPoint &where, const CButtonState &buttons) override
| a mouse down event happend on the frame at position where. More...

## Protected Attributes
KeyboardHook * | keyboardHook {nullptr}
UIDescription * | description {nullptr}
VST3EditorDelegate * | delegate {nullptr}
IController * | originalController {nullptr}
ParameterChangeListenerMap | paramChangeListeners
std::string | viewName
std::string | xmlFile
bool | tooltipsEnabled {true}
bool | doCreateView {false}
bool | editingEnabled {false}
bool | requestResizeGuard {false}
double | contentScaleFactor {1.}
double | zoomFactor {1.}
std::vector< double > | allowedZoomFactors
CPoint | minSize
CPoint | maxSize
CRect | nonEditRect

## Detailed Description

VST3 Editor with automatic parameter binding.

The VST3Editor class represents the view for a VST3 plug-in. It automatically binds the VST3 parameters to VSTGUI control tags and it includes an inline UI editor for rapid development.

# Setup

Add the following code to your Steinberg::Vst::EditController class:

IPlugView* PLUGIN_API MyEditController::createView (FIDString name)
{
if (strcmp (name, ViewType::kEditor) == 0)
{
return new VST3Editor (this, "view", "myEditor.uidesc");
}
return 0;
}

To activate the inline editor you need to define the preprocessor definition "VSTGUI_LIVE_EDITING=1". Rebuild your plug-in, start your prefered host, instanciate your plug-in, open the context menu inside your editor and choose "Enable Editing". Now you can define tags, colors, fonts, bitmaps and add views to your editor.

See Inline UI Editing for VST3 (WYSIWYG)

## Member Typedef Documentation

typedef std::map<int32_t, ParameterChangeListener*> ParameterChangeListenerMap
| protected

## Constructor & Destructor Documentation

VST3Editor | ( | Steinberg::Vst::EditController * | controller,
|  | UTF8StringPtr | templateName,
|  | UTF8StringPtr | xmlFile
| ) |  |

VST3Editor | ( | UIDescription * | desc,
|  | Steinberg::Vst::EditController * | controller,
|  | UTF8StringPtr | templateName,
|  | UTF8StringPtr | xmlFile = `0`
| ) |  |

~VST3Editor | ( |  | ) |
| protected

## Member Function Documentation

bool beforeSizeChange | ( | const CRect & | newSize,
|  | const CRect & | oldSize
| ) |  |
| override protected

void beginEdit | ( | int32_t | index | ) |
| override protected

Steinberg::tresult PLUGIN_API canResize | ( |  | ) |
| override protected

Steinberg::tresult PLUGIN_API checkSizeConstraint | ( | Steinberg::ViewRect * | rect | ) |
| override protected

void PLUGIN_API close | ( |  | ) |
| override protected

void controlBeginEdit | ( | CControl * | pControl | ) |
| override protected virtual

Reimplemented from IControlListener.

void controlEndEdit | ( | CControl * | pControl | ) |
| override protected virtual

Reimplemented from IControlListener.

void controlTagDidChange | ( | CControl * | pControl | ) |
| override protected virtual

Reimplemented from IControlListener.

void controlTagWillChange | ( | CControl * | pControl | ) |
| override protected virtual

Reimplemented from IControlListener.

IController * createSubController | ( | UTF8StringPtr | name,
|  | const IUIDescription * | description
| ) |  |
| override protected virtual

Reimplemented from IController.

CView * createView | ( | const UIAttributes & | attributes,
|  | const IUIDescription * | description
| ) |  |
| override protected virtual

Reimplemented from IController.

bool enableEditing | ( | bool | state | ) |
| protected

void enableTooltips | ( | bool | state | ) |

void endEdit | ( | int32_t | index | ) |
| override protected

bool exchangeView | ( | UTF8StringPtr | templateName | ) |

Steinberg::tresult PLUGIN_API findParameter | ( | Steinberg::int32 | xPos,
|  | Steinberg::int32 | yPos,
|  | Steinberg::Vst::ParamID & | resultTag
| ) |  |
| override protected

double getAbsScaleFactor | ( |  | ) | const
| protected

void getEditorSizeConstrains | ( | CPoint & | minimumSize,
|  | CPoint & | maximumSize
| ) |  | const

ParameterChangeListener * getParameterChangeListener | ( | int32_t | tag | ) | const
| protected

double getZoomFactor | ( |  | ) | const
| inline

void init | ( |  | ) |
| protected

CMessageResult notify | ( | CBaseObject * | sender,
|  | IdStringPtr | message
| ) |  |
| override protected

CMouseEventResult onMouseDown | ( | CFrame * | frame,
|  | const CPoint & | where,
|  | const CButtonState & | buttons
| ) |  |
| override protected virtual

a mouse down event happend on the frame at position where.

If the observer handles this, the event won't be propagated further

Reimplemented from IMouseObserver.

void onMouseEntered | ( | CView * | view,
|  | CFrame * | frame
| ) |  |
| inline override protected virtual

Implements IMouseObserver.

void onMouseExited | ( | CView * | view,
|  | CFrame * | frame
| ) |  |
| inline override protected virtual

Implements IMouseObserver.

CMouseEventResult onMouseMoved | ( | CFrame * | frame,
|  | const CPoint & | where,
|  | const CButtonState & | buttons
| ) |  |
| inline override protected virtual

a mouse move event happend on the frame at position where.

If the observer handles this, the event won't be propagated further

Reimplemented from IMouseObserver.

Steinberg::tresult PLUGIN_API onSize | ( | Steinberg::ViewRect * | newSize | ) |
| override protected

void onViewAdded | ( | CFrame * | frame,
|  | CView * | view
| ) |  |
| override protected virtual

Implements IViewAddedRemovedObserver.

void onViewRemoved | ( | CFrame * | frame,
|  | CView * | view
| ) |  |
| override protected virtual

Implements IViewAddedRemovedObserver.

bool PLUGIN_API open | ( | void * | parent,
|  | const PlatformType & | type
| ) |  |
| override protected

Steinberg::tresult PLUGIN_API queryInterface | ( | const ::Steinberg::TUID | iid,
|  | void ** | obj
| ) |  |
| override

void recreateView | ( |  | ) |
| protected

bool requestResize | ( | const CPoint & | newSize | ) |

void save | ( | bool | saveAs = `false` | ) |
| protected

void setAllowedZoomFactors | ( | std::vector< double > | zoomFactors | ) |
| inline

bool setEditorSizeConstrains | ( | const CPoint & | newMinimumSize,
|  | const CPoint & | newMaximumSize
| ) |  |

void setZoomFactor | ( | double | factor | ) |

void syncParameterTags | ( |  | ) |
| protected

void valueChanged | ( | CControl * | pControl | ) |
| override protected virtual

Implements IControlListener.

CView * verifyView | ( | CView * | view,
|  | const UIAttributes & | attributes,
|  | const IUIDescription * | description
| ) |  |
| override protected virtual

Reimplemented from IController.

## Member Data Documentation

std::vector<double> allowedZoomFactors
| protected

double contentScaleFactor {1.}
| protected

VST3EditorDelegate* delegate {nullptr}
| protected

UIDescription* description {nullptr}
| protected

bool doCreateView {false}
| protected

bool editingEnabled {false}
| protected

KeyboardHook* keyboardHook {nullptr}
| protected

CPoint maxSize
| protected

CPoint minSize
| protected

CRect nonEditRect
| protected

IController* originalController {nullptr}
| protected

ParameterChangeListenerMap paramChangeListeners
| protected

bool requestResizeGuard {false}
| protected

bool tooltipsEnabled {true}
| protected

std::string viewName
| protected

std::string xmlFile
| protected

double zoomFactor {1.}
| protected

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

- vst3editor.h
- vst3editor.cpp