17 #ifndef DISTRHO_UI_HPP_INCLUDED
18 #define DISTRHO_UI_HPP_INCLUDED
20 #include "extra/LeakDetector.hpp"
21 #include "src/DistrhoPluginChecks.h"
27 # include "OpenGL.hpp"
30 # include "Vulkan.hpp"
33 #if DISTRHO_PLUGIN_HAS_EXTERNAL_UI
34 # include "../dgl/Base.hpp"
35 # include "extra/ExternalWindow.hpp"
36 typedef DISTRHO_NAMESPACE::ExternalWindow UIWidget;
37 #elif DISTRHO_UI_USE_CUSTOM
38 # include DISTRHO_UI_CUSTOM_INCLUDE_PATH
40 #elif DISTRHO_UI_USE_CAIRO
41 # include "../dgl/Cairo.hpp"
42 typedef DGL_NAMESPACE::CairoTopLevelWidget UIWidget;
43 #elif DISTRHO_UI_USE_NANOVG
44 # include "../dgl/NanoVG.hpp"
45 typedef DGL_NAMESPACE::NanoTopLevelWidget UIWidget;
47 # include "../dgl/TopLevelWidget.hpp"
48 typedef DGL_NAMESPACE::TopLevelWidget UIWidget;
71 class UI :
public UIWidget
83 UI(uint width = 0, uint height = 0,
bool automaticallyScale =
false);
157 #if DISTRHO_PLUGIN_WANT_STATE
162 void setState(
const char* key,
const char* value);
165 #if DISTRHO_PLUGIN_WANT_STATEFILES
175 bool requestStateFile(
const char* key);
178 #if DISTRHO_PLUGIN_WANT_MIDI_INPUT
183 void sendNote(uint8_t channel, uint8_t note, uint8_t velocity);
186 #if DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
197 #if DISTRHO_PLUGIN_HAS_EXTERNAL_UI
215 # if DISTRHO_PLUGIN_HAS_EMBED_UI
235 #if DISTRHO_PLUGIN_WANT_PROGRAMS
243 #if DISTRHO_PLUGIN_WANT_STATE
248 virtual void stateChanged(
const char* key,
const char* value) = 0;
280 #if !DISTRHO_PLUGIN_HAS_EXTERNAL_UI
287 virtual void uiFocus(
bool focus, DGL_NAMESPACE::CrossingMode mode);
299 virtual void uiReshape(uint width, uint height);
301 # ifndef DGL_FILE_BROWSER_DISABLED
311 virtual void uiFileBrowserSelected(
const char* filename);
313 #endif // !DISTRHO_PLUGIN_HAS_EXTERNAL_UI
318 #if DISTRHO_PLUGIN_HAS_EXTERNAL_UI
324 void sizeChanged(uint width, uint height)
override;
331 void onResize(
const ResizeEvent& ev)
override;
338 PrivateData*
const uiData;
339 friend class DGL_NAMESPACE::PluginWindow;
340 friend class UIExporter;
342 DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(
UI)
367 #endif // DISTRHO_UI_HPP_INCLUDED
static double getNextScaleFactor() noexcept
virtual void stateChanged(const char *key, const char *value)=0
uint getForegroundColor() const noexcept
#define START_NAMESPACE_DISTRHO
Definition: DistrhoInfo.hpp:828
virtual void programLoaded(uint32_t index)=0
uint getBackgroundColor() const noexcept
void setParameterValue(uint32_t index, float value)
bool isResizable() const noexcept
#define END_NAMESPACE_DISTRHO
Definition: DistrhoInfo.hpp:834
Definition: DistrhoUI.hpp:71
void sendNote(uint8_t channel, uint8_t note, uint8_t velocity)
virtual void uiScaleFactorChanged(double scaleFactor)
static const char * getNextBundlePath() noexcept
double getSampleRate() const noexcept
void editParameter(uint32_t index, bool started)
#define DISTRHO_UI_CUSTOM_WIDGET_TYPE
Definition: DistrhoInfo.hpp:619
virtual void sampleRateChanged(double newSampleRate)
const char * getBundlePath() const noexcept
UI(uint width=0, uint height=0, bool automaticallyScale=false)
void * getPluginInstancePointer() const noexcept
virtual void uiIdle()
Definition: DistrhoUI.hpp:269
static uintptr_t getNextWindowId() noexcept
void setState(const char *key, const char *value)
void sizeChanged(uint width, uint height) override
virtual void parameterChanged(uint32_t index, float value)=0