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.

144 lines
3.2KB

  1. #include <rack.hpp>
  2. using namespace rack;
  3. extern Plugin* pluginInstance;
  4. extern Model* modelVCO;
  5. extern Model* modelVCO2;
  6. extern Model* modelVCF;
  7. extern Model* modelVCA_1;
  8. extern Model* modelVCA;
  9. extern Model* modelLFO;
  10. extern Model* modelLFO2;
  11. extern Model* modelDelay;
  12. extern Model* modelADSR;
  13. extern Model* modelMixer;
  14. extern Model* modelVCMixer;
  15. extern Model* model_8vert;
  16. extern Model* modelUnity;
  17. extern Model* modelMutes;
  18. extern Model* modelPulses;
  19. extern Model* modelScope;
  20. extern Model* modelSEQ3;
  21. extern Model* modelSequentialSwitch1;
  22. extern Model* modelSequentialSwitch2;
  23. extern Model* modelOctave;
  24. extern Model* modelQuantizer;
  25. extern Model* modelSplit;
  26. extern Model* modelMerge;
  27. extern Model* modelSum;
  28. extern Model* modelViz;
  29. extern Model* modelMidSide;
  30. extern Model* modelNoise;
  31. extern Model* modelRandom;
  32. extern Model* modelCVMix;
  33. extern Model* modelFade;
  34. extern Model* modelLogic;
  35. extern Model* modelCompare;
  36. extern Model* modelGates;
  37. extern Model* modelProcess;
  38. extern Model* modelMult;
  39. extern Model* modelRescale;
  40. extern Model* modelRandomValues;
  41. extern Model* modelPush;
  42. extern Model* modelSHASR;
  43. struct DigitalDisplay : Widget {
  44. std::string fontPath;
  45. std::string bgText;
  46. std::string text;
  47. float fontSize;
  48. NVGcolor bgColor = nvgRGB(0x46,0x46, 0x46);
  49. NVGcolor fgColor = SCHEME_YELLOW;
  50. Vec textPos;
  51. void prepareFont(const DrawArgs& args) {
  52. // Get font
  53. std::shared_ptr<Font> font = APP->window->loadFont(fontPath);
  54. if (!font)
  55. return;
  56. nvgFontFaceId(args.vg, font->handle);
  57. nvgFontSize(args.vg, fontSize);
  58. nvgTextLetterSpacing(args.vg, 0.0);
  59. nvgTextAlign(args.vg, NVG_ALIGN_RIGHT);
  60. }
  61. void draw(const DrawArgs& args) override {
  62. // Background
  63. nvgBeginPath(args.vg);
  64. nvgRoundedRect(args.vg, 0, 0, box.size.x, box.size.y, 2);
  65. nvgFillColor(args.vg, nvgRGB(0x19, 0x19, 0x19));
  66. nvgFill(args.vg);
  67. prepareFont(args);
  68. // Background text
  69. nvgFillColor(args.vg, bgColor);
  70. nvgText(args.vg, textPos.x, textPos.y, bgText.c_str(), NULL);
  71. }
  72. void drawLayer(const DrawArgs& args, int layer) override {
  73. if (layer == 1) {
  74. prepareFont(args);
  75. // Foreground text
  76. nvgFillColor(args.vg, fgColor);
  77. nvgText(args.vg, textPos.x, textPos.y, text.c_str(), NULL);
  78. }
  79. Widget::drawLayer(args, layer);
  80. }
  81. };
  82. struct ChannelDisplay : DigitalDisplay {
  83. ChannelDisplay() {
  84. fontPath = asset::system("res/fonts/DSEG7ClassicMini-BoldItalic.ttf");
  85. textPos = Vec(22, 20);
  86. bgText = "18";
  87. fontSize = 16;
  88. }
  89. };
  90. template <typename TBase = GrayModuleLightWidget>
  91. struct YellowRedLight : TBase {
  92. YellowRedLight() {
  93. this->addBaseColor(SCHEME_YELLOW);
  94. this->addBaseColor(SCHEME_RED);
  95. }
  96. };
  97. template <typename TBase = GrayModuleLightWidget>
  98. struct YellowBlueLight : TBase {
  99. YellowBlueLight() {
  100. this->addBaseColor(SCHEME_YELLOW);
  101. this->addBaseColor(SCHEME_BLUE);
  102. }
  103. };
  104. struct VCVBezelBig : app::SvgSwitch {
  105. VCVBezelBig() {
  106. momentary = true;
  107. addFrame(Svg::load(asset::plugin(pluginInstance, "res/VCVBezelBig.svg")));
  108. }
  109. };
  110. template <typename TBase>
  111. struct VCVBezelLightBig : TBase {
  112. VCVBezelLightBig() {
  113. this->borderColor = color::BLACK_TRANSPARENT;
  114. this->bgColor = color::BLACK_TRANSPARENT;
  115. this->box.size = mm2px(math::Vec(11.1936, 11.1936));
  116. }
  117. };
  118. MenuItem* createRangeItem(std::string label, float* gain, float* offset);