Signed-off-by: falkTX <falktx@falktx.com>pull/318/head
@@ -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; | |||
@@ -30,7 +30,8 @@ | |||
#define DISTRHO_UI_USER_RESIZABLE 1 | |||
enum Parameters { | |||
kParameterLevel = 0, | |||
kParameterWidth = 0, | |||
kParameterHeight, | |||
kParameterCount | |||
}; | |||
@@ -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. | |||
@@ -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; | |||