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. */ /** Manages an engine::Param on a ModuleWidget. */
struct ParamWidget : widget::OpaqueWidget { struct ParamWidget : widget::OpaqueWidget {
engine::Module* module = NULL; engine::Module* module = NULL;
int paramId = 0;
int paramId;


ui::Tooltip* tooltip = NULL; ui::Tooltip* tooltip = NULL;
/** For triggering the Change event. `*/ /** 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. */ /** Manages an engine::Port on a ModuleWidget. */
struct PortWidget : widget::OpaqueWidget { struct PortWidget : widget::OpaqueWidget {
engine::Module* module = NULL; engine::Module* module = NULL;
engine::Port::Type type = engine::Port::INPUT;
int portId = 0;
engine::Port::Type type;
int portId;


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


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

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


/** DSP processor instance for your module. */ /** DSP processor instance for your module. */
struct 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. Assigned when added to the engine.
*/ */
int id = -1; int id = -1;
@@ -120,12 +121,16 @@ struct Module {
paramQuantities[paramId] = q; paramQuantities[paramId] = q;
} }


template <class TPortInfo = PortInfo>
void configInput(int portId, std::string name = "") { void configInput(int portId, std::string name = "") {
assert(portId < (int) inputs.size() && portId < (int) inputInfos.size()); assert(portId < (int) inputs.size() && portId < (int) inputInfos.size());
if (inputInfos[portId]) if (inputInfos[portId])
delete 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 == "") if (name == "")
p->name = string::f("#%d", portId + 1); p->name = string::f("#%d", portId + 1);
else else
@@ -133,12 +138,16 @@ struct Module {
inputInfos[portId] = p; inputInfos[portId] = p;
} }


template <class TPortInfo = PortInfo>
void configOutput(int portId, std::string name = "") { void configOutput(int portId, std::string name = "") {
assert(portId < (int) outputs.size() && portId < (int) outputInfos.size()); assert(portId < (int) outputs.size() && portId < (int) outputInfos.size());
if (outputInfos[portId]) if (outputInfos[portId])
delete 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 == "") if (name == "")
p->name = string::f("#%d", portId + 1); p->name = string::f("#%d", portId + 1);
else else


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

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


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


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

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




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

/** The name of the port, using sentence capitalization. /** The name of the port, using sentence capitalization.
e.g. "Sine", "Pitch input", "Mode CV" e.g. "Sine", "Pitch input", "Mode CV"
*/ */
std::string name; std::string name;
/** An optional one-sentence description of the parameter. */ /** An optional one-sentence description of the parameter. */
std::string description; 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 // Label
text = (portWidget->type == engine::Port::INPUT) ? "Input" : "Output"; text = (portWidget->type == engine::Port::INPUT) ? "Input" : "Output";
text += ": "; text += ": ";
text += portInfo->name;
text += portInfo->getName();
// Voltage, number of channels // Voltage, number of channels
int channels = port->getChannels(); int channels = port->getChannels();
for (int i = 0; i < channels; i++) { for (int i = 0; i < channels; i++) {
@@ -33,7 +33,7 @@ struct PortTooltip : ui::Tooltip {
text += string::f("% .3fV", port->getVoltage(i)); text += string::f("% .3fV", port->getVoltage(i));
} }
// Description // Description
std::string description = portInfo->description;
std::string description = portInfo->getDescription();
if (description != "") { if (description != "") {
text += "\n"; text += "\n";
text += description; text += description;
@@ -48,7 +48,7 @@ struct PortTooltip : ui::Tooltip {
text += "Connected to "; text += "Connected to ";
text += otherPw->module->model->getFullName(); text += otherPw->module->model->getFullName();
text += ": "; text += ": ";
text += otherPw->getPortInfo()->name;
text += otherPw->getPortInfo()->getName();
} }
} }
Tooltip::step(); Tooltip::step();


Loading…
Cancel
Save