summaryrefslogtreecommitdiff
path: root/libs/ardour/lv2_plugin.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2019-08-26 18:57:47 +0200
committerRobin Gareus <robin@gareus.org>2019-08-26 18:57:47 +0200
commit80e30ea0d19815925492ac736c6e87384bfc2c55 (patch)
treee6004fd44211d6890022bb1c2aeffe2c73e2c8e6 /libs/ardour/lv2_plugin.cc
parente286cce3991ad650ccdac3bc4c283afe24e4618b (diff)
LV2 options for UI theme
Inform plugins about host theme (fg, bg colors) and UI scale-factor. The latter follows an implementation already present in Carla and DPF. These extension use proposed official URLs.
Diffstat (limited to 'libs/ardour/lv2_plugin.cc')
-rw-r--r--libs/ardour/lv2_plugin.cc15
1 files changed, 13 insertions, 2 deletions
diff --git a/libs/ardour/lv2_plugin.cc b/libs/ardour/lv2_plugin.cc
index 140c5f5d1f..48e3901ecc 100644
--- a/libs/ardour/lv2_plugin.cc
+++ b/libs/ardour/lv2_plugin.cc
@@ -128,7 +128,10 @@ using namespace std;
using namespace ARDOUR;
using namespace PBD;
-bool LV2Plugin::force_state_save = false;
+bool LV2Plugin::force_state_save = false;
+uint32_t LV2Plugin::_ui_background_color = 0x000000ff; // RGBA
+uint32_t LV2Plugin::_ui_foreground_color = 0xffffffff; // RGBA
+float LV2Plugin::_ui_scale_factor = 1.0;
class LV2World : boost::noncopyable {
public:
@@ -501,7 +504,9 @@ LV2Plugin::init(const void* c_plugin, samplecnt_t rate)
_features[n_features++] = &_bankpatch_feature;
#endif
- LV2_URID atom_Int = _uri_map.uri_to_id(LV2_ATOM__Int);
+ LV2_URID atom_Int = _uri_map.uri_to_id(LV2_ATOM__Int);
+ LV2_URID atom_Float = _uri_map.uri_to_id(LV2_ATOM__Float);
+
static const int32_t _min_block_length = 1; // may happen during split-cycles
static const int32_t _max_block_length = 8192; // max possible (with all engines and during export)
static const int32_t rt_policy = PBD_SCHED_FIFO;
@@ -526,6 +531,12 @@ LV2Plugin::init(const void* c_plugin, samplecnt_t rate)
sizeof(int32_t), atom_Int, &rt_policy },
{ LV2_OPTIONS_INSTANCE, 0, _uri_map.uri_to_id("http://ardour.org/lv2/threads/#schedPriority"),
sizeof(int32_t), atom_Int, &rt_priority },
+ { LV2_OPTIONS_INSTANCE, 0, _uri_map.uri_to_id("http://lv2plug.in/ns/extensions/ui#backgroundColor"),
+ sizeof(int32_t), atom_Int, &_ui_background_color },
+ { LV2_OPTIONS_INSTANCE, 0, _uri_map.uri_to_id("http://lv2plug.in/ns/extensions/ui#foregroundColor"),
+ sizeof(int32_t), atom_Int, &_ui_foreground_color },
+ { LV2_OPTIONS_INSTANCE, 0, _uri_map.uri_to_id("http://lv2plug.in/ns/extensions/ui#scaleFactor"),
+ sizeof(int32_t), atom_Float, &_ui_scale_factor },
{ LV2_OPTIONS_INSTANCE, 0, 0, 0, 0, NULL }
};