Browse Source

Move c++ code to main frontend folder

Signed-off-by: falkTX <falktx@falktx.com>
tags/v2.1-rc1
falkTX 4 years ago
parent
commit
475603b35c
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
16 changed files with 949 additions and 82 deletions
  1. +5
    -0
      .gitignore
  2. +0
    -74
      source/frontend/C++/Makefile
  3. +153
    -0
      source/frontend/Makefile
  4. +0
    -0
      source/frontend/carla.cpp
  5. +2
    -2
      source/frontend/carla_app.cpp
  6. +1
    -1
      source/frontend/carla_app.hpp
  7. +0
    -4
      source/frontend/carla_host.cpp
  8. +0
    -0
      source/frontend/carla_host.hpp
  9. +83
    -0
      source/frontend/carla_settings.cpp
  10. +31
    -0
      source/frontend/carla_settings.hpp
  11. +24
    -0
      source/frontend/carla_shared.cpp
  12. +3
    -1
      source/frontend/carla_shared.hpp
  13. +1
    -0
      source/frontend/carla_widgets.cpp
  14. +1
    -0
      source/frontend/carla_widgets.hpp
  15. +581
    -0
      source/frontend/patchcanvas/theme.cpp
  16. +64
    -0
      source/frontend/patchcanvas/theme.hpp

+ 5
- 0
.gitignore View File

@@ -29,6 +29,7 @@
*.vst3

# Binary dir
bin/carla
bin/carla.lv2/carla-bridge-*
bin/jack/
bin/styles/
@@ -48,7 +49,11 @@ qrc_resources.cpp

# Python files
*.pyc

# Qt files
*_rc.hpp
*_rc.py
ui_*.hpp
ui_*.py

# Misc files


+ 0
- 74
source/frontend/C++/Makefile View File

@@ -71,80 +71,6 @@ RES = \

# ---------------------------------------------------------------------------------------------------------------------

LIBS = $(MODULEDIR)/carla_engine.a
LIBS += $(MODULEDIR)/carla_plugin.a
LIBS += $(MODULEDIR)/jackbridge.a

LIBS += $(MODULEDIR)/audio_decoder.a
LIBS += $(MODULEDIR)/lilv.a
LIBS += $(MODULEDIR)/native-plugins.a
LIBS += $(MODULEDIR)/rtmempool.a
LIBS += $(MODULEDIR)/sfzero.a
LIBS += $(MODULEDIR)/water.a

ifeq ($(HAVE_DGL),true)
LIBS += $(MODULEDIR)/dgl.a
endif

ifeq ($(HAVE_HYLIA),true)
LIBS += $(MODULEDIR)/hylia.a
endif

ifeq ($(USING_JUCE),true)
LIBS += $(MODULEDIR)/juce_audio_basics.a
LIBS += $(MODULEDIR)/juce_audio_devices.a
LIBS += $(MODULEDIR)/juce_audio_processors.a
LIBS += $(MODULEDIR)/juce_core.a
LIBS += $(MODULEDIR)/juce_data_structures.a
LIBS += $(MODULEDIR)/juce_events.a
LIBS += $(MODULEDIR)/juce_graphics.a
LIBS += $(MODULEDIR)/juce_gui_basics.a
ifeq ($(MACOS),true)
LIBS += $(MODULEDIR)/juce_gui_extra.a
endif
else
LIBS += $(MODULEDIR)/rtaudio.a
LIBS += $(MODULEDIR)/rtmidi.a
endif

# ---------------------------------------------------------------------------------------------------------------------

LINK_FLAGS += $(QT5_LIBS)
LINK_FLAGS += $(HYLIA_LIBS)
LINK_FLAGS += $(JACKBRIDGE_LIBS)
LINK_FLAGS += $(LILV_LIBS)
LINK_FLAGS += $(NATIVE_PLUGINS_LIBS)
LINK_FLAGS += $(RTMEMPOOL_LIBS)
LINK_FLAGS += $(WATER_LIBS)

LINK_FLAGS += $(LIBLO_LIBS)
LINK_FLAGS += $(MAGIC_LIBS)
LINK_FLAGS += $(FLUIDSYNTH_LIBS)
LINK_FLAGS += $(X11_LIBS)

ifeq ($(USING_JUCE),true)
LINK_FLAGS += $(JUCE_AUDIO_BASICS_LIBS)
LINK_FLAGS += $(JUCE_AUDIO_DEVICES_LIBS)
LINK_FLAGS += $(JUCE_AUDIO_PROCESSORS_LIBS)
LINK_FLAGS += $(JUCE_CORE_LIBS)
LINK_FLAGS += $(JUCE_DATA_STRUCTURES_LIBS)
LINK_FLAGS += $(JUCE_EVENTS_LIBS)
LINK_FLAGS += $(JUCE_GRAPHICS_LIBS)
LINK_FLAGS += $(JUCE_GUI_BASICS_LIBS)
ifeq ($(MACOS),true)
LINK_FLAGS += $(JUCE_GUI_EXTRA_LIBS)
endif
else
LINK_FLAGS += $(RTAUDIO_LIBS)
LINK_FLAGS += $(RTMIDI_LIBS)
endif

ifeq ($(JACKBRIDGE_DIRECT),true)
LINK_FLAGS += $(JACK_LIBS)
endif

# ---------------------------------------------------------------------------------------------------------------------

all: $(TARGETS) $(UIs) $(RES)

