diff --git a/plugins/editor/src/editor/EditIds.h b/plugins/editor/src/editor/EditIds.h index facb6a13..19016456 100644 --- a/plugins/editor/src/editor/EditIds.h +++ b/plugins/editor/src/editor/EditIds.h @@ -44,6 +44,8 @@ enum class EditId : int { UINumActiveVoices, UIActivePanel, // + BackgroundImage, + // #undef KEY_RANGE #undef CC_RANGE }; diff --git a/plugins/editor/src/editor/Editor.cpp b/plugins/editor/src/editor/Editor.cpp index 6c2af261..25108200 100644 --- a/plugins/editor/src/editor/Editor.cpp +++ b/plugins/editor/src/editor/Editor.cpp @@ -443,6 +443,12 @@ void Editor::Impl::uiReceiveValue(EditId id, const EditValue& v) setActivePanel(value); } break; + case EditId::BackgroundImage: + { + const std::string& value = v.to_string(); + updateBackgroundImage(value.c_str()); + } + break; default: if (editIdIsKey(id)) { const int key = keyForEditId(id); @@ -1541,10 +1547,7 @@ void Editor::Impl::updateSWLastLabel(unsigned sw, const char* label) void Editor::Impl::updateBackgroundImage(const char* filepath) { - const fs::path sfzFilePath = fs::u8path(currentSfzFile_); - const fs::path sfzDirPath = sfzFilePath.parent_path(); - const fs::path imagePath = sfzDirPath / fs::u8path(filepath); - SharedPointer bitmap = loadAnyFormatImage(imagePath); + SharedPointer bitmap = loadAnyFormatImage(filepath); if (!bitmap) bitmap = owned(new CBitmap("background.png")); diff --git a/plugins/lv2/sfizz_ui.cpp b/plugins/lv2/sfizz_ui.cpp index 68c846b7..d6073939 100644 --- a/plugins/lv2/sfizz_ui.cpp +++ b/plugins/lv2/sfizz_ui.cpp @@ -46,6 +46,7 @@ #include #include #include +#include #include #include #include @@ -379,6 +380,10 @@ sfizz_ui_update_description(sfizz_ui_t *self, const InstrumentDescription& desc) self->uiReceiveValue(EditId::UINumRegions, desc.numRegions); self->uiReceiveValue(EditId::UINumPreloadedSamples, desc.numSamples); + const fs::path rootPath = fs::u8path(desc.rootPath); + const fs::path imagePath = rootPath / fs::u8path(desc.image); + self->uiReceiveValue(EditId::BackgroundImage, imagePath.u8string()); + for (unsigned key = 0; key < 128; ++key) { bool keyUsed = desc.keyUsed.test(key); bool keyswitchUsed = desc.keyswitchUsed.test(key); diff --git a/plugins/vst/SfizzVstEditor.cpp b/plugins/vst/SfizzVstEditor.cpp index 7bb7cfc5..decc6f43 100644 --- a/plugins/vst/SfizzVstEditor.cpp +++ b/plugins/vst/SfizzVstEditor.cpp @@ -16,6 +16,7 @@ #if !defined(__APPLE__) && !defined(_WIN32) #include "X11RunLoop.h" #endif +#include using namespace VSTGUI; @@ -203,6 +204,10 @@ void PLUGIN_API SfizzVstEditor::update(FUnknown* changedUnknown, int32 message) uiReceiveValue(EditId::UINumRegions, desc.numRegions); uiReceiveValue(EditId::UINumPreloadedSamples, desc.numSamples); + const fs::path rootPath = fs::u8path(desc.rootPath); + const fs::path imagePath = rootPath / fs::u8path(desc.image); + uiReceiveValue(EditId::BackgroundImage, imagePath.u8string()); + for (unsigned key = 0; key < 128; ++key) { bool keyUsed = desc.keyUsed.test(key); bool keyswitchUsed = desc.keyswitchUsed.test(key);