Browse Source

Update dpf, set initial ui size, fix warnings

Signed-off-by: falkTX <falktx@falktx.com>
master
falkTX 1 month ago
parent
commit
e27446b7e2
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
6 changed files with 146 additions and 68 deletions
  1. +1
    -1
      dpf
  2. +4
    -1
      plugins/ProM/DistrhoPluginInfo.h
  3. +129
    -57
      plugins/ProM/DistrhoUIProM.cpp
  4. +2
    -1
      plugins/ProM/DistrhoUIProM.hpp
  5. +9
    -7
      plugins/ProM/Makefile
  6. +1
    -1
      plugins/ProM/ResizeHandle.hpp

+ 1
- 1
dpf

@@ -1 +1 @@
Subproject commit e045225a6c08d437d0bcf8400da9b0783291b4a9
Subproject commit d4c2ce6e3da43ae328876146b60d2d2cca5caa44

+ 4
- 1
plugins/ProM/DistrhoPluginInfo.h View File

@@ -1,6 +1,6 @@
/* /*
* DISTRHO ProM Plugin * DISTRHO ProM Plugin
* Copyright (C) 2015-2022 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2015-2026 Filipe Coelho <falktx@falktx.com>
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@@ -27,6 +27,9 @@
#define DISTRHO_PLUGIN_NUM_OUTPUTS 2 #define DISTRHO_PLUGIN_NUM_OUTPUTS 2
#define DISTRHO_UI_USER_RESIZABLE 1 #define DISTRHO_UI_USER_RESIZABLE 1


#define DISTRHO_UI_DEFAULT_WIDTH 512
#define DISTRHO_UI_DEFAULT_HEIGHT 512

// required by projectM // required by projectM
#define DISTRHO_PLUGIN_WANT_DIRECT_ACCESS 1 #define DISTRHO_PLUGIN_WANT_DIRECT_ACCESS 1




+ 129
- 57
plugins/ProM/DistrhoUIProM.cpp View File

@@ -1,6 +1,6 @@
/* /*
* DISTRHO ProM Plugin * DISTRHO ProM Plugin
* Copyright (C) 2015-2022 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2015-2026 Filipe Coelho <falktx@falktx.com>
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
@@ -33,16 +33,13 @@ START_NAMESPACE_DISTRHO
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------


DistrhoUIProM::DistrhoUIProM() DistrhoUIProM::DistrhoUIProM()
: UI(512, 512),
: UI(),
fPM(nullptr), fPM(nullptr),
fResizeHandle(this) fResizeHandle(this)
{ {
const double scaleFactor = getScaleFactor(); 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 // no need to show resize handle if window is user-resizable
// if (isResizable()) // 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 #ifdef PROJECTM_DATA_DIR
fPM = new projectM(PROJECTM_DATA_DIR "/config.inp");
fPM = new projectM(PROJECTM_DATA_DIR "/config.inp");
#else #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 #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) if (fPM == nullptr)
return; return;


@@ -138,12 +135,6 @@ static projectMKeycode dgl2pmkey(const DGL_NAMESPACE::Key key) noexcept
{ {
switch (key) 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: case DGL_NAMESPACE::kKeyF1:
return PROJECTM_K_F1; return PROJECTM_K_F1;
case DGL_NAMESPACE::kKeyF2: case DGL_NAMESPACE::kKeyF2:
@@ -168,6 +159,14 @@ static projectMKeycode dgl2pmkey(const DGL_NAMESPACE::Key key) noexcept
return PROJECTM_K_F11; return PROJECTM_K_F11;
case DGL_NAMESPACE::kKeyF12: case DGL_NAMESPACE::kKeyF12:
return PROJECTM_K_F12; 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: case DGL_NAMESPACE::kKeyLeft:
return PROJECTM_K_LEFT; return PROJECTM_K_LEFT;
case DGL_NAMESPACE::kKeyUp: case DGL_NAMESPACE::kKeyUp:
@@ -176,14 +175,6 @@ static projectMKeycode dgl2pmkey(const DGL_NAMESPACE::Key key) noexcept
return PROJECTM_K_RIGHT; return PROJECTM_K_RIGHT;
case DGL_NAMESPACE::kKeyDown: case DGL_NAMESPACE::kKeyDown:
return PROJECTM_K_DOWN; 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: case DGL_NAMESPACE::kKeyInsert:
return PROJECTM_K_INSERT; return PROJECTM_K_INSERT;
case DGL_NAMESPACE::kKeyShiftL: case DGL_NAMESPACE::kKeyShiftL:
@@ -192,17 +183,84 @@ static projectMKeycode dgl2pmkey(const DGL_NAMESPACE::Key key) noexcept
return PROJECTM_K_RSHIFT; return PROJECTM_K_RSHIFT;
case DGL_NAMESPACE::kKeyControlL: case DGL_NAMESPACE::kKeyControlL:
return PROJECTM_K_LCTRL; 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::kKeyControlR:
case DGL_NAMESPACE::kKeyAltL: case DGL_NAMESPACE::kKeyAltL:
case DGL_NAMESPACE::kKeyAltR: case DGL_NAMESPACE::kKeyAltR:
case DGL_NAMESPACE::kKeySuperL: case DGL_NAMESPACE::kKeySuperL:
case DGL_NAMESPACE::kKeySuperR: 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; break;
} }


@@ -251,20 +309,28 @@ bool DistrhoUIProM::onKeyboard(const KeyboardEvent& ev)
else else
{ {
/* missing: /* missing:
* PROJECTM_K_CAPSLOCK
* PROJECTM_K_TAB
* PROJECTM_K_SPACE
*/ */
switch (ev.key) switch (ev.key)
{ {
case DGL_NAMESPACE::kKeyBackspace: case DGL_NAMESPACE::kKeyBackspace:
pmKey = PROJECTM_K_BACKSPACE; pmKey = PROJECTM_K_BACKSPACE;
break; break;
case DGL_NAMESPACE::kKeyTab:
break;
case DGL_NAMESPACE::kKeyEnter:
pmKey = PROJECTM_K_RETURN;
break;
case DGL_NAMESPACE::kKeyEscape: case DGL_NAMESPACE::kKeyEscape:
pmKey = PROJECTM_K_ESCAPE; pmKey = PROJECTM_K_ESCAPE;
break; break;
case DGL_NAMESPACE::kKeyDelete: case DGL_NAMESPACE::kKeyDelete:
pmKey = PROJECTM_K_DELETE; pmKey = PROJECTM_K_DELETE;
break; break;
case '\r':
case DGL_NAMESPACE::kKeySpace:
break;
case '\n':
pmKey = PROJECTM_K_RETURN; pmKey = PROJECTM_K_RETURN;
break; break;
#ifdef HAVE_PROJECTM_TEXT_FUNCTIONS #ifdef HAVE_PROJECTM_TEXT_FUNCTIONS
@@ -305,6 +371,12 @@ bool DistrhoUIProM::onMouse(const MouseEvent& ev)
return false; return false;
} }


