From e27446b7e2ab16bd32d6a24d768121047cc4521b Mon Sep 17 00:00:00 2001 From: falkTX Date: Sun, 4 Jan 2026 13:33:13 +0100 Subject: [PATCH] Update dpf, set initial ui size, fix warnings Signed-off-by: falkTX --- dpf | 2 +- plugins/ProM/DistrhoPluginInfo.h | 5 +- plugins/ProM/DistrhoUIProM.cpp | 186 +++++++++++++++++++++---------- plugins/ProM/DistrhoUIProM.hpp | 3 +- plugins/ProM/Makefile | 16 +-- plugins/ProM/ResizeHandle.hpp | 2 +- 6 files changed, 146 insertions(+), 68 deletions(-) diff --git a/dpf b/dpf index e045225..d4c2ce6 160000 --- a/dpf +++ b/dpf @@ -1 +1 @@ -Subproject commit e045225a6c08d437d0bcf8400da9b0783291b4a9 +Subproject commit d4c2ce6e3da43ae328876146b60d2d2cca5caa44 diff --git a/plugins/ProM/DistrhoPluginInfo.h b/plugins/ProM/DistrhoPluginInfo.h index eeb474f..dda5ed9 100644 --- a/plugins/ProM/DistrhoPluginInfo.h +++ b/plugins/ProM/DistrhoPluginInfo.h @@ -1,6 +1,6 @@ /* * DISTRHO ProM Plugin - * Copyright (C) 2015-2022 Filipe Coelho + * Copyright (C) 2015-2026 Filipe Coelho * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -27,6 +27,9 @@ #define DISTRHO_PLUGIN_NUM_OUTPUTS 2 #define DISTRHO_UI_USER_RESIZABLE 1 +#define DISTRHO_UI_DEFAULT_WIDTH 512 +#define DISTRHO_UI_DEFAULT_HEIGHT 512 + // required by projectM #define DISTRHO_PLUGIN_WANT_DIRECT_ACCESS 1 diff --git a/plugins/ProM/DistrhoUIProM.cpp b/plugins/ProM/DistrhoUIProM.cpp index 36264a4..a15f761 100644 --- a/plugins/ProM/DistrhoUIProM.cpp +++ b/plugins/ProM/DistrhoUIProM.cpp @@ -1,6 +1,6 @@ /* * DISTRHO ProM Plugin - * Copyright (C) 2015-2022 Filipe Coelho + * Copyright (C) 2015-2026 Filipe Coelho * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -33,16 +33,13 @@ START_NAMESPACE_DISTRHO // ----------------------------------------------------------------------- DistrhoUIProM::DistrhoUIProM() - : UI(512, 512), + : UI(), fPM(nullptr), fResizeHandle(this) { const double scaleFactor = getScaleFactor(); - if (d_isNotZero(scaleFactor)) - setSize(512*scaleFactor, 512*scaleFactor); - - setGeometryConstraints(256*scaleFactor, 256*scaleFactor, true); + setGeometryConstraints(256 * scaleFactor, 256 * scaleFactor, true); // no need to show resize handle if window is user-resizable // if (isResizable()) @@ -88,43 +85,43 @@ void DistrhoUIProM::uiIdle() } } -void DistrhoUIProM::uiReshape(const uint width, const uint height) -{ - UI::uiReshape(width, height); +// ----------------------------------------------------------------------- +// Widget Callbacks - if (fPM == nullptr) +void DistrhoUIProM::onDisplay() +{ + if (fResized) { + if (fPM == nullptr) + { #ifdef PROJECTM_DATA_DIR - fPM = new projectM(PROJECTM_DATA_DIR "/config.inp"); + fPM = new projectM(PROJECTM_DATA_DIR "/config.inp"); #else - if (const char* const bundlePath = getBundlePath()) - { - const String datadir(getResourcePath(bundlePath)); - d_stdout("ProM datadir: '%s'", datadir.buffer()); - - projectM::Settings settings; - settings.presetURL = datadir + DISTRHO_OS_SEP_STR "presets"; - settings.titleFontURL = datadir + DISTRHO_OS_SEP_STR "fonts" DISTRHO_OS_SEP_STR "Vera.ttf"; - settings.menuFontURL = datadir + DISTRHO_OS_SEP_STR "fonts" DISTRHO_OS_SEP_STR "VeraMono.ttf"; - settings.datadir = datadir; - fPM = new projectM(settings); - } - else - { - d_stderr2("ProM: failed to find bundle path, UI will be empty"); - } + if (const char* const bundlePath = getBundlePath()) + { + const String datadir(getResourcePath(bundlePath)); + d_stdout("ProM datadir: '%s'", datadir.buffer()); + + projectM::Settings settings; + settings.presetURL = datadir + DISTRHO_OS_SEP_STR "presets"; + settings.titleFontURL = datadir + DISTRHO_OS_SEP_STR "fonts" DISTRHO_OS_SEP_STR "Vera.ttf"; + settings.menuFontURL = datadir + DISTRHO_OS_SEP_STR "fonts" DISTRHO_OS_SEP_STR "VeraMono.ttf"; + settings.datadir = datadir; + fPM = new projectM(settings); + } + else + { + d_stderr2("ProM: failed to find bundle path, UI will be empty"); + } #endif - } + } - if (fPM != nullptr) - fPM->projectM_resetGL(width, height); -} + if (fPM != nullptr) + fPM->projectM_resetGL(getWidth(), getHeight()); -// ----------------------------------------------------------------------- -// Widget Callbacks + fResized = false; + } -void DistrhoUIProM::onDisplay() -{ if (fPM == nullptr) return; @@ -138,12 +135,6 @@ static projectMKeycode dgl2pmkey(const DGL_NAMESPACE::Key key) noexcept { switch (key) { - case DGL_NAMESPACE::kKeyBackspace: - return PROJECTM_K_BACKSPACE; - case DGL_NAMESPACE::kKeyEscape: - return PROJECTM_K_ESCAPE; - case DGL_NAMESPACE::kKeyDelete: - return PROJECTM_K_DELETE; case DGL_NAMESPACE::kKeyF1: return PROJECTM_K_F1; case DGL_NAMESPACE::kKeyF2: @@ -168,6 +159,14 @@ static projectMKeycode dgl2pmkey(const DGL_NAMESPACE::Key key) noexcept return PROJECTM_K_F11; case DGL_NAMESPACE::kKeyF12: return PROJECTM_K_F12; + case DGL_NAMESPACE::kKeyPageUp: + return PROJECTM_K_PAGEUP; + case DGL_NAMESPACE::kKeyPageDown: + return PROJECTM_K_PAGEDOWN; + case DGL_NAMESPACE::kKeyEnd: + return PROJECTM_K_END; + case DGL_NAMESPACE::kKeyHome: + return PROJECTM_K_HOME; case DGL_NAMESPACE::kKeyLeft: return PROJECTM_K_LEFT; case DGL_NAMESPACE::kKeyUp: @@ -176,14 +175,6 @@ static projectMKeycode dgl2pmkey(const DGL_NAMESPACE::Key key) noexcept return PROJECTM_K_RIGHT; case DGL_NAMESPACE::kKeyDown: return PROJECTM_K_DOWN; - case DGL_NAMESPACE::kKeyPageUp: - return PROJECTM_K_PAGEUP; - case DGL_NAMESPACE::kKeyPageDown: - return PROJECTM_K_PAGEDOWN; - case DGL_NAMESPACE::kKeyHome: - return PROJECTM_K_HOME; - case DGL_NAMESPACE::kKeyEnd: - return PROJECTM_K_END; case DGL_NAMESPACE::kKeyInsert: return PROJECTM_K_INSERT; case DGL_NAMESPACE::kKeyShiftL: @@ -192,17 +183,84 @@ static projectMKeycode dgl2pmkey(const DGL_NAMESPACE::Key key) noexcept return PROJECTM_K_RSHIFT; case DGL_NAMESPACE::kKeyControlL: return PROJECTM_K_LCTRL; + case DGL_NAMESPACE::kKeyPad0: + return PROJECTM_K_0; + case DGL_NAMESPACE::kKeyPad1: + return PROJECTM_K_1; + case DGL_NAMESPACE::kKeyPad2: + return PROJECTM_K_2; + case DGL_NAMESPACE::kKeyPad3: + return PROJECTM_K_3; + case DGL_NAMESPACE::kKeyPad4: + return PROJECTM_K_4; + case DGL_NAMESPACE::kKeyPad5: + return PROJECTM_K_5; + case DGL_NAMESPACE::kKeyPad6: + return PROJECTM_K_6; + case DGL_NAMESPACE::kKeyPad7: + return PROJECTM_K_7; + case DGL_NAMESPACE::kKeyPad8: + return PROJECTM_K_8; + case DGL_NAMESPACE::kKeyPad9: + return PROJECTM_K_9; + case DGL_NAMESPACE::kKeyPadEnter: + return PROJECTM_K_RETURN; + case DGL_NAMESPACE::kKeyPadPageUp: + return PROJECTM_K_PAGEUP; + case DGL_NAMESPACE::kKeyPadPageDown: + return PROJECTM_K_PAGEDOWN; + case DGL_NAMESPACE::kKeyPadEnd: + return PROJECTM_K_END; + case DGL_NAMESPACE::kKeyPadHome: + return PROJECTM_K_HOME; + case DGL_NAMESPACE::kKeyPadLeft: + return PROJECTM_K_LEFT; + case DGL_NAMESPACE::kKeyPadUp: + return PROJECTM_K_UP; + case DGL_NAMESPACE::kKeyPadRight: + return PROJECTM_K_RIGHT; + case DGL_NAMESPACE::kKeyPadDown: + return PROJECTM_K_DOWN; + case DGL_NAMESPACE::kKeyPadInsert: + return PROJECTM_K_INSERT; + case DGL_NAMESPACE::kKeyPadDelete: + return PROJECTM_K_DELETE; + case DGL_NAMESPACE::kKeyPadEqual: + return PROJECTM_K_EQUALS; + case DGL_NAMESPACE::kKeyPadAdd: + return PROJECTM_K_PLUS; + case DGL_NAMESPACE::kKeyPadSubtract: + return PROJECTM_K_MINUS; + + case DGL_NAMESPACE::kKeyBackspace: + return PROJECTM_K_BACKSPACE; + case DGL_NAMESPACE::kKeyTab: + // TODO + case DGL_NAMESPACE::kKeyEnter: + return PROJECTM_K_RETURN; + case DGL_NAMESPACE::kKeyEscape: + return PROJECTM_K_ESCAPE; + case DGL_NAMESPACE::kKeyDelete: + return PROJECTM_K_DELETE; + case DGL_NAMESPACE::kKeySpace: + break; + + case DGL_NAMESPACE::kKeyPrintScreen: + case DGL_NAMESPACE::kKeyPause: + case DGL_NAMESPACE::kKeyMenu: + case DGL_NAMESPACE::kKeyNumLock: + case DGL_NAMESPACE::kKeyScrollLock: + case DGL_NAMESPACE::kKeyCapsLock: case DGL_NAMESPACE::kKeyControlR: case DGL_NAMESPACE::kKeyAltL: case DGL_NAMESPACE::kKeyAltR: case DGL_NAMESPACE::kKeySuperL: case DGL_NAMESPACE::kKeySuperR: - case DGL_NAMESPACE::kKeyMenu: - case DGL_NAMESPACE::kKeyCapsLock: - case DGL_NAMESPACE::kKeyScrollLock: - case DGL_NAMESPACE::kKeyNumLock: - case DGL_NAMESPACE::kKeyPrintScreen: - case DGL_NAMESPACE::kKeyPause: + case DGL_NAMESPACE::kKeyPadClear: + case DGL_NAMESPACE::kKeyPadMultiply: + case DGL_NAMESPACE::kKeyPadSeparator: + case DGL_NAMESPACE::kKeyPadDecimal: + case DGL_NAMESPACE::kKeyPadDivide: break; } @@ -251,20 +309,28 @@ bool DistrhoUIProM::onKeyboard(const KeyboardEvent& ev) else { /* missing: - * PROJECTM_K_CAPSLOCK + * PROJECTM_K_TAB + * PROJECTM_K_SPACE */ switch (ev.key) { case DGL_NAMESPACE::kKeyBackspace: pmKey = PROJECTM_K_BACKSPACE; break; + case DGL_NAMESPACE::kKeyTab: + break; + case DGL_NAMESPACE::kKeyEnter: + pmKey = PROJECTM_K_RETURN; + break; case DGL_NAMESPACE::kKeyEscape: pmKey = PROJECTM_K_ESCAPE; break; case DGL_NAMESPACE::kKeyDelete: pmKey = PROJECTM_K_DELETE; break; - case '\r': + case DGL_NAMESPACE::kKeySpace: + break; + case '\n': pmKey = PROJECTM_K_RETURN; break; #ifdef HAVE_PROJECTM_TEXT_FUNCTIONS @@ -305,6 +371,12 @@ bool DistrhoUIProM::onMouse(const MouseEvent& ev) return false; } +void DistrhoUIProM::onResize(const ResizeEvent& ev) +{ + fResized = true; + UI::onResize(ev); +} + // ----------------------------------------------------------------------- UI* createUI() diff --git a/plugins/ProM/DistrhoUIProM.hpp b/plugins/ProM/DistrhoUIProM.hpp index 13fb8a1..a583fdb 100644 --- a/plugins/ProM/DistrhoUIProM.hpp +++ b/plugins/ProM/DistrhoUIProM.hpp @@ -42,7 +42,6 @@ protected: // UI Callbacks void uiIdle() override; - void uiReshape(uint width, uint height) override; // ------------------------------------------------------------------- // Widget Callbacks @@ -50,10 +49,12 @@ protected: void onDisplay() override; bool onKeyboard(const KeyboardEvent&) override; bool onMouse(const MouseEvent& ev) override; + void onResize(const ResizeEvent& ev) override; private: ScopedPointer fPM; ResizeHandle fResizeHandle; + bool fResized = true; DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(DistrhoUIProM) }; diff --git a/plugins/ProM/Makefile b/plugins/ProM/Makefile index b39f118..cb03aeb 100644 --- a/plugins/ProM/Makefile +++ b/plugins/ProM/Makefile @@ -162,6 +162,7 @@ BASE_FLAGS += -IprojectM/msvc endif # WINDOWS # silence projectM warnings +BASE_FLAGS += -Wno-deprecated-declarations BASE_FLAGS += -Wno-ignored-qualifiers BASE_FLAGS += -Wno-implicit-fallthrough BASE_FLAGS += -Wno-overflow @@ -184,13 +185,13 @@ else BASE_FLAGS += -Wno-unused-function endif # WINDOWS -# openmp (optional) -ifeq ($(DISABLE_OPENMP),) -ifneq ($(MACOS),true) -CUSTOM_BUILD_FLAGS += -D_OPENMP -fopenmp -CUSTOM_LINK_FLAGS += -fopenmp -endif # MACOS -endif # DISABLE_OPENMP +# # openmp (optional) +# ifeq ($(DISABLE_OPENMP),) +# ifneq ($(MACOS),true) +# CUSTOM_BUILD_FLAGS += -D_OPENMP -fopenmp +# CUSTOM_LINK_FLAGS += -fopenmp +# endif # MACOS +# endif # DISABLE_OPENMP # extra linker flags ifneq ($(HAIKU_OR_MACOS_OR_WINDOWS),true) @@ -200,6 +201,7 @@ ifeq ($(WINDOWS),true) LINK_FLAGS += -lpsapi endif + endif # HAVE_PROJECTM LINK_FLAGS += -lpthread diff --git a/plugins/ProM/ResizeHandle.hpp b/plugins/ProM/ResizeHandle.hpp index a307c97..6ded23d 100644 --- a/plugins/ProM/ResizeHandle.hpp +++ b/plugins/ProM/ResizeHandle.hpp @@ -153,7 +153,7 @@ private: return; hasCursor = shouldHaveCursor; - setCursor(shouldHaveCursor ? kMouseCursorDiagonal : kMouseCursorArrow); + setCursor(shouldHaveCursor ? kMouseCursorUpLeftDownRight : kMouseCursorArrow); } void resetArea()