You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

57 lines
1.6KB

  1. //***********************************************************************************************
  2. //Impromptu Modular: Modules for VCV Rack by Marc Boulé
  3. //
  4. //See ./LICENSE.md for all licenses
  5. //***********************************************************************************************
  6. #include "../ImpromptuModular/src/comp/PanelTheme.hpp"
  7. void loadThemeAndContrastFromDefault(int* panelTheme, float* panelContrast) {
  8. *panelTheme = 1;
  9. *panelContrast = panelContrastDefault;
  10. }
  11. void createPanelThemeMenu(ui::Menu*, int*, float*, SvgPanel*) {}
  12. void PanelBaseWidget::draw(const DrawArgs& args) {
  13. nvgBeginPath(args.vg);
  14. NVGcolor baseColor;
  15. if (panelContrastSrc) {
  16. baseColor = nvgRGB(*panelContrastSrc, *panelContrastSrc, *panelContrastSrc);
  17. }
  18. else {
  19. baseColor = nvgRGB(panelContrastDefault, panelContrastDefault, panelContrastDefault);
  20. }
  21. nvgFillColor(args.vg, baseColor);
  22. nvgRect(args.vg, 0, 0, box.size.x, box.size.y);
  23. nvgFill(args.vg);
  24. TransparentWidget::draw(args);
  25. }
  26. void InverterWidget::draw(const DrawArgs& args) {
  27. TransparentWidget::draw(args);
  28. {
  29. // nvgSave(args.vg);
  30. nvgBeginPath(args.vg);
  31. nvgFillColor(args.vg, SCHEME_WHITE);// this is the source, the current framebuffer is the dest
  32. nvgRect(args.vg, 0, 0, box.size.x, box.size.y);
  33. nvgGlobalCompositeBlendFuncSeparate(args.vg,
  34. NVG_ONE_MINUS_DST_COLOR,// srcRGB
  35. NVG_ZERO,// dstRGB
  36. NVG_ONE_MINUS_DST_COLOR,// srcAlpha
  37. NVG_ONE);// dstAlpha
  38. // blend factor: https://github.com/memononen/nanovg/blob/master/src/nanovg.h#L86
  39. // OpenGL blend doc: https://www.khronos.org/opengl/wiki/Blending
  40. nvgFill(args.vg);
  41. nvgClosePath(args.vg);
  42. // nvgRestore(args.vg);
  43. }
  44. }