# ---------------------------------------------------------------------------------------------------------------------


+ 153
- 0
source/frontend/Makefile View File

@@ -20,33 +20,59 @@ OBJDIR := $(CWD)/../build/frontend/Release
MODULEDIR := $(CWD)/../build/modules/Release
endif

# ---------------------------------------------------------------------------------------------------------------------

BUILD_CXX_FLAGS += -I. -I$(CWD) -I$(CWD)/backend -I$(CWD)/includes -I$(CWD)/modules -I$(CWD)/utils
BUILD_CXX_FLAGS += -DCARLA_SKIP_HOST_COMMON
BUILD_CXX_FLAGS += $(FLUIDSYNTH_FLAGS)
BUILD_CXX_FLAGS += $(QT5_FLAGS)

# ---------------------------------------------------------------------------------------------------------------------
# UI code

UIs = \
ui_carla_about.hpp \
ui_carla_about.py \
ui_carla_about_juce.hpp \
ui_carla_about_juce.py \
ui_carla_add_jack.hpp \
ui_carla_add_jack.py \
ui_carla_database.hpp \
ui_carla_database.py \
ui_carla_edit.hpp \
ui_carla_edit.py \
ui_carla_host.hpp \
ui_carla_host.py \
ui_carla_osc_connect.py \
ui_carla_osc_connect.hpp \
ui_carla_parameter.hpp \
ui_carla_parameter.py \
ui_carla_plugin_calf.hpp \
ui_carla_plugin_calf.py \
ui_carla_plugin_classic.hpp \
ui_carla_plugin_classic.py \
ui_carla_plugin_compact.hpp \
ui_carla_plugin_compact.py \
ui_carla_plugin_default.hpp \
ui_carla_plugin_default.py \
ui_carla_plugin_presets.hpp \
ui_carla_plugin_presets.py \
ui_carla_refresh.hpp \
ui_carla_refresh.py \
ui_carla_settings.hpp \
ui_carla_settings.py \
ui_carla_settings_driver.hpp \
ui_carla_settings_driver.py \
ui_inputdialog_value.hpp \
ui_inputdialog_value.py \
ui_midipattern.hpp \
ui_midipattern.py

# ---------------------------------------------------------------------------------------------------------------------
# Resources

RES = \
resources_rc.hpp \
resources_rc.py \
$(BINDIR)/resources/patchcanvas \
$(BINDIR)/resources/widgets \
@@ -85,13 +111,114 @@ RES = \

# ---------------------------------------------------------------------------------------------------------------------

LIBS = $(MODULEDIR)/carla_engine.a
LIBS += $(MODULEDIR)/carla_plugin.a
LIBS += $(MODULEDIR)/jackbridge.a

LIBS += $(MODULEDIR)/audio_decoder.a
LIBS += $(MODULEDIR)/lilv.a
LIBS += $(MODULEDIR)/native-plugins.a
LIBS += $(MODULEDIR)/rtmempool.a
LIBS += $(MODULEDIR)/sfzero.a
LIBS += $(MODULEDIR)/water.a

ifeq ($(HAVE_DGL),true)
LIBS += $(MODULEDIR)/dgl.a
endif

ifeq ($(HAVE_HYLIA),true)
LIBS += $(MODULEDIR)/hylia.a
endif

ifeq ($(USING_JUCE),true)
LIBS += $(MODULEDIR)/juce_audio_basics.a
LIBS += $(MODULEDIR)/juce_audio_devices.a
LIBS += $(MODULEDIR)/juce_audio_processors.a
LIBS += $(MODULEDIR)/juce_core.a
LIBS += $(MODULEDIR)/juce_data_structures.a
LIBS += $(MODULEDIR)/juce_events.a
LIBS += $(MODULEDIR)/juce_graphics.a
LIBS += $(MODULEDIR)/juce_gui_basics.a
ifeq ($(MACOS),true)
LIBS += $(MODULEDIR)/juce_gui_extra.a
endif
else
LIBS += $(MODULEDIR)/rtaudio.a
LIBS += $(MODULEDIR)/rtmidi.a
endif

# ---------------------------------------------------------------------------------------------------------------------

LINK_FLAGS += $(QT5_LIBS)
LINK_FLAGS += $(HYLIA_LIBS)
LINK_FLAGS += $(JACKBRIDGE_LIBS)
LINK_FLAGS += $(LILV_LIBS)
LINK_FLAGS += $(NATIVE_PLUGINS_LIBS)
LINK_FLAGS += $(RTMEMPOOL_LIBS)
LINK_FLAGS += $(WATER_LIBS)

LINK_FLAGS += $(LIBLO_LIBS)
LINK_FLAGS += $(MAGIC_LIBS)
LINK_FLAGS += $(FLUIDSYNTH_LIBS)
LINK_FLAGS += $(X11_LIBS)

ifeq ($(USING_JUCE),true)
LINK_FLAGS += $(JUCE_AUDIO_BASICS_LIBS)
LINK_FLAGS += $(JUCE_AUDIO_DEVICES_LIBS)
LINK_FLAGS += $(JUCE_AUDIO_PROCESSORS_LIBS)
LINK_FLAGS += $(JUCE_CORE_LIBS)
LINK_FLAGS += $(JUCE_DATA_STRUCTURES_LIBS)
LINK_FLAGS += $(JUCE_EVENTS_LIBS)
LINK_FLAGS += $(JUCE_GRAPHICS_LIBS)
LINK_FLAGS += $(JUCE_GUI_BASICS_LIBS)
ifeq ($(MACOS),true)
LINK_FLAGS += $(JUCE_GUI_EXTRA_LIBS)
endif
else
LINK_FLAGS += $(RTAUDIO_LIBS)
LINK_FLAGS += $(RTMIDI_LIBS)
endif

ifeq ($(JACKBRIDGE_DIRECT),true)
LINK_FLAGS += $(JACK_LIBS)
endif

# ---------------------------------------------------------------------------------------------------------------------

TARGETS = $(BINDIR)/carla
TARGETS = carla

# ---------------------------------------------------------------------------------------------------------------------

all: $(UIs) $(RES)

# ---------------------------------------------------------------------------------------------------------------------

# $(BINDIR)/
carla: $(OBJS)
-@mkdir -p $(BINDIR)
@echo "Linking carla"
$(CXX) $(OBJS) $(LIBS_START) $(LIBS) $(LIBS_END) $(LINK_FLAGS) -o $@

carla_settings: $(OBJDIR)/carla_settings.cpp.o $(OBJDIR)/carla_app.cpp.o $(OBJDIR)/carla_shared.cpp.o
-@mkdir -p $(BINDIR)
@echo "Linking carla"
$(CXX) $^ $(LIBS_START) $(LIBS) $(LIBS_END) $(LINK_FLAGS) -o $@

# ---------------------------------------------------------------------------------------------------------------------

moc_%.cpp: %.hpp
$(MOC_QT5) $< -o $@

ui_%.hpp: $(RESDIR)/ui/%.ui
$(UIC_QT5) $< -o $@

ui_%.py: $(RESDIR)/ui/%.ui
$(PYUIC) $< -o $@

resources_rc.hpp: $(RESDIR)/resources.qrc $(RESDIR)/*/*.png $(RESDIR)/*/*.svg
$(RCC_QT5) $< -o $@

resources_rc.py: $(RESDIR)/resources.qrc $(RESDIR)/*/*.png $(RESDIR)/*/*.svg
$(PYRCC) $< -o $@

@@ -100,6 +227,28 @@ $(BINDIR)/resources/%: %

# ---------------------------------------------------------------------------------------------------------------------

$(OBJDIR)/%.cpp.o: %.cpp $(UIs) $(RES)
-@mkdir -p $(OBJDIR)
@echo "Compiling $<"
$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@

$(OBJDIR)/Information.cpp.o: $(CWD)/backend/utils/Information.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling $<"
$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@

$(OBJDIR)/CarlaStandalone.cpp.o: $(CWD)/backend/CarlaStandalone.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling $<"
$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@

$(OBJDIR)/CarlaStandaloneNSM.cpp.o: $(CWD)/backend/CarlaStandaloneNSM.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling $<"
$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@

# ---------------------------------------------------------------------------------------------------------------------

clean:
rm -rf $(UIs) $(RES) __pycache__ *.pyc

@@ -107,3 +256,7 @@ debug:
$(MAKE) DEBUG=true

# ---------------------------------------------------------------------------------------------------------------------

-include $(OBJS:%.o=%.d)

# ---------------------------------------------------------------------------------------------------------------------

source/frontend/C++/carla.cpp → source/frontend/carla.cpp View File


source/frontend/C++/app.cpp → source/frontend/carla_app.cpp View File

@@ -29,8 +29,8 @@
//---------------------------------------------------------------------------------------------------------------------
// Imports (Custom)

#include "app.hpp"
#include "shared.hpp"
#include "carla_app.hpp"
#include "carla_shared.hpp"

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


source/frontend/C++/app.hpp → source/frontend/carla_app.hpp View File

@@ -29,7 +29,7 @@ class QApplication;
//---------------------------------------------------------------------------------------------------------------------
// Imports (Custom)

#include "../../utils/CarlaJuceUtils.hpp"
#include "../utils/CarlaJuceUtils.hpp"

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


source/frontend/C++/host.cpp → source/frontend/carla_host.cpp View File

@@ -42,10 +42,6 @@

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

CarlaObject gCarla;

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

Host::Host()
: isControl(false),
isPlugin(false),

source/frontend/C++/host.hpp → source/frontend/carla_host.hpp View File


+ 83
- 0
source/frontend/carla_settings.cpp View File

@@ -0,0 +1,83 @@
/*
* Carla settings code
* Copyright (C) 2011-2019 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For a full copy of the GNU General Public License see the doc/GPL.txt file.
*/

#include "carla_settings.hpp"

//---------------------------------------------------------------------------------------------------------------------
// Imports (Global)

#include <QtWidgets/QDialog>

//---------------------------------------------------------------------------------------------------------------------
// Imports (Custom)

#include "carla_app.hpp"
#include "carla_shared.hpp"
#include "resources_rc.hpp"

// --------------------------------------------------------------------------------------------------------------------
// Driver Settings

class DriverSettingsW : public QDialog
{
// static const char* const AUTOMATIC_OPTION = "(Auto)";

public:
DriverSettingsW(QWidget* const parent = nullptr)
: QDialog(parent)
{
}
};

// --------------------------------------------------------------------------------------------------------------------
// Main

