Browse Source

Make PortInfo a virtual class.

tags/v2.0.0
Andrew Belt 5 years ago
parent
commit
ae19e33774
6 changed files with 27 additions and 10 deletions
  1. +1
    -1
      include/app/ParamWidget.hpp
  2. +2
    -2
      include/app/PortWidget.hpp
  3. +12
    -3
      include/engine/Module.hpp
  4. +1
    -1
      include/engine/ParamQuantity.hpp
  5. +8
    -0
      include/engine/PortInfo.hpp
  6. +3
    -3
      src/app/PortWidget.cpp

+ 1
- 1
include/app/ParamWidget.hpp View File

@@ -13,7 +13,7 @@ namespace app {
/** Manages an engine::Param on a ModuleWidget. */
struct ParamWidget : widget::OpaqueWidget {
engine::Module* module = NULL;
int paramId = 0;
int paramId;

ui::Tooltip* tooltip = NULL;
/** For triggering the Change event. `*/


+ 2
- 2
include/app/PortWidget.hpp View File

@@ -14,8 +14,8 @@ namespace app {
/** Manages an engine::Port on a ModuleWidget. */
struct PortWidget : widget::OpaqueWidget {
engine::Module* module = NULL;
engine::Port::Type type = engine::Port::INPUT;
int portId = 0;
engine::Port::Type type;
int portId;

ui::Tooltip* tooltip = NULL;
bool hovered = false;


+ 12
- 3
include/engine/Module.hpp View File

@@ -24,7 +24,8 @@ namespace engine {

/** DSP processor instance for your module. */
struct Module {
plugin::Model* model = NULL; /** Unique ID for referring to the module in the engine.
plugin::Model* model = NULL;
/** Unique ID for referring to the module in the engine.
Assigned when added to the engine.
*/
int id = -1;
@@ -120,12 +121,16 @@ struct Module {
paramQuantities[paramId] = q;
}

template <class TPortInfo = PortInfo>
void configInput(int portId, std::string name = "") {
assert(portId < (int) inputs.size() && portId < (int) inputInfos.size());
if (inputInfos[portId])
delete inputInfos[portId];

PortInfo* p = new PortInfo;
PortInfo* p = new TPortInfo;
p->module = this;
p->type = Port::INPUT;
p->portId = portId;
if (name == "")
p->name = string::f("#%d", portId + 1);
else
@@ -133,12 +138,16 @@ struct Module {
inputInfos[portId] = p;
}

template <class TPortInfo = PortInfo>
void configOutput(int portId, std::string name = "") {
assert(portId < (int) outputs.size() && portId < (int) outputInfos.size());
if (outputInfos[portId])
delete outputInfos[portId];

PortInfo* p = new PortInfo;
PortInfo* p = new TPortInfo;
p->module = this;
p->type = Port::OUTPUT;
p->portId = portId;
if (name == "")
p->name = string::f("#%d", portId + 1);
else


+ 1
- 1
include/engine/ParamQuantity.hpp View File

@@ -13,7 +13,7 @@ struct Module;
/** A Quantity that wraps an engine::Param. */
struct ParamQuantity : Quantity {
Module* module = NULL;
int paramId = 0;
int paramId;

/** The minimum allowed value. */
float minValue = 0.f;


+ 8
- 0
include/engine/PortInfo.hpp View File

@@ -8,12 +8,20 @@ namespace engine {


struct PortInfo {
Module* module = NULL;
Port::Type type;
int portId;

/** The name of the port, using sentence capitalization.
e.g. "Sine", "Pitch input", "Mode CV"
*/
std::string name;
/** An optional one-sentence description of the parameter. */
std::string description;

virtual ~PortInfo() {}
virtual std::string getName() {return name;}
virtual std::string getDescription() {return description;}
};




+ 3
- 3
src/app/PortWidget.cpp View File

@@ -22,7 +22,7 @@ struct PortTooltip : ui::Tooltip {
// Label
text = (portWidget->type == engine::Port::INPUT) ? "Input" : "Output";
text += ": ";
text += portInfo->name;
text += portInfo->getName();
// Voltage, number of channels
int channels = port->getChannels();
for (int i = 0; i < channels; i++) {
@@ -33,7 +33,7 @@ struct PortTooltip : ui::Tooltip {
text += string::f("% .3fV", port->getVoltage(i));
}
// Description
std::string description = portInfo->description;
std::string description = portInfo->getDescription();
if (description != "") {
text += "\n";
text += description;
@@ -48,7 +48,7 @@ struct PortTooltip : ui::Tooltip {
text += "Connected to ";
text += otherPw->module->model->getFullName();
text += ": ";
text += otherPw->getPortInfo()->name;
text += otherPw->getPortInfo()->getName();
}
}
Tooltip::step();


Loading…
Cancel
Save