Browse Source

More tweaks to self-contained build, set UI resizable

Signed-off-by: falkTX <falktx@falktx.com>
master
falkTX 1 year ago
parent
commit
9f1a6dc401
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
6 changed files with 116 additions and 12 deletions
  1. +20
    -1
      Makefile
  2. +1
    -1
      dpf
  3. +2
    -1
      plugins/ProM/DistrhoPluginInfo.h
  4. +45
    -4
      plugins/ProM/DistrhoUIProM.cpp
  5. +42
    -3
      plugins/ProM/Makefile
  6. +6
    -2
      plugins/ProM/config.h

+ 20
- 1
Makefile View File

@@ -6,7 +6,7 @@

include dpf/Makefile.base.mk

all: dgl plugins gen
all: dgl plugins resources gen

# --------------------------------------------------------------
# Check for system-wide projectM
@@ -23,6 +23,25 @@ plugins: dgl

ifneq ($(HAVE_PROJECTM),true)
resources: plugins
# LV2 fonts
install -d bin/ProM.lv2/resources/fonts
ln -sf $(CURDIR)/plugins/ProM/projectM/fonts/*.ttf bin/ProM.lv2/resources/fonts/
# LV2 presets
install -d bin/ProM.lv2/resources/presets
ln -sf $(CURDIR)/plugins/ProM/projectM/presets/presets_* bin/ProM.lv2/resources/presets/
ifeq ($(MACOS),true)
# TODO
else
# VST directory
install -d bin/ProM.vst
mv bin/ProM-vst$(LIB_EXT) bin/ProM.vst/ProM$(LIB_EXT)
# VST fonts
install -d bin/ProM.vst/resources/fonts
ln -sf $(CURDIR)/plugins/ProM/projectM/fonts/*.ttf bin/ProM.vst/resources/fonts/
# VST presets
install -d bin/ProM.vst/resources/presets
ln -sf $(CURDIR)/plugins/ProM/projectM/presets/presets_* bin/ProM.vst/resources/presets/
endif
else
resources:
endif


+ 1
- 1
dpf

@@ -1 +1 @@
Subproject commit 168e8a5333c52175a7e94016b3ef994c7b253aa9
Subproject commit 05d91f5852f4bccfd2bce1d4d2e2b3036e29db03

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

@@ -1,6 +1,6 @@
/*
* DISTRHO ProM Plugin
* Copyright (C) 2015 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2015-2021 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
@@ -24,6 +24,7 @@
#define DISTRHO_PLUGIN_HAS_UI 1
#define DISTRHO_PLUGIN_NUM_INPUTS 2
#define DISTRHO_PLUGIN_NUM_OUTPUTS 2
#define DISTRHO_UI_USER_RESIZABLE 1

// required by projectM
#define DISTRHO_PLUGIN_WANT_DIRECT_ACCESS 1


+ 45
- 4
plugins/ProM/DistrhoUIProM.cpp View File

@@ -19,10 +19,46 @@

#include "libprojectM/projectM.hpp"

#ifdef DISTRHO_OS_WINDOWS
# include <shlobj.h>
#else
# include <dlfcn.h>
#endif

START_NAMESPACE_DISTRHO

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

static String getCurrentExecutableDataDir()
{
static String datadir;

if (datadir.isNotEmpty())
return datadir;

#ifdef DISTRHO_OS_WINDOWS
CHAR filename[MAX_PATH + 256];
filename[0] = 0;
GetModuleFileName(nullptr, filename, sizeof(filename));

datadir = String(filename);
#else
Dl_info info;
dladdr((void*)getCurrentExecutableDataDir, &info);

datadir = String(info.dli_fname);

bool hasSlash;
const std::size_t slashPos = datadir.rfind('/', &hasSlash);
if (hasSlash)
datadir.truncate(slashPos);
#endif

return datadir;
}

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

DistrhoUIProM::DistrhoUIProM()
: UI(512, 512),
fPM(nullptr),
@@ -76,6 +112,7 @@ void DistrhoUIProM::uiIdle()

void DistrhoUIProM::uiReshape(uint width, uint height)
{
#if 0
glEnable(GL_BLEND);
glEnable(GL_LINE_SMOOTH);
glEnable(GL_POINT_SMOOTH);
@@ -99,17 +136,21 @@ void DistrhoUIProM::uiReshape(uint width, uint height)

glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glLineStipple(2, 0xAAAA);
#endif

if (fPM == nullptr)
{
#ifdef PROJECTM_DATA_DIR
fPM = new projectM(PROJECTM_DATA_DIR "/config.inp");
#else
const String datadir(getCurrentExecutableDataDir());
d_stdout("ProM datadir: '%s'", datadir.buffer());

projectM::Settings settings;
settings.presetURL = "/Users/falktx/Source/ProM/plugins/ProM/projectM/presets";
settings.titleFontURL = "fonts/Vera.ttf";
settings.menuFontURL = "fonts/VeraMono.ttf";
settings.datadir = "/Users/falktx/Source/ProM/plugins/ProM/projectM";
settings.presetURL = datadir + "/resources/presets";
settings.titleFontURL = datadir + "/resources/fonts/Vera.ttf";
settings.menuFontURL = datadir + "/resources/fonts/VeraMono.ttf";
settings.datadir = datadir + "/resources";
fPM = new projectM(settings);
#endif
}


+ 42
- 3
plugins/ProM/Makefile View File

@@ -23,6 +23,11 @@ FILES_UI = \

HAVE_PROJECTM = $(shell pkg-config --exists libprojectM && echo true)

# --------------------------------------------------------------
# Import base definitions

include ../../dpf/Makefile.base.mk

# --------------------------------------------------------------
# Use local copy if needed

@@ -90,7 +95,12 @@ FILES_UI += \
projectM/src/libprojectM/Renderer/SOIL2/image_DXT.c \
projectM/src/libprojectM/Renderer/SOIL2/etc1_utils.c \
projectM/src/libprojectM/Renderer/SOIL2/image_helper.c
endif
ifeq ($(WINDOWS),true)
FILES_UI += \
projectM/msvc/dlfcn.c \
projectM/msvc/GL/glew.c
endif # WINDOWS
endif # !HAVE_PROJECTM

# --------------------------------------------------------------
# Do some magic
@@ -101,12 +111,27 @@ include ../../dpf/Makefile.plugins.mk
# Extra flags

ifeq ($(HAVE_PROJECTM),true)

BASE_FLAGS += -DPROJECTM_DATA_DIR='"$(shell pkg-config --variable=pkgdatadir libprojectM)"'
BASE_FLAGS += $(shell pkg-config --cflags libprojectM)
LINK_FLAGS += $(shell pkg-config --libs libprojectM)

else # HAVE_PROJECTM

# compiler macros
BASE_FLAGS += -DUSE_TEXT_MENU
ifeq ($(WINDOWS),true)
BASE_FLAGS += -DDLLEXPORT=
BASE_FLAGS += -DprojectM_FONT_TITLE='"fonts/Vera.tff"'
BASE_FLAGS += -DprojectM_FONT_MENU='"fonts/VeraMono.ttf"'
BASE_FLAGS += -DSTBI_NO_DDS
# these below do nothing
BASE_FLAGS += -DUSE_FTGL
BASE_FLAGS += -DUSE_NATIVE_GLEW
else # WINDOWS
BASE_FLAGS += -DDATADIR_PATH='"."'
endif # WINDOWS

# include dirs
BASE_FLAGS += -IprojectM/src
BASE_FLAGS += -IprojectM/src/libprojectM
@@ -115,6 +140,10 @@ BASE_FLAGS += -IprojectM/src/libprojectM/Renderer/hlslparser/src
BASE_FLAGS += -IprojectM/src/libprojectM/MilkdropPresetFactory
BASE_FLAGS += -IprojectM/src/libprojectM/NativePresetFactory
BASE_FLAGS += -IprojectM/vendor
ifeq ($(WINDOWS),true)
BASE_FLAGS += -IprojectM/msvc
endif # WINDOWS

# silence projectM warnings
BASE_FLAGS += -Wno-ignored-qualifiers
BASE_FLAGS += -Wno-implicit-fallthrough
@@ -129,7 +158,12 @@ ifeq ($(MACOS),true)
BASE_FLAGS += -Wno-constant-conversion
BASE_FLAGS += -Wno-delete-non-abstract-non-virtual-dtor
BASE_FLAGS += -Wno-mismatched-tags
endif
endif # MACOS
ifeq ($(WINDOWS),true)
BASE_FLAGS += -Wno-cast-function-type
BASE_FLAGS += -Wno-unknown-pragmas
endif # WIN32

# openmp (optional)
ifeq ($(DISABLE_OPENMP),)
ifneq ($(MACOS),true)
@@ -137,10 +171,15 @@ 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)
LINK_FLAGS += -ldl
endif # HAIKU_OR_MACOS_OR_WINDOWS
endif
ifeq ($(WINDOWS),true)
LINK_FLAGS += -lpsapi
endif

endif # HAVE_PROJECTM

LINK_FLAGS += -lpthread


+ 6
- 2
plugins/ProM/config.h View File

@@ -17,7 +17,6 @@
#pragma once

#define HAVE_ALIGNED_ALLOC 1
#define HAVE_DLFCN_H 1
#define HAVE_FTS_H 1
#define HAVE_GL 1
#define HAVE_GL_GL_H 1
@@ -33,10 +32,15 @@
#define HAVE_SYS_STAT_H 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_UNISTD_H 1
#define HAVE_WINDOWS_H 1
#define STDC_HEADERS 1
#define USE_THREADS 1

#define HAVE_DLFCN_H 1

#ifdef WIN32
# define HAVE_WINDOWS_H 1
#endif

// GLES stuff
/*
#define HAVE_GLES_GL_H 1


Loading…
Cancel
Save