void DistrhoUIProM::onResize(const ResizeEvent& ev)
{
fResized = true;
UI::onResize(ev);
}

// ----------------------------------------------------------------------- // -----------------------------------------------------------------------


UI* createUI() UI* createUI()


+ 2
- 1
plugins/ProM/DistrhoUIProM.hpp View File

@@ -42,7 +42,6 @@ protected:
// UI Callbacks // UI Callbacks


void uiIdle() override; void uiIdle() override;
void uiReshape(uint width, uint height) override;


// ------------------------------------------------------------------- // -------------------------------------------------------------------
// Widget Callbacks // Widget Callbacks
@@ -50,10 +49,12 @@ protected:
void onDisplay() override; void onDisplay() override;
bool onKeyboard(const KeyboardEvent&) override; bool onKeyboard(const KeyboardEvent&) override;
bool onMouse(const MouseEvent& ev) override; bool onMouse(const MouseEvent& ev) override;
void onResize(const ResizeEvent& ev) override;


private: private:
ScopedPointer<projectM> fPM; ScopedPointer<projectM> fPM;
ResizeHandle fResizeHandle; ResizeHandle fResizeHandle;
bool fResized = true;


DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(DistrhoUIProM) DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(DistrhoUIProM)
}; };


+ 9
- 7
plugins/ProM/Makefile View File

@@ -162,6 +162,7 @@ BASE_FLAGS += -IprojectM/msvc
endif # WINDOWS endif # WINDOWS


# silence projectM warnings # silence projectM warnings
BASE_FLAGS += -Wno-deprecated-declarations
BASE_FLAGS += -Wno-ignored-qualifiers BASE_FLAGS += -Wno-ignored-qualifiers
BASE_FLAGS += -Wno-implicit-fallthrough BASE_FLAGS += -Wno-implicit-fallthrough
BASE_FLAGS += -Wno-overflow BASE_FLAGS += -Wno-overflow
@@ -184,13 +185,13 @@ else
BASE_FLAGS += -Wno-unused-function BASE_FLAGS += -Wno-unused-function
endif # WINDOWS 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 # extra linker flags
ifneq ($(HAIKU_OR_MACOS_OR_WINDOWS),true) ifneq ($(HAIKU_OR_MACOS_OR_WINDOWS),true)
@@ -200,6 +201,7 @@ ifeq ($(WINDOWS),true)
LINK_FLAGS += -lpsapi LINK_FLAGS += -lpsapi
endif endif



endif # HAVE_PROJECTM endif # HAVE_PROJECTM


LINK_FLAGS += -lpthread LINK_FLAGS += -lpthread


+ 1
- 1
plugins/ProM/ResizeHandle.hpp View File

@@ -153,7 +153,7 @@ private:
return; return;


hasCursor = shouldHaveCursor; hasCursor = shouldHaveCursor;
setCursor(shouldHaveCursor ? kMouseCursorDiagonal : kMouseCursorArrow);
setCursor(shouldHaveCursor ? kMouseCursorUpLeftDownRight : kMouseCursorArrow);
} }


void resetArea() void resetArea()


Loading…
Cancel
Save