commit c1f2d7f47a8bb32b9fc45804c5d7b730710c4141
parent d3bd0ec61b6ab2d6308ec3ea737f0ddb2381e064
Author: falkTX <falktx@falktx.com>
Date: Fri, 3 Sep 2021 11:28:09 +0100
Add width/height as parameters of embed-ext-ui for easier testing
Signed-off-by: falkTX <falktx@falktx.com>
Diffstat:
4 files changed, 75 insertions(+), 28 deletions(-)
diff --git a/distrho/extra/ExternalWindow.hpp b/distrho/extra/ExternalWindow.hpp
@@ -297,7 +297,7 @@ public:
{
DISTRHO_SAFE_ASSERT_UINT2_RETURN(width > 1 && height > 1, width, height,);
- if (pData.width == width || pData.height == height)
+ if (pData.width == width && pData.height == height)
return;
pData.width = width;
diff --git a/examples/EmbedExternalUI/DistrhoPluginInfo.h b/examples/EmbedExternalUI/DistrhoPluginInfo.h
@@ -30,7 +30,8 @@
#define DISTRHO_UI_USER_RESIZABLE 1
enum Parameters {
- kParameterLevel = 0,
+ kParameterWidth = 0,
+ kParameterHeight,
kParameterCount
};
diff --git a/examples/EmbedExternalUI/EmbedExternalExamplePlugin.cpp b/examples/EmbedExternalUI/EmbedExternalExamplePlugin.cpp
@@ -28,7 +28,8 @@ class EmbedExternalExamplePlugin : public Plugin
public:
EmbedExternalExamplePlugin()
: Plugin(kParameterCount, 0, 0),
- fValue(0.0f)
+ fWidth(512.0f),
+ fHeight(256.0f)
{
}
@@ -104,15 +105,27 @@ protected:
*/
void initParameter(uint32_t index, Parameter& parameter) override
{
- if (index != 0)
- return;
-
- parameter.hints = kParameterIsAutomable|kParameterIsInteger;
- parameter.ranges.def = 0.0f;
- parameter.ranges.min = 0.0f;
- parameter.ranges.max = 100.0f;
- parameter.name = "Value";
- parameter.symbol = "value";
+ switch (index)
+ {
+ case kParameterWidth:
+ parameter.hints = kParameterIsAutomable|kParameterIsInteger;
+ parameter.ranges.def = 512.0f;
+ parameter.ranges.min = 256.0f;
+ parameter.ranges.max = 4096.0f;
+ parameter.name = "Width";
+ parameter.symbol = "width";
+ parameter.unit = "px";
+ break;
+ case kParameterHeight:
+ parameter.hints = kParameterIsAutomable|kParameterIsInteger;
+ parameter.ranges.def = 256.0f;
+ parameter.ranges.min = 256.0f;
+ parameter.ranges.max = 4096.0f;
+ parameter.name = "Height";
+ parameter.symbol = "height";
+ parameter.unit = "px";
+ break;
+ }
}
/* --------------------------------------------------------------------------------------------------------
@@ -124,10 +137,15 @@ protected:
*/
float getParameterValue(uint32_t index) const override
{
- if (index != 0)
- return 0.0f;
+ switch (index)
+ {
+ case kParameterWidth:
+ return fWidth;
+ case kParameterHeight:
+ return fHeight;
+ }
- return fValue;
+ return 0.0f;
}
@@ -139,10 +157,15 @@ protected:
*/
void setParameterValue(uint32_t index, float value) override
{
- if (index != 0)
- return;
-
- fValue = value;
+ switch (index)
+ {
+ case kParameterWidth:
+ fWidth = value;
+ break;
+ case kParameterHeight:
+ fHeight = value;
+ break;
+ }
}
/* --------------------------------------------------------------------------------------------------------
@@ -169,7 +192,7 @@ protected:
private:
// Parameters
- float fValue;
+ float fWidth, fHeight;
/**
Set our plugin class as non-copyable and add a leak detector just in case.
diff --git a/examples/EmbedExternalUI/EmbedExternalExampleUI.cpp b/examples/EmbedExternalUI/EmbedExternalExampleUI.cpp
@@ -61,6 +61,7 @@ class EmbedExternalExampleUI : public UI
NSView* fView;
NSExternalWindow* fWindow;
#elif defined(DISTRHO_OS_WINDOWS)
+ ::HWND fWindow;
#else
::Display* fDisplay;
::Window fWindow;
@@ -71,13 +72,13 @@ public:
: UI(512, 256),
#if defined(DISTRHO_OS_MAC)
fView(nullptr),
- fWindow(nullptr),
+ fWindow(nullptr)
#elif defined(DISTRHO_OS_WINDOWS)
+ fWindow(nullptr)
#else
fDisplay(nullptr),
- fWindow(0),
+ fWindow(0)
#endif
- fValue(0.0f)
{
const bool standalone = isStandalone();
d_stdout("isStandalone %d", (int)standalone);
@@ -222,10 +223,17 @@ protected:
*/
void parameterChanged(uint32_t index, float value) override
{
- if (index != 0)
- return;
+ d_stdout("parameterChanged %u %f", index, value);
- fValue = value;
+ switch (index)
+ {
+ case kParameterWidth:
+ setWidth(static_cast<int>(value + 0.5f));
+ break;
+ case kParameterHeight:
+ setHeight(static_cast<int>(value + 0.5f));
+ break;
+ }
}
/* --------------------------------------------------------------------------------------------------------
@@ -257,6 +265,19 @@ protected:
return 0;
}
+ void sizeChanged(uint width, uint height) override
+ {
+ d_stdout("sizeChanged %u %u", width, height);
+ UI::sizeChanged(width, height);
+
+#if defined(DISTRHO_OS_MAC)
+#elif defined(DISTRHO_OS_WINDOWS)
+#else
+ if (fWindow != 0)
+ XResizeWindow(fDisplay, fWindow, width, height);
+#endif
+ }
+
void titleChanged(const char* const title) override
{
d_stdout("titleChanged %s", title);
@@ -347,7 +368,8 @@ protected:
[pool release];
#elif defined(DISTRHO_OS_WINDOWS)
- /*MSG msg;
+ /*
+ MSG msg;
if (! ::PeekMessage(&msg, nullptr, 0, 0, PM_NOREMOVE))
return true;
@@ -358,7 +380,8 @@ protected:
//TranslateMessage(&msg);
DispatchMessage(&msg);
- }*/
+ }
+ */
#else
if (fDisplay == nullptr)
return;