|
- #include "app/RackRail.hpp"
-
-
- namespace rack {
- namespace app {
-
- void RackRail::draw(const DrawArgs &args) {
- const float railHeight = RACK_GRID_WIDTH;
-
- // Background color
- nvgBeginPath(args.vg);
- nvgRect(args.vg, 0.0, 0.0, box.size.x, box.size.y);
- nvgFillColor(args.vg, nvgRGBf(0.2, 0.2, 0.2));
- nvgFill(args.vg);
-
- // Rails
- nvgFillColor(args.vg, nvgRGBf(0.85, 0.85, 0.85));
- nvgStrokeWidth(args.vg, 1.0);
- nvgStrokeColor(args.vg, nvgRGBf(0.7, 0.7, 0.7));
- float holeRadius = 3.5;
- for (float railY = 0; railY < box.size.y; railY += RACK_GRID_HEIGHT) {
- // Top rail
- nvgBeginPath(args.vg);
- nvgRect(args.vg, 0, railY, box.size.x, railHeight);
- for (float railX = 0; railX < box.size.x; railX += RACK_GRID_WIDTH) {
- nvgCircle(args.vg, railX + RACK_GRID_WIDTH / 2, railY + railHeight / 2, holeRadius);
- nvgPathWinding(args.vg, NVG_HOLE);
- }
- nvgFill(args.vg);
-
- nvgBeginPath(args.vg);
- nvgMoveTo(args.vg, 0, railY + railHeight - 0.5);
- nvgLineTo(args.vg, box.size.x, railY + railHeight - 0.5);
- nvgStroke(args.vg);
-
- // Bottom rail
- nvgBeginPath(args.vg);
- nvgRect(args.vg, 0, railY + RACK_GRID_HEIGHT - railHeight, box.size.x, railHeight);
- for (float railX = 0; railX < box.size.x; railX += RACK_GRID_WIDTH) {
- nvgCircle(args.vg, railX + RACK_GRID_WIDTH / 2, railY + RACK_GRID_HEIGHT - railHeight + railHeight / 2, holeRadius);
- nvgPathWinding(args.vg, NVG_HOLE);
- }
- nvgFill(args.vg);
-
- nvgBeginPath(args.vg);
- nvgMoveTo(args.vg, 0, railY + RACK_GRID_HEIGHT - 0.5);
- nvgLineTo(args.vg, box.size.x, railY + RACK_GRID_HEIGHT - 0.5);
- nvgStroke(args.vg);
- }
- }
-
-
- } // namespace app
- } // namespace rack
|