int main(int argc, char* argv[])
{
// ----------------------------------------------------------------------------------------------------------------
// Read CLI args

const QString initName(handleInitialCommandLineArguments(argc, argv));

// ----------------------------------------------------------------------------------------------------------------
// App initialization

const CarlaApplication app("Carla2-Settings", argc, argv);

// ----------------------------------------------------------------------------------------------------------------
// Init host backend

/*
Host& host = initHost(initName, false, false, true);
loadHostSettings(host);
*/

// ----------------------------------------------------------------------------------------------------------------
// Create GUI

DriverSettingsW gui;

// ----------------------------------------------------------------------------------------------------------------
// Show GUI

gui.show();

// ----------------------------------------------------------------------------------------------------------------
// App-Loop

return app.exec();
}

+ 31
- 0
source/frontend/carla_settings.hpp View File

@@ -0,0 +1,31 @@
/*
* Carla settings code
* Copyright (C) 2011-2019 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For a full copy of the GNU General Public License see the doc/GPL.txt file.
*/

#ifndef CARLA_SETTINGS_HPP_INCLUDED
#define CARLA_SETTINGS_HPP_INCLUDED

//---------------------------------------------------------------------------------------------------------------------
// Imports (Global)

// from PyQt5.QtCore import pyqtSlot, QByteArray, QDir
// from PyQt5.QtGui import QColor, QCursor, QPainter, QPainterPath
// from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QFrame, QInputDialog, QLineEdit, QMenu, QVBoxLayout, QWidget

//---------------------------------------------------------------------------------------------------------------------
// Imports (Custom)

#endif // CARLA_SETTINGS_HPP_INCLUDED

+ 24
- 0
source/frontend/carla_shared.cpp View File

@@ -0,0 +1,24 @@
/*
* Common Carla code
* Copyright (C) 2011-2019 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For a full copy of the GNU General Public License see the doc/GPL.txt file.
*/

#include "carla_shared.hpp"

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

CarlaObject gCarla;

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

source/frontend/C++/shared.hpp → source/frontend/carla_shared.hpp View File

@@ -18,7 +18,7 @@
#ifndef CARLA_SHARED_HPP_INCLUDED
#define CARLA_SHARED_HPP_INCLUDED

#include "../../utils/CarlaUtils.hpp"
#include "../utils/CarlaUtils.hpp"

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

@@ -32,6 +32,7 @@ class QMainWindow;
//---------------------------------------------------------------------------------------------------------------------
// Static MIDI CC list

/*
static const char* const* const MIDI_CC_LIST = {
"0x01 Modulation",
"0x02 Breath",
@@ -85,6 +86,7 @@ static const char* const* const MIDI_CC_LIST = {
"0x5F FX 5 Depth [Phaser]",
nullptr
};
*/

//---------------------------------------------------------------------------------------------------------------------
// Carla Settings keys

+ 1
- 0
source/frontend/carla_widgets.cpp View File

@@ -0,0 +1 @@

+ 1
- 0
source/frontend/carla_widgets.hpp View File

@@ -0,0 +1 @@

+ 581
- 0
source/frontend/patchcanvas/theme.cpp View File

@@ -0,0 +1,581 @@
/*
* PatchBay Canvas Themes
* Copyright (C) 2010-2019 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For a full copy of the GNU General Public License see the doc/GPL.txt file.
*/

#include "theme.hpp"

//---------------------------------------------------------------------------------------------------------------------
// Imports (Global)

#include <QtGui/QColor>
#include <QtGui/QFont>
#include <QtGui/QPen>

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

