mirror of
https://github.com/Ardour/ardour.git
synced 2026-01-10 15:36:24 +01:00
add an plugin API to query generic-gui grid-layout
This commit is contained in:
parent
77e50f56f9
commit
db564a03c7
3 changed files with 60 additions and 0 deletions
|
|
@ -79,6 +79,7 @@ class LIBARDOUR_API LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee
|
|||
std::string get_parameter_docs(uint32_t which) const;
|
||||
int get_parameter_descriptor (uint32_t which, ParameterDescriptor&) const;
|
||||
uint32_t nth_parameter (uint32_t port, bool& ok) const;
|
||||
bool get_layout (uint32_t which, UILayoutHint&) const;
|
||||
|
||||
IOPortDescription describe_io_port (DataType dt, bool input, uint32_t id) const;
|
||||
|
||||
|
|
|
|||
|
|
@ -88,6 +88,18 @@ class LIBARDOUR_API Plugin : public PBD::StatefulDestructible, public Latent
|
|||
virtual std::string get_docs () const { return ""; }
|
||||
virtual std::string get_parameter_docs (uint32_t /*which*/) const { return ""; }
|
||||
|
||||
struct UILayoutHint {
|
||||
UILayoutHint ()
|
||||
: x0(-1), x1(-1), y0(-1), y1(-1), knob(false) {}
|
||||
int x0;
|
||||
int x1;
|
||||
int y0;
|
||||
int y1;
|
||||
bool knob;
|
||||
};
|
||||
|
||||
virtual bool get_layout (uint32_t which, UILayoutHint&) const { return false; }
|
||||
|
||||
virtual int get_parameter_descriptor (uint32_t which, ParameterDescriptor&) const = 0;
|
||||
virtual uint32_t nth_parameter (uint32_t which, bool& ok) const = 0;
|
||||
virtual void activate () = 0;
|
||||
|
|
|
|||
|
|
@ -1054,6 +1054,53 @@ LV2Plugin::get_parameter_docs(uint32_t which) const
|
|||
return "";
|
||||
}
|
||||
|
||||
bool
|
||||
LV2Plugin::get_layout (uint32_t which, UILayoutHint& h) const
|
||||
{
|
||||
/// TODO lookup port-properties
|
||||
if (unique_id () != "urn:ardour:a-eq") {
|
||||
return false;
|
||||
}
|
||||
h.knob = true;
|
||||
switch (which) {
|
||||
case 0: h.x0 = 0; h.x1 = 1; h.y0 = 4; h.y1 = 5; break; // Shelf toggle L
|
||||
case 1: h.x0 = 0; h.x1 = 1; h.y0 = 2; h.y1 = 3; break; // Frequency L
|
||||
case 2: h.x0 = 0; h.x1 = 1; h.y0 = 0; h.y1 = 1; break; // Gain L
|
||||
case 19: h.x0 = 0; h.x1 = 1; h.y0 = 5; h.y1 = 6; break; // enable L
|
||||
|
||||
case 3: h.x0 = 1; h.x1 = 3; h.y0 = 2; h.y1 = 3; break; // Frequency 1
|
||||
case 4: h.x0 = 1; h.x1 = 3; h.y0 = 0; h.y1 = 1; break; // Gain 1
|
||||
case 5: h.x0 = 2; h.x1 = 4; h.y0 = 1; h.y1 = 2; break; // Bandwidth 1
|
||||
case 20: h.x0 = 1; h.x1 = 4; h.y0 = 5; h.y1 = 6; break; // enable 1
|
||||
|
||||
case 6: h.x0 = 4; h.x1 = 6; h.y0 = 2; h.y1 = 3; break; // Frequency 2
|
||||
case 7: h.x0 = 4; h.x1 = 6; h.y0 = 0; h.y1 = 1; break; // Gain 2
|
||||
case 8: h.x0 = 5; h.x1 = 7; h.y0 = 1; h.y1 = 2; break; // Bandwidth 2
|
||||
case 21: h.x0 = 4; h.x1 = 7; h.y0 = 5; h.y1 = 6; break; // enable 2
|
||||
|
||||
case 9: h.x0 = 7; h.x1 = 9; h.y0 = 2; h.y1 = 3; break; // Frequency 3
|
||||
case 10: h.x0 = 7; h.x1 = 9; h.y0 = 0; h.y1 = 1; break; // Gain 3
|
||||
case 11: h.x0 = 8; h.x1 = 10; h.y0 = 1; h.y1 = 2; break; // Bandwidth 3
|
||||
case 22: h.x0 = 7; h.x1 = 10; h.y0 = 5; h.y1 = 6; break; // enable 3
|
||||
|
||||
case 12: h.x0 = 10; h.x1 = 12; h.y0 = 2; h.y1 = 3; break; // Frequency 4
|
||||
case 13: h.x0 = 10; h.x1 = 12; h.y0 = 0; h.y1 = 1; break; // Gain 4
|
||||
case 14: h.x0 = 11; h.x1 = 13; h.y0 = 1; h.y1 = 2; break; // Bandwidth 4
|
||||
case 23: h.x0 = 10; h.x1 = 13; h.y0 = 5; h.y1 = 6; break; // enable 4
|
||||
|
||||
case 15: h.x0 = 13; h.x1 = 14; h.y0 = 4; h.y1 = 5; break; // Shelf toggle H
|
||||
case 16: h.x0 = 13; h.x1 = 14; h.y0 = 2; h.y1 = 3; break; // Frequency H
|
||||
case 17: h.x0 = 13; h.x1 = 14; h.y0 = 0; h.y1 = 1; break; // Gain H
|
||||
case 24: h.x0 = 13; h.x1 = 14; h.y0 = 5; h.y1 = 6; break; // enable H
|
||||
|
||||
|
||||
case 18: h.x0 = 14; h.x1 = 15; h.y0 = 4; h.y1 = 6; break; // Master Gain
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
uint32_t
|
||||
LV2Plugin::nth_parameter(uint32_t n, bool& ok) const
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue