From 9561ca8af147a18b5e851b907688f3b34c289147 Mon Sep 17 00:00:00 2001 From: Andrew Belt Date: Mon, 8 Nov 2021 13:55:58 -0500 Subject: [PATCH] Refactor VizDisplay. --- src/Viz.cpp | 57 ++++++++++++++++++++++++++++++++++------------------- 1 file changed, 37 insertions(+), 20 deletions(-) diff --git a/src/Viz.cpp b/src/Viz.cpp index f3ddbc4..c1fb0fc 100644 --- a/src/Viz.cpp +++ b/src/Viz.cpp @@ -45,32 +45,49 @@ struct Viz : Module { struct VizDisplay : LedDisplay { Viz* module; - VizDisplay() { - box.size = mm2px(Vec(15.24, 88.126)); - } - void drawLayer(const DrawArgs& args, int layer) override { if (layer == 1) { + static const std::vector posY = { + mm2px(18.068 - 13.039), + mm2px(23.366 - 13.039), + mm2px(28.663 - 13.039), + mm2px(33.961 - 13.039), + mm2px(39.258 - 13.039), + mm2px(44.556 - 13.039), + mm2px(49.919 - 13.039), + mm2px(55.217 - 13.039), + mm2px(60.514 - 13.039), + mm2px(65.812 - 13.039), + mm2px(71.109 - 13.039), + mm2px(76.473 - 13.039), + mm2px(81.771 - 13.039), + mm2px(87.068 - 13.039), + mm2px(92.366 - 13.039), + mm2px(97.663 - 13.039), + }; + + std::string fontPath = asset::system("res/fonts/Nunito-Bold.ttf"); + std::shared_ptr font = APP->window->loadFont(fontPath); + if (!font) + return; + + nvgSave(args.vg); + nvgFontFaceId(args.vg, font->handle); + nvgFontSize(args.vg, 11); + nvgTextLetterSpacing(args.vg, 0.0); + nvgTextAlign(args.vg, NVG_ALIGN_CENTER | NVG_ALIGN_MIDDLE); + for (int c = 0; c < 16; c++) { - Vec p = Vec(15, 16 + (float) c / 16 * (box.size.y - 10)); + if (!module || c < module->lastChannel) + nvgFillColor(args.vg, nvgRGB(255, 255, 255)); + else + nvgFillColor(args.vg, nvgRGB(99, 99, 99)); std::string text = string::f("%d", c + 1); - std::string fontPath = asset::system("res/fonts/Nunito-Bold.ttf"); - std::shared_ptr font = APP->window->loadFont(fontPath); - - if (font) { - nvgFontFaceId(args.vg, font->handle); - nvgFontSize(args.vg, 11); - nvgTextLetterSpacing(args.vg, 0.0); - nvgTextAlign(args.vg, NVG_ALIGN_CENTER | NVG_ALIGN_BASELINE); - if (module && c < module->lastChannel) - nvgFillColor(args.vg, nvgRGB(255, 255, 255)); - else - nvgFillColor(args.vg, nvgRGB(99, 99, 99)); - nvgText(args.vg, p.x, p.y, text.c_str(), NULL); - } + nvgText(args.vg, 36.0, posY[c], text.c_str(), NULL); } + nvgRestore(args.vg); } - Widget::drawLayer(args, layer); + LedDisplay::drawLayer(args, layer); } };