Browse Source

Added plug lights (but commented out)

tags/v0.4.0
Andrew Belt 7 years ago
parent
commit
45e7c5f0b0
3 changed files with 49 additions and 10 deletions
  1. +5
    -2
      include/app.hpp
  2. +12
    -7
      include/components.hpp
  3. +32
    -1
      src/app/WireWidget.cpp

+ 5
- 2
include/app.hpp View File

@@ -66,11 +66,14 @@ struct ModuleWidget : OpaqueWidget {
void onMouseDownOpaque(int button); void onMouseDownOpaque(int button);
}; };


struct ValueLight;
struct WireWidget : OpaqueWidget { struct WireWidget : OpaqueWidget {
Port *inputPort = NULL;
Port *outputPort = NULL; Port *outputPort = NULL;
Port *hoveredInputPort = NULL;
Port *inputPort = NULL;
Port *hoveredOutputPort = NULL; Port *hoveredOutputPort = NULL;
Port *hoveredInputPort = NULL;
ValueLight *inputLight;
ValueLight *outputLight;
Wire *wire = NULL; Wire *wire = NULL;
NVGcolor color; NVGcolor color;




+ 12
- 7
include/components.hpp View File

@@ -389,13 +389,18 @@ struct CL1362Port : SVGPort {
//////////////////// ////////////////////


struct ValueLight : Light { struct ValueLight : Light {
float *value;
float *value = NULL;
virtual void setValue(float v) {}
void step() {
if (value)
setValue(*value);
}
}; };


struct ColorValueLight : ValueLight { struct ColorValueLight : ValueLight {
NVGcolor baseColor; NVGcolor baseColor;
void step() {
float v = sqrtBipolar(getf(value));
void setValue(float v) {
v = sqrtBipolar(v);
color = baseColor; color = baseColor;
color.a = clampf(v, 0.0, 1.0); color.a = clampf(v, 0.0, 1.0);
} }
@@ -422,8 +427,8 @@ struct GreenValueLight : ColorValueLight {
struct PolarityLight : ValueLight { struct PolarityLight : ValueLight {
NVGcolor posColor; NVGcolor posColor;
NVGcolor negColor; NVGcolor negColor;
void step() {
float v = sqrtBipolar(getf(value));
void setValue(float v) {
v = sqrtBipolar(v);
color = (v >= 0.0) ? posColor : negColor; color = (v >= 0.0) ? posColor : negColor;
color.a = clampf(fabsf(v), 0.0, 1.0); color.a = clampf(fabsf(v), 0.0, 1.0);
} }
@@ -438,8 +443,8 @@ struct GreenRedPolarityLight : PolarityLight {


struct ModeValueLight : ValueLight { struct ModeValueLight : ValueLight {
std::vector<NVGcolor> colors; std::vector<NVGcolor> colors;
void step() {
int mode = clampi((int)roundf(getf(value)), 0, colors.size());
void setValue(float v) {
int mode = clampi((int)roundf(v), 0, colors.size());
color = colors[mode]; color = colors[mode];
} }
void addColor(NVGcolor color) { void addColor(NVGcolor color) {


+ 32
- 1
src/app/WireWidget.cpp View File

@@ -1,5 +1,6 @@
#include "app.hpp" #include "app.hpp"
#include "engine.hpp" #include "engine.hpp"
#include "components.hpp"




namespace rack { namespace rack {
@@ -84,6 +85,17 @@ static int lastWireColorId = -1;
WireWidget::WireWidget() { WireWidget::WireWidget() {
lastWireColorId = (lastWireColorId + 1) % 6; lastWireColorId = (lastWireColorId + 1) % 6;
color = wireColors[lastWireColorId]; color = wireColors[lastWireColorId];

PolarityLight *inputPolarityLight = new MediumLight<PolarityLight>();
PolarityLight *outputPolarityLight = new MediumLight<PolarityLight>();
outputPolarityLight->posColor = inputPolarityLight->posColor = COLOR_GREEN;
outputPolarityLight->negColor = inputPolarityLight->negColor = COLOR_RED;

inputLight = inputPolarityLight;
outputLight = outputPolarityLight;
addChild(inputLight);
addChild(outputLight);

} }


WireWidget::~WireWidget() { WireWidget::~WireWidget() {
@@ -157,8 +169,27 @@ void WireWidget::draw(NVGcontext *vg) {


void WireWidget::drawPlugs(NVGcontext *vg) { void WireWidget::drawPlugs(NVGcontext *vg) {
// TODO Figure out a way to draw plugs first and wires last, and cut the plug portion of the wire off. // TODO Figure out a way to draw plugs first and wires last, and cut the plug portion of the wire off.
drawPlug(vg, getOutputPos(), color);
Vec outputPos = getOutputPos();
Vec inputPos = getInputPos();
drawPlug(vg, outputPos, color);
drawPlug(vg, getInputPos(), color); drawPlug(vg, getInputPos(), color);

// Draw plug light
/*
if (wire) {
Output &output = wire->outputModule->outputs[wire->outputId];
float value = output.value / 10.0;
outputLight->box.pos = outputPos.minus(Vec(6, 6));
inputLight->box.pos = inputPos.minus(Vec(6, 6));
outputLight->setValue(value);
inputLight->setValue(value);
}
else {
outputLight->setValue(0.0);
inputLight->setValue(0.0);
}
Widget::draw(vg);
*/
} }






Loading…
Cancel
Save