struct Theme::PrivateData {
const Theme::List idx;

// Canvas
QColor canvas_bg;

// Boxes
QPen box_pen;
QPen box_pen_sel;
QColor box_bg_1;
QColor box_bg_2;
QColor box_shadow;
// box_header_pixmap
int box_header_height;
int box_header_spacing;

QPen box_text;
QPen box_text_sel;
int box_text_ypos;
QString box_font_name;
int box_font_size;
QFont::Weight box_font_state;

BackgroundType box_bg_type;
bool box_use_icon;

// Ports
QPen port_text;
int port_text_ypos = 12;
// port_bg_pixmap = None;
QString port_font_name;
int port_font_size;
QFont::Weight port_font_state;
PortType port_mode;

QPen port_audio_jack_pen;
QPen port_audio_jack_pen_sel;
QPen port_midi_jack_pen;
QPen port_midi_jack_pen_sel;
QPen port_midi_alsa_pen;
QPen port_midi_alsa_pen_sel;
QPen port_parameter_pen;
QPen port_parameter_pen_sel;

QColor port_audio_jack_bg;
QColor port_audio_jack_bg_sel;
QColor port_midi_jack_bg;
QColor port_midi_jack_bg_sel;
QColor port_midi_alsa_bg;
QColor port_midi_alsa_bg_sel;
QColor port_parameter_bg;
QColor port_parameter_bg_sel;

QColor port_audio_jack_text;
QColor port_audio_jack_text_sel;
QColor port_midi_jack_text;
QColor port_midi_jack_text_sel;
QColor port_midi_alsa_text;
QColor port_midi_alsa_text_sel;
QColor port_parameter_text;
QColor port_parameter_text_sel;

int port_height;
int port_offset;
int port_spacing;
int port_spacingT;

// Lines
QColor line_audio_jack;
QColor line_audio_jack_sel;
QColor line_audio_jack_glow;
QColor line_midi_jack;
QColor line_midi_jack_sel;
QColor line_midi_jack_glow;
QColor line_midi_alsa;
QColor line_midi_alsa_sel;
QColor line_midi_alsa_glow;
QColor line_parameter;
QColor line_parameter_sel;
QColor line_parameter_glow;

QPen rubberband_pen;
QColor rubberband_brush;

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

PrivateData(const Theme::List id)
: idx(id)
{
switch (idx)
{
case THEME_MODERN_DARK:
// Canvas
canvas_bg = QColor(0, 0, 0);

// Boxes
box_pen = QPen(QColor(76, 77, 78), 1, Qt::SolidLine);
box_pen_sel = QPen(QColor(206, 207, 208), 1, Qt::DashLine);
box_bg_1 = QColor(32, 34, 35);
box_bg_2 = QColor(43, 47, 48);
box_shadow = QColor(89, 89, 89, 180);
// box_header_pixmap = None;
box_header_height = 24;
box_header_spacing = 0;

box_text = QPen(QColor(240, 240, 240), 0);
box_text_sel = box_text;
box_text_ypos = 16;
box_font_name = "Deja Vu Sans";
box_font_size = 11;
box_font_state = QFont::Bold;

box_bg_type = THEME_BG_GRADIENT;
box_use_icon = true;

// Ports
port_text = QPen(QColor(250, 250, 250), 0);
port_text_ypos = 12;
// port_bg_pixmap = None;
port_font_name = "Deja Vu Sans";
port_font_size = 11;
port_font_state = QFont::Normal;
port_mode = THEME_PORT_POLYGON;

port_audio_jack_pen = QPen(QColor(63, 90, 126), 1);
port_audio_jack_pen_sel = QPen(QColor(63 + 30, 90 + 30, 126 + 30), 1);
port_midi_jack_pen = QPen(QColor(159, 44, 42), 1);
port_midi_jack_pen_sel = QPen(QColor(159 + 30, 44 + 30, 42 + 30), 1);
port_midi_alsa_pen = QPen(QColor(93, 141, 46), 1);
port_midi_alsa_pen_sel = QPen(QColor(93 + 30, 141 + 30, 46 + 30), 1);
port_parameter_pen = QPen(QColor(137, 76, 43), 1);
port_parameter_pen_sel = QPen(QColor(137 + 30, 76 + 30, 43 + 30), 1);

port_audio_jack_bg = QColor(35, 61, 99);
port_audio_jack_bg_sel = QColor(35 + 50, 61 + 50, 99 + 50);
port_midi_jack_bg = QColor(120, 15, 16);
port_midi_jack_bg_sel = QColor(120 + 50, 15 + 50, 16 + 50);
port_midi_alsa_bg = QColor(64, 112, 18);
port_midi_alsa_bg_sel = QColor(64 + 50, 112 + 50, 18 + 50);
port_parameter_bg = QColor(101, 47, 16);
port_parameter_bg_sel = QColor(101 + 50, 47 + 50, 16 + 50);

/*
port_audio_jack_text = port_text;
port_audio_jack_text_sel = port_text;
port_midi_jack_text = port_text;
port_midi_jack_text_sel = port_text;
port_midi_alsa_text = port_text;
port_midi_alsa_text_sel = port_text;
port_parameter_text = port_text;
port_parameter_text_sel = port_text;
*/

port_height = 16;
port_offset = 0;
port_spacing = 2;
port_spacingT = 2;

// Lines
line_audio_jack = QColor(63, 90, 126);
line_audio_jack_sel = QColor(63 + 90, 90 + 90, 126 + 90);
line_audio_jack_glow = QColor(100, 100, 200);
line_midi_jack = QColor(159, 44, 42);
line_midi_jack_sel = QColor(159 + 90, 44 + 90, 42 + 90);
line_midi_jack_glow = QColor(200, 100, 100);
line_midi_alsa = QColor(93, 141, 46);
line_midi_alsa_sel = QColor(93 + 90, 141 + 90, 46 + 90);
line_midi_alsa_glow = QColor(100, 200, 100);
line_parameter = QColor(137, 76, 43);
line_parameter_sel = QColor(137 + 90, 76 + 90, 43 + 90);
line_parameter_glow = QColor(166, 133, 133);

rubberband_pen = QPen(QColor(206, 207, 208), 1, Qt::SolidLine);
rubberband_brush = QColor(76, 77, 78, 100);
break;

#if 0
elif idx == THEME_MODERN_DARK_TINY:
# Canvas
canvas_bg = QColor(0, 0, 0)

# Boxes
box_pen = QPen(QColor(76, 77, 78), 1, Qt::SolidLine)
box_pen_sel = QPen(QColor(206, 207, 208), 1, Qt::DashLine)
box_bg_1 = QColor(32, 34, 35)
box_bg_2 = QColor(43, 47, 48)
box_shadow = QColor(89, 89, 89, 180)
box_header_pixmap = None
box_header_height = 14
box_header_spacing = 0

box_text = QPen(QColor(240, 240, 240), 0)
box_text_sel = ox_text
box_text_ypos = 10
box_font_name = "Deja Vu Sans"
box_font_size = 10
box_font_state = QFont::Bold

box_bg_type = THEME_BG_GRADIENT
box_use_icon = false

# Ports
port_text = QPen(QColor(250, 250, 250), 0)
port_text_ypos = 9
port_bg_pixmap = None
port_font_name = "Deja Vu Sans"
port_font_size = 9
port_font_state = QFont::Normal
port_mode = THEME_PORT_POLYGON

port_audio_jack_pen = QPen(QColor(63, 90, 126), 1)
port_audio_jack_pen_sel = QPen(QColor(63 + 30, 90 + 30, 126 + 30), 1)
port_midi_jack_pen = QPen(QColor(159, 44, 42), 1)
port_midi_jack_pen_sel = QPen(QColor(159 + 30, 44 + 30, 42 + 30), 1)
port_midi_alsa_pen = QPen(QColor(93, 141, 46), 1)
port_midi_alsa_pen_sel = QPen(QColor(93 + 30, 141 + 30, 46 + 30), 1)
port_parameter_pen = QPen(QColor(137, 76, 43), 1)
port_parameter_pen_sel = QPen(QColor(137 + 30, 76 + 30, 43 + 30), 1)

port_audio_jack_bg = QColor(35, 61, 99)
port_audio_jack_bg_sel = QColor(35 + 50, 61 + 50, 99 + 50)
port_midi_jack_bg = QColor(120, 15, 16)
port_midi_jack_bg_sel = QColor(120 + 50, 15 + 50, 16 + 50)
port_midi_alsa_bg = QColor(64, 112, 18)
port_midi_alsa_bg_sel = QColor(64 + 50, 112 + 50, 18 + 50)
port_parameter_bg = QColor(101, 47, 16)
port_parameter_bg_sel = QColor(101 + 50, 47 + 50, 16 + 50)

port_audio_jack_text = port_text
port_audio_jack_text_sel = port_text
port_midi_jack_text = port_text
port_midi_jack_text_sel = port_text
port_midi_alsa_text = port_text
port_midi_alsa_text_sel = port_text
port_parameter_text = port_text
port_parameter_text_sel = port_text

port_height = 12
port_offset = 0
port_spacing = 1
port_spacingT = 1

# Lines
line_audio_jack = QColor(63, 90, 126)
line_audio_jack_sel = QColor(63 + 90, 90 + 90, 126 + 90)
line_audio_jack_glow = QColor(100, 100, 200)
line_midi_jack = QColor(159, 44, 42)
line_midi_jack_sel = QColor(159 + 90, 44 + 90, 42 + 90)
line_midi_jack_glow = QColor(200, 100, 100)
line_midi_alsa = QColor(93, 141, 46)
line_midi_alsa_sel = QColor(93 + 90, 141 + 90, 46 + 90)
line_midi_alsa_glow = QColor(100, 200, 100)
line_parameter = QColor(137, 76, 43)
line_parameter_sel = QColor(137 + 90, 76 + 90, 43 + 90)
line_parameter_glow = QColor(166, 133, 133)

rubberband_pen = QPen(QColor(206, 207, 208), 1, Qt::SolidLine)
rubberband_brush = QColor(76, 77, 78, 100)

elif idx == THEME_MODERN_LIGHT:
# Canvas
canvas_bg = QColor(248, 249, 250)

# Boxes
box_pen = QPen(QColor(176, 177, 178), 1, Qt::SolidLine)
box_pen_sel = QPen(QColor(1, 2, 3), 2, Qt::DashLine)
box_bg_1 = QColor(250, 250, 250)
box_bg_2 = QColor(200, 200, 200)
box_shadow = QColor(1, 1, 1, 100)
box_header_pixmap = None
box_header_height = 24
box_header_spacing = 0

box_text = QPen(QColor(1, 1, 1), 0)
box_text_sel = ox_text
box_text_ypos = 16
box_font_name = "Ubuntu"
box_font_size = 11
box_font_state = QFont::Bold

box_bg_type = THEME_BG_GRADIENT
box_use_icon = True

# Ports
port_text = QPen(QColor(255, 255, 255), 1)
port_text_ypos = 12
port_bg_pixmap = None
port_font_name = "Ubuntu"
port_font_size = 11
port_font_state = QFont::Bold
port_mode = THEME_PORT_POLYGON

port_audio_jack_pen = QPen(QColor(103, 130, 166), 2)
port_audio_jack_pen_sel = QPen(QColor(103 + 136, 190 + 130, 226 + 130), 1)
port_midi_jack_pen = QPen(QColor(159, 44, 42), 1)
port_midi_jack_pen_sel = QPen(QColor(90 + 30, 44 + 30, 42 + 30), 1)
port_midi_alsa_pen = QPen(QColor(93, 141, 46), 1)
port_midi_alsa_pen_sel = QPen(QColor(93 + 30, 141 + 30, 46 + 30), 1)
port_parameter_pen = QPen(QColor(137, 76, 43), 1)
port_parameter_pen_sel = QPen(QColor(137 + 30, 76 + 30, 43 + 30), 1)

port_audio_jack_bg = QColor(0, 0, 180)
port_audio_jack_bg_sel = QColor(135 + 150, 161 + 150, 199 + 150)
port_midi_jack_bg = QColor(130, 15, 16)
port_midi_jack_bg_sel = QColor(90 + 30, 15 + 50, 16 + 50)
port_midi_alsa_bg = QColor(64, 112, 18)
port_midi_alsa_bg_sel = QColor(64 + 50, 112 + 50, 18 + 50)
port_parameter_bg = QColor(101, 47, 16)
port_parameter_bg_sel = QColor(101 + 50, 47 + 50, 16 + 50)

port_audio_jack_text = port_text
port_audio_jack_text_sel = port_text
port_midi_jack_text = port_text
port_midi_jack_text_sel = port_text
port_midi_alsa_text = port_text
port_midi_alsa_text_sel = port_text
port_parameter_text = port_text
port_parameter_text_sel = port_text

port_height = 16
port_offset = 0
port_spacing = 2
port_spacingT = 2

# Lines
line_audio_jack = QColor(63, 90, 126)
line_audio_jack_sel = QColor(63 + 63, 90 + 90, 126 + 90)
line_audio_jack_glow = QColor(100, 100, 200)
line_midi_jack = QColor(159, 44, 42)
line_midi_jack_sel = QColor(159 + 44, 44 + 90, 42 + 90)
line_midi_jack_glow = QColor(200, 100, 100)
line_midi_alsa = QColor(93, 141, 46)
line_midi_alsa_sel = QColor(93 + 90, 141 + 90, 46 + 90)
line_midi_alsa_glow = QColor(100, 200, 100)
line_parameter = QColor(137, 43, 43)
line_parameter_sel = QColor(137 + 90, 76 + 90, 43 + 90)
line_parameter_glow = QColor(166, 133, 133)

rubberband_pen = QPen(QColor(206, 207, 208), 1, Qt::SolidLine)
rubberband_brush = QColor(76, 77, 78, 100)

elif idx == THEME_CLASSIC_DARK:
# Canvas
canvas_bg = QColor(0, 0, 0)

# Boxes
box_pen = QPen(QColor(147 - 70, 151 - 70, 143 - 70), 2, Qt::SolidLine)
box_pen_sel = QPen(QColor(147, 151, 143), 2, Qt::DashLine)
box_bg_1 = QColor(30, 34, 36)
box_bg_2 = QColor(30, 34, 36)
box_shadow = QColor(89, 89, 89, 180)
box_header_pixmap = None
box_header_height = 19
box_header_spacing = 0

box_text = QPen(QColor(255, 255, 255), 0)
box_text_sel = ox_text
box_text_ypos = 12
box_font_name = "Sans"
box_font_size = 12
box_font_state = QFont::Normal

box_bg_type = THEME_BG_GRADIENT
box_use_icon = false

# Ports
port_text = QPen(QColor(250, 250, 250), 0)
port_text_ypos = 11
port_bg_pixmap = None
port_font_name = "Sans"
port_font_size = 11
port_font_state = QFont::Normal
port_mode = THEME_PORT_SQUARE

port_audio_jack_pen = QPen(QColor(35, 61, 99), Qt::NoPen, 0)
port_audio_jack_pen_sel = QPen(QColor(255, 0, 0), Qt::NoPen, 0)
port_midi_jack_pen = QPen(QColor(120, 15, 16), Qt::NoPen, 0)
port_midi_jack_pen_sel = QPen(QColor(255, 0, 0), Qt::NoPen, 0)
port_midi_alsa_pen = QPen(QColor(63, 112, 19), Qt::NoPen, 0)
port_midi_alsa_pen_sel = QPen(QColor(255, 0, 0), Qt::NoPen, 0)
port_parameter_pen = QPen(QColor(101, 47, 17), Qt::NoPen, 0)
port_parameter_pen_sel = QPen(QColor(255, 0, 0), Qt::NoPen, 0)

port_audio_jack_bg = QColor(35, 61, 99)
port_audio_jack_bg_sel = QColor(255, 0, 0)
port_midi_jack_bg = QColor(120, 15, 16)
port_midi_jack_bg_sel = QColor(255, 0, 0)
port_midi_alsa_bg = QColor(63, 112, 19)
port_midi_alsa_bg_sel = QColor(255, 0, 0)
port_parameter_bg = QColor(101, 47, 17)
port_parameter_bg_sel = QColor(255, 0, 0)

port_audio_jack_text = port_text
port_audio_jack_text_sel = port_text
port_midi_jack_text = port_text
port_midi_jack_text_sel = port_text
port_midi_alsa_text = port_text
port_midi_alsa_text_sel = port_text
port_parameter_text = port_text
port_parameter_text_sel = port_text

port_height = 14
port_offset = 0
port_spacing = 1
port_spacingT = 0

# Lines
line_audio_jack = QColor(53, 78, 116)
line_audio_jack_sel = QColor(255, 0, 0)
line_audio_jack_glow = QColor(255, 0, 0)
line_midi_jack = QColor(139, 32, 32)
line_midi_jack_sel = QColor(255, 0, 0)
line_midi_jack_glow = QColor(255, 0, 0)
line_midi_alsa = QColor(81, 130, 36)
line_midi_alsa_sel = QColor(255, 0, 0)
line_midi_alsa_glow = QColor(255, 0, 0)
line_parameter = QColor(120, 65, 33)
line_parameter_sel = QColor(255, 0, 0)
line_parameter_glow = QColor(255, 0, 0)

rubberband_pen = QPen(QColor(147, 151, 143), 2, Qt::SolidLine)
rubberband_brush = QColor(35, 61, 99, 100)

elif idx == THEME_OOSTUDIO:
# Canvas
canvas_bg = QColor(11, 11, 11)

# Boxes
box_pen = QPen(QColor(76, 77, 78), 1, Qt::SolidLine)
box_pen_sel = QPen(QColor(189, 122, 214), 1, Qt::DashLine)
box_bg_1 = QColor(46, 46, 46)
box_bg_2 = QColor(23, 23, 23)
box_shadow = QColor(89, 89, 89, 180)
box_header_pixmap = QPixmap(":/bitmaps/canvas/frame_node_header.png")
box_header_height = 22
box_header_spacing = 6

box_text = QPen(QColor(144, 144, 144), 0)
box_text_sel = QPen(QColor(189, 122, 214), 0)
box_text_ypos = 16
box_font_name = "Deja Vu Sans"
box_font_size = 11
box_font_state = QFont::Bold

box_bg_type = THEME_BG_SOLID
box_use_icon = false

# Ports
normalPortBG = QColor(46, 46, 46)
selPortBG = QColor(23, 23, 23)

port_text = QPen(QColor(155, 155, 155), 0)
port_text_ypos = 14
port_bg_pixmap = QPixmap(":/bitmaps/canvas/frame_port_bg.png")
port_font_name = "Deja Vu Sans"
port_font_size = 11
port_font_state = QFont::Normal
port_mode = THEME_PORT_SQUARE

port_audio_jack_pen = QPen(selPortBG, 2)
port_audio_jack_pen_sel = QPen(QColor(1, 230, 238), 1)
port_midi_jack_pen = QPen(selPortBG, 2)
port_midi_jack_pen_sel = QPen(QColor(252, 118, 118), 1)
port_midi_alsa_pen = QPen(selPortBG, 2)
port_midi_alsa_pen_sel = QPen(QColor(129, 244, 118), 0)
port_parameter_pen = QPen(selPortBG, 2)
port_parameter_pen_sel = QPen(QColor(137, 76, 43), 1)

port_audio_jack_bg = normalPortBG
port_audio_jack_bg_sel = selPortBG
port_midi_jack_bg = normalPortBG
port_midi_jack_bg_sel = selPortBG
port_midi_alsa_bg = normalPortBG
port_midi_alsa_bg_sel = selPortBG
port_parameter_bg = normalPortBG
port_parameter_bg_sel = selPortBG

port_audio_jack_text = port_text
port_audio_jack_text_sel = port_audio_jack_pen_sel
port_midi_jack_text = port_text
port_midi_jack_text_sel = port_midi_jack_pen_sel
port_midi_alsa_text = port_text
port_midi_alsa_text_sel = port_midi_alsa_pen_sel
port_parameter_text = port_text
port_parameter_text_sel = port_parameter_pen_sel

# missing, ports 2
port_height = 21
port_offset = 1
port_spacing = 3
port_spacingT = 0

# Lines
line_audio_jack = QColor(64, 64, 64)
line_audio_jack_sel = QColor(1, 230, 238)
line_audio_jack_glow = QColor(100, 200, 100)
line_midi_jack = QColor(64, 64, 64)
line_midi_jack_sel = QColor(252, 118, 118)
line_midi_jack_glow = QColor(200, 100, 100)
line_midi_alsa = QColor(64, 64, 64)
line_midi_alsa_sel = QColor(129, 244, 118)
line_midi_alsa_glow = QColor(100, 200, 100)
line_parameter = QColor(64, 64, 64)
line_parameter_sel = QColor(137+90, 76+90, 43+90)
line_parameter_glow = QColor(166, 133, 133)

rubberband_pen = QPen(QColor(1, 230, 238), 2, Qt::SolidLine)
rubberband_brush = QColor(90, 90, 90, 100)
#endif

default:
break;
}
}
};

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

