diff --git a/src/app/ModuleWidget.cpp b/src/app/ModuleWidget.cpp index 9ea69c91..a5f1418d 100644 --- a/src/app/ModuleWidget.cpp +++ b/src/app/ModuleWidget.cpp @@ -16,6 +16,7 @@ #include #include #include +#include namespace rack { @@ -228,6 +229,7 @@ void ModuleWidget::draw(const DrawArgs& args) { // nvgFill(args.vg); // Draw time plot + const float plotHeight = box.size.y - BND_WIDGET_HEIGHT; nvgBeginPath(args.vg); nvgMoveTo(args.vg, 0.0, box.size.y); math::Vec p1; @@ -236,7 +238,7 @@ void ModuleWidget::draw(const DrawArgs& args) { float meter = math::clamp(meterBuffer[index] * sampleRate, 0.f, 1.f); math::Vec p; p.x = (float) i / (meterLength - 1) * box.size.x; - p.y = (1.f - meter) * box.size.y; + p.y = (1.f - meter) * plotHeight; if (i == 0) { nvgLineTo(args.vg, VEC_ARGS(p)); } @@ -250,18 +252,29 @@ void ModuleWidget::draw(const DrawArgs& args) { } nvgLineTo(args.vg, box.size.x, box.size.y); nvgClosePath(args.vg); - NVGcolor color = nvgRGBAf(0.5, 0.5, 0.5, 1.0); - nvgFillColor(args.vg, color::alpha(color, 0.5)); + NVGcolor color = componentlibrary::SCHEME_ORANGE; + nvgFillColor(args.vg, color::alpha(color, 0.75)); nvgFill(args.vg); nvgStrokeWidth(args.vg, 2.0); nvgStrokeColor(args.vg, color); nvgStroke(args.vg); + // Text background + bndMenuBackground(args.vg, 0.0, plotHeight, box.size.x, BND_WIDGET_HEIGHT, BND_CORNER_ALL); + // Text float percent = meterBuffer[meterIndex] * sampleRate * 100.f; float microseconds = meterBuffer[meterIndex] * 1e6f; - std::string meterText = string::f("%.2f μs/sample %.1f%%", microseconds, percent); - bndLabel(args.vg, box.size.x - 130.0, 0.0, INFINITY, INFINITY, -1, meterText.c_str()); + std::string meterText; + if (box.size.x >= RACK_GRID_WIDTH * 9) + meterText = string::f("%.2f μs/sample %.1f%%", microseconds, percent); + else if (box.size.x >= RACK_GRID_WIDTH * 6) + meterText = string::f("%.2f μs %.1f%%", microseconds, percent); + else + meterText = string::f("%.1f%%", percent); + + float x = box.size.x - bndLabelWidth(args.vg, -1, meterText.c_str()); + bndMenuLabel(args.vg, x, plotHeight, INFINITY, BND_WIDGET_HEIGHT, -1, meterText.c_str()); } // Selection