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
* 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
* 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



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

@@ -1,6 +1,6 @@
/*
* 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
* 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()


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

@@ -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<projectM> fPM;
ResizeHandle fResizeHandle;
bool fResized = true;

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

# 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


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

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

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

void resetArea()


Loading…
Cancel
Save