Theme::Theme(const Theme::List idx)
: self(new PrivateData(idx)) {}

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

Theme::List getDefaultTheme()
{
return Theme::THEME_MODERN_DARK;
}

const char* getThemeName(const Theme::List idx)
{
switch (idx)
{
case Theme::THEME_MODERN_DARK:
return "Modern Dark";
case Theme::THEME_MODERN_DARK_TINY:
return "Modern Dark (Tiny)";
case Theme::THEME_MODERN_LIGHT:
return "Modern Light";
case Theme::THEME_CLASSIC_DARK:
return "Classic Dark";
case Theme::THEME_OOSTUDIO:
return "OpenOctave Studio";
default:
return "";
}
}

const char* getDefaultThemeName()
{
return "Modern Dark";
}

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

+ 64
- 0
source/frontend/patchcanvas/theme.hpp View File

@@ -0,0 +1,64 @@
/*
* PatchBay Canvas Themes
* Copyright (C) 2010-2019 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For a full copy of the GNU General Public License see the doc/GPL.txt file.
*/

#ifndef CARLA_PATCHBAY_THEME_HPP_INCLUDED
#define CARLA_PATCHBAY_THEME_HPP_INCLUDED

//---------------------------------------------------------------------------------------------------------------------
// Imports (Global)

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

class Theme
{
public:
enum PortType {
THEME_PORT_SQUARE,
THEME_PORT_POLYGON
};

enum List {
THEME_MODERN_DARK,
THEME_MODERN_DARK_TINY,
THEME_MODERN_LIGHT,
THEME_CLASSIC_DARK,
THEME_OOSTUDIO,
THEME_MAX
};

enum BackgroundType {
THEME_BG_SOLID,
THEME_BG_GRADIENT
};

Theme(Theme::List idx);
~Theme();

private:
struct PrivateData;
PrivateData* const self;
};

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

Theme::List getDefaultTheme();
const char* getThemeName(Theme::List idx);
const char* getDefaultThemeName();

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

#endif // CARLA_PATCHBAY_THEME_HPP_INCLUDED

Loading…
Cancel
Save