#include #include namespace rack { namespace app { void LightWidget::draw(const DrawArgs& args) { drawLight(args); drawHalo(args); TransparentWidget::draw(args); } void LightWidget::drawLight(const DrawArgs& args) { float radius = std::min(box.size.x, box.size.y) / 2.0; nvgBeginPath(args.vg); nvgCircle(args.vg, radius, radius, radius); // Background if (bgColor.a > 0.0) { nvgFillColor(args.vg, bgColor); nvgFill(args.vg); } // Foreground if (color.a > 0.0) { nvgFillColor(args.vg, color); nvgFill(args.vg); } // Border if (borderColor.a > 0.0) { nvgStrokeWidth(args.vg, 0.5); nvgStrokeColor(args.vg, borderColor); nvgStroke(args.vg); } } void LightWidget::drawHalo(const DrawArgs& args) { // Halo is now deprecated // float radius = std::min(box.size.x, box.size.y) / 2.0; // float oradius = 4.0 * radius; // nvgBeginPath(args.vg); // nvgRect(args.vg, radius - oradius, radius - oradius, 2 * oradius, 2 * oradius); // NVGpaint paint; // NVGcolor icol = color::mult(color, 0.04); // NVGcolor ocol = nvgRGB(0, 0, 0); // paint = nvgRadialGradient(args.vg, radius, radius, radius, oradius, icol, ocol); // nvgFillPaint(args.vg, paint); // nvgGlobalCompositeOperation(args.vg, NVG_LIGHTER); // nvgFill(args.vg); } } // namespace app } // namespace rack