Signed-off-by: falkTX <falktx@falktx.com>pull/132/head
@@ -1,6 +1,6 @@ | |||
/* | |||
* DISTRHO Plugin Framework (DPF) | |||
* Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
* Copyright (C) 2012-2019 Filipe Coelho <falktx@falktx.com> | |||
* | |||
* Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
* or without fee is hereby granted, provided that the above copyright notice and this | |||
@@ -77,7 +77,7 @@ public: | |||
explicit Window(Application& app); | |||
explicit Window(Application& app, Window& parent); | |||
explicit Window(Application& app, intptr_t parentId); | |||
explicit Window(Application& app, intptr_t parentId, bool resizable); | |||
virtual ~Window(); | |||
void show(); | |||
@@ -1,6 +1,6 @@ | |||
/* | |||
* DISTRHO Plugin Framework (DPF) | |||
* Copyright (C) 2012-2018 Filipe Coelho <falktx@falktx.com> | |||
* Copyright (C) 2012-2019 Filipe Coelho <falktx@falktx.com> | |||
* | |||
* Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
* or without fee is hereby granted, provided that the above copyright notice and this | |||
@@ -147,13 +147,13 @@ struct Window::PrivateData { | |||
#endif | |||
} | |||
PrivateData(Application& app, Window* const self, const intptr_t parentId) | |||
PrivateData(Application& app, Window* const self, const intptr_t parentId, const bool resizable) | |||
: fApp(app), | |||
fSelf(self), | |||
fView(puglInit()), | |||
fFirstInit(true), | |||
fVisible(parentId != 0), | |||
fResizable(parentId == 0), | |||
fResizable(resizable), | |||
fUsingEmbed(parentId != 0), | |||
fWidth(1), | |||
fHeight(1), | |||
@@ -1155,8 +1155,8 @@ Window::Window(Application& app) | |||
Window::Window(Application& app, Window& parent) | |||
: pData(new PrivateData(app, this, parent)) {} | |||
Window::Window(Application& app, intptr_t parentId) | |||
: pData(new PrivateData(app, this, parentId)) {} | |||
Window::Window(Application& app, intptr_t parentId, bool resizable) | |||
: pData(new PrivateData(app, this, parentId, resizable)) {} | |||
Window::~Window() | |||
{ | |||
@@ -1,6 +1,6 @@ | |||
/* | |||
* DISTRHO Plugin Framework (DPF) | |||
* Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
* Copyright (C) 2012-2019 Filipe Coelho <falktx@falktx.com> | |||
* | |||
* Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
* or without fee is hereby granted, provided that the above copyright notice and this | |||
@@ -555,6 +555,14 @@ START_NAMESPACE_DISTRHO | |||
*/ | |||
#define DISTRHO_UI_USE_NANOVG 1 | |||
/** | |||
Wherever the %UI is resizable to any size by the user.@n | |||
By default this is false, and resizing is only allowed under the plugin UI control,@n | |||
Enabling this options makes it possible for the user to resize the plugin UI at anytime. | |||
@see UI::setGeometryConstraints(uint, uint, bool, bool) | |||
*/ | |||
#define DISTRHO_UI_USER_RESIZABLE 1 | |||
/** | |||
The %UI URI when exporting in LV2 format.@n | |||
By default this is set to @ref DISTRHO_PLUGIN_URI with "#UI" as suffix. | |||
@@ -1,6 +1,6 @@ | |||
/* | |||
* DISTRHO Plugin Framework (DPF) | |||
* Copyright (C) 2012-2018 Filipe Coelho <falktx@falktx.com> | |||
* Copyright (C) 2012-2019 Filipe Coelho <falktx@falktx.com> | |||
* | |||
* Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
* or without fee is hereby granted, provided that the above copyright notice and this | |||
@@ -55,19 +55,13 @@ public: | |||
UI class constructor. | |||
The UI should be initialized to a default state that matches the plugin side. | |||
*/ | |||
UI(uint width = 0, uint height = 0, bool userResizable = false); | |||
UI(uint width = 0, uint height = 0); | |||
/** | |||
Destructor. | |||
*/ | |||
virtual ~UI(); | |||
/** | |||
Wherever this UI is resizable by the user. | |||
This simply returns the value passed in the constructor. | |||
*/ | |||
bool isUserResizable() const noexcept; | |||
#if !DISTRHO_PLUGIN_HAS_EXTERNAL_UI | |||
/** | |||
Set geometry constraints for the UI when resized by the user, and optionally scale UI automatically. | |||
@@ -1,6 +1,6 @@ | |||
/* | |||
* DISTRHO Plugin Framework (DPF) | |||
* Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> | |||
* Copyright (C) 2012-2019 Filipe Coelho <falktx@falktx.com> | |||
* | |||
* Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
* or without fee is hereby granted, provided that the above copyright notice and this | |||
@@ -85,6 +85,10 @@ | |||
# define DISTRHO_PLUGIN_WANT_TIMEPOS 0 | |||
#endif | |||
#ifndef DISTRHO_UI_USER_RESIZABLE | |||
# define DISTRHO_UI_USER_RESIZABLE 0 | |||
#endif | |||
#ifndef DISTRHO_UI_USE_NANOVG | |||
# define DISTRHO_UI_USE_NANOVG 0 | |||
#endif | |||
@@ -1,6 +1,6 @@ | |||
/* | |||
* DISTRHO Plugin Framework (DPF) | |||
* Copyright (C) 2012-2018 Filipe Coelho <falktx@falktx.com> | |||
* Copyright (C) 2012-2019 Filipe Coelho <falktx@falktx.com> | |||
* | |||
* Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
* or without fee is hereby granted, provided that the above copyright notice and this | |||
@@ -139,12 +139,17 @@ void lv2_generate_ttl(const char* const basename) | |||
# endif | |||
manifestString += "\n"; | |||
# if DISTRHO_PLUGIN_HAS_EMBED_UI | |||
// TODO: pluginUI.isUserResizable() | |||
# if DISTRHO_UI_USER_RESIZABLE | |||
manifestString += " lv2:optionalFeature ui:resize ,\n"; | |||
manifestString += " ui:touch ;\n"; | |||
manifestString += "\n"; | |||
# else // DISTRHO_UI_USER_RESIZABLE | |||
manifestString += " lv2:optionalFeature ui:noUserResize ,\n"; | |||
manifestString += " ui:resize ,\n"; | |||
manifestString += " ui:touch ;\n"; | |||
manifestString += "\n"; | |||
# endif | |||
# endif // DISTRHO_UI_USER_RESIZABLE | |||
# endif // DISTRHO_PLUGIN_HAS_EMBED_UI | |||
manifestString += " lv2:requiredFeature <" LV2_DATA_ACCESS_URI "> ,\n"; | |||
manifestString += " <" LV2_INSTANCE_ACCESS_URI "> ,\n"; | |||
manifestString += " <" LV2_OPTIONS__options "> ,\n"; | |||
@@ -630,12 +635,17 @@ void lv2_generate_ttl(const char* const basename) | |||
# endif | |||
uiString += "\n"; | |||
# if DISTRHO_PLUGIN_HAS_EMBED_UI | |||
// TODO: pluginUI.isUserResizable() | |||
# if DISTRHO_UI_USER_RESIZABLE | |||
uiString += " lv2:optionalFeature ui:resize ,\n"; | |||
uiString += " ui:touch ;\n"; | |||
uiString += "\n"; | |||
# else // DISTRHO_UI_USER_RESIZABLE | |||
uiString += " lv2:optionalFeature ui:noUserResize ,\n"; | |||
uiString += " ui:resize ,\n"; | |||
uiString += " ui:touch ;\n"; | |||
uiString += "\n"; | |||
# endif | |||
# endif // DISTRHO_UI_USER_RESIZABLE | |||
# endif // DISTRHO_PLUGIN_HAS_EMBED_UI | |||
uiString += " lv2:requiredFeature <" LV2_OPTIONS__options "> ,\n"; | |||
uiString += " <" LV2_URID__map "> ;\n"; | |||
@@ -1,6 +1,6 @@ | |||
/* | |||
* DISTRHO Plugin Framework (DPF) | |||
* Copyright (C) 2012-2018 Filipe Coelho <falktx@falktx.com> | |||
* Copyright (C) 2012-2019 Filipe Coelho <falktx@falktx.com> | |||
* | |||
* Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
* or without fee is hereby granted, provided that the above copyright notice and this | |||
@@ -37,13 +37,13 @@ Window* d_lastUiWindow = nullptr; | |||
* UI */ | |||
#if DISTRHO_PLUGIN_HAS_EXTERNAL_UI | |||
UI::UI(uint width, uint height, bool userResizable) | |||
UI::UI(uint width, uint height) | |||
: UIWidget(width, height), | |||
pData(new PrivateData(userResizable)) {} | |||
pData(new PrivateData()) {} | |||
#else | |||
UI::UI(uint width, uint height, bool userResizable) | |||
UI::UI(uint width, uint height) | |||
: UIWidget(*d_lastUiWindow), | |||
pData(new PrivateData(userResizable)) | |||
pData(new PrivateData()) | |||
{ | |||
((UIWidget*)this)->pData->needsFullViewport = false; | |||
@@ -57,11 +57,6 @@ UI::~UI() | |||
delete pData; | |||
} | |||
bool UI::isUserResizable() const noexcept | |||
{ | |||
return pData->userResizable; | |||
} | |||
#if !DISTRHO_PLUGIN_HAS_EXTERNAL_UI | |||
void UI::setGeometryConstraints(uint minWidth, uint minHeight, bool keepAspectRatio, bool automaticallyScale) | |||
{ | |||
@@ -1,6 +1,6 @@ | |||
/* | |||
* DISTRHO Plugin Framework (DPF) | |||
* Copyright (C) 2012-2018 Filipe Coelho <falktx@falktx.com> | |||
* Copyright (C) 2012-2019 Filipe Coelho <falktx@falktx.com> | |||
* | |||
* Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
* or without fee is hereby granted, provided that the above copyright notice and this | |||
@@ -64,7 +64,6 @@ struct UI::PrivateData { | |||
#endif | |||
// UI | |||
const bool userResizable; | |||
bool automaticallyScale; | |||
bool resizeInProgress; | |||
uint minWidth; | |||
@@ -78,13 +77,12 @@ struct UI::PrivateData { | |||
sendNoteFunc sendNoteCallbackFunc; | |||
setSizeFunc setSizeCallbackFunc; | |||
PrivateData(const bool resizable) noexcept | |||
PrivateData() noexcept | |||
: sampleRate(d_lastUiSampleRate), | |||
parameterOffset(0), | |||
#if DISTRHO_PLUGIN_WANT_DIRECT_ACCESS | |||
dspPtr(d_lastUiDspPtr), | |||
#endif | |||
userResizable(resizable), | |||
automaticallyScale(false), | |||
resizeInProgress(false), | |||
minWidth(0), | |||
@@ -178,14 +176,13 @@ class UIExporterWindow : public Window | |||
{ | |||
public: | |||
UIExporterWindow(Application& app, const intptr_t winId, void* const dspPtr) | |||
: Window(app, winId), | |||
: Window(app, winId, DISTRHO_UI_USER_RESIZABLE), | |||
fUI(createUiWrapper(dspPtr, this)), | |||
fIsReady(false) | |||
{ | |||
DISTRHO_SAFE_ASSERT_RETURN(fUI != nullptr,); | |||
DISTRHO_SAFE_ASSERT_RETURN(fUI->pData != nullptr,); | |||
setResizable(fUI->pData->userResizable); | |||
setSize(fUI->getWidth(), fUI->getHeight()); | |||
} | |||
@@ -1,6 +1,6 @@ | |||
/* | |||
* DISTRHO Plugin Framework (DPF) | |||
* Copyright (C) 2012-2018 Filipe Coelho <falktx@falktx.com> | |||
* Copyright (C) 2012-2019 Filipe Coelho <falktx@falktx.com> | |||
* | |||
* Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
* or without fee is hereby granted, provided that the above copyright notice and this | |||
@@ -61,7 +61,7 @@ class ExternalExampleUI : public UI | |||
{ | |||
public: | |||
ExternalExampleUI() | |||
: UI(405, 256, true), | |||
: UI(405, 256), | |||
fFifo(-1), | |||
fValue(0.0f), | |||
fExternalScript(getNextBundlePath()) | |||
@@ -1,6 +1,6 @@ | |||
/* | |||
* DISTRHO Plugin Framework (DPF) | |||
* Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
* Copyright (C) 2012-2019 Filipe Coelho <falktx@falktx.com> | |||
* | |||
* Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
* or without fee is hereby granted, provided that the above copyright notice and this | |||
@@ -26,6 +26,7 @@ | |||
#define DISTRHO_PLUGIN_NUM_INPUTS 2 | |||
#define DISTRHO_PLUGIN_NUM_OUTPUTS 2 | |||
#define DISTRHO_PLUGIN_WANT_TIMEPOS 1 | |||
#define DISTRHO_UI_USER_RESIZABLE 1 | |||
#define DISTRHO_UI_USE_NANOVG 1 | |||
enum Parameters { | |||
@@ -1,6 +1,6 @@ | |||
/* | |||
* DISTRHO Plugin Framework (DPF) | |||
* Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com> | |||
* Copyright (C) 2012-2019 Filipe Coelho <falktx@falktx.com> | |||
* | |||
* Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
* or without fee is hereby granted, provided that the above copyright notice and this | |||
@@ -28,7 +28,7 @@ class InfoExampleUI : public UI | |||
{ | |||
public: | |||
InfoExampleUI() | |||
: UI(405, 256, true), | |||
: UI(405, 256), | |||
fScale(1.0f) | |||
{ | |||
std::memset(fParameters, 0, sizeof(float)*kParameterCount); | |||
@@ -1,6 +1,6 @@ | |||
/* | |||
* DISTRHO Plugin Framework (DPF) | |||
* Copyright (C) 2012-2018 Filipe Coelho <falktx@falktx.com> | |||
* Copyright (C) 2012-2019 Filipe Coelho <falktx@falktx.com> | |||
* | |||
* Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
* or without fee is hereby granted, provided that the above copyright notice and this | |||
@@ -26,6 +26,7 @@ | |||
#define DISTRHO_PLUGIN_NUM_INPUTS 2 | |||
#define DISTRHO_PLUGIN_NUM_OUTPUTS 2 | |||
#define DISTRHO_PLUGIN_WANT_STATE 1 | |||
#define DISTRHO_UI_USER_RESIZABLE 1 | |||
#define DISTRHO_UI_USE_NANOVG 1 | |||
#define METER_COLOR_GREEN 0 | |||
@@ -1,6 +1,6 @@ | |||
/* | |||
* DISTRHO Plugin Framework (DPF) | |||
* Copyright (C) 2012-2018 Filipe Coelho <falktx@falktx.com> | |||
* Copyright (C) 2012-2019 Filipe Coelho <falktx@falktx.com> | |||
* | |||
* Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
* or without fee is hereby granted, provided that the above copyright notice and this | |||
@@ -34,7 +34,7 @@ class ExampleUIMeters : public UI | |||
{ | |||
public: | |||
ExampleUIMeters() | |||
: UI(128, 512, true), | |||
: UI(128, 512), | |||
// default color is green | |||
fColor(93, 231, 61), | |||
// which is value 0 | |||