//*********************************************************************************************** //Impromptu Modular: Modules for VCV Rack by Marc Boulé // //See ./LICENSE.md for all licenses //*********************************************************************************************** #include "../ImpromptuModular/src/comp/PanelTheme.hpp" NVGcolor SCHEME_RED_IM = SCHEME_RED; NVGcolor SCHEME_GREEN_IM = SCHEME_GREEN; void writeThemeAndContrastAsDefault() {} void saveThemeAndContrastAsDefault(int, float) {} void loadThemeAndContrastFromDefault(int* panelTheme, float* panelContrast) { *panelTheme = rack::settings::preferDarkPanels ? 1 : 0; *panelContrast = panelContrastDefault; } bool isDark(int*) { return rack::settings::preferDarkPanels; } void readThemeAndContrastFromDefault() {} void createPanelThemeMenu(ui::Menu*, int*, float*, SvgPanel*) {} void PanelBaseWidget::draw(const DrawArgs& args) { nvgBeginPath(args.vg); NVGcolor baseColor; if (panelContrastSrc) { baseColor = nvgRGB(*panelContrastSrc, *panelContrastSrc, *panelContrastSrc); } else { baseColor = nvgRGB(panelContrastDefault, panelContrastDefault, panelContrastDefault); } nvgFillColor(args.vg, baseColor); nvgRect(args.vg, 0, 0, box.size.x, box.size.y); nvgFill(args.vg); TransparentWidget::draw(args); } void InverterWidget::draw(const DrawArgs& args) { TransparentWidget::draw(args); if (rack::settings::preferDarkPanels) { // nvgSave(args.vg); nvgBeginPath(args.vg); nvgFillColor(args.vg, SCHEME_WHITE);// this is the source, the current framebuffer is the dest nvgRect(args.vg, 0, 0, box.size.x, box.size.y); nvgGlobalCompositeBlendFuncSeparate(args.vg, NVG_ONE_MINUS_DST_COLOR,// srcRGB NVG_ZERO,// dstRGB NVG_ONE_MINUS_DST_COLOR,// srcAlpha NVG_ONE);// dstAlpha // blend factor: https://github.com/memononen/nanovg/blob/master/src/nanovg.h#L86 // OpenGL blend doc: https://www.khronos.org/opengl/wiki/Blending nvgFill(args.vg); nvgClosePath(args.vg); // nvgRestore(args.vg); } }