26 void writeCurrentValue()
override {
27 Fixed::writeCurrentValue();
28 AudioEngine::mustUpdateReverbParamsBeforeNextRender =
true;
33 void renderInHorizontalMenu(int32_t startX, int32_t width, int32_t startY, int32_t height)
override {
36 constexpr int32_t barWidth = 26;
37 constexpr int32_t dotsInterval = 4;
38 constexpr int32_t xOffset = 4;
40 const int32_t leftPadding = (width - barWidth) / 2;
41 const int32_t minX = startX + leftPadding;
42 const int32_t maxX = minX + barWidth;
43 const int32_t minY = startY + 3;
44 const int32_t maxY = startY + height - 4;
47 for (int32_t y = minY; y <= maxY; y += dotsInterval) {
48 if (y == minY + dotsInterval * 3) {
52 image.drawPixel(minX + xOffset, y);
53 image.drawPixel(maxX - xOffset, y);
57 const float normalizedValue = std::abs(getValue()) / 5000.0f;
58 const int32_t barHeight = maxY - minY;
59 const int32_t fillHeight =
static_cast<int32_t
>(normalizedValue * barHeight);
61 const int32_t yOffset = (barHeight - fillHeight) / 2;
62 int32_t yStart, yEnd, y0, y1;
63 if (getValue() >= 0) {
65 yStart = minY + yOffset;
66 yEnd = yStart + fillHeight;
72 yEnd = maxY - yOffset;
73 yStart = yEnd - fillHeight;
79 image.drawLine(minX + xOffset, y0, maxX - xOffset, y1,
true);
80 image.drawVerticalLine(minX + xOffset, yStart, yEnd);
81 image.drawVerticalLine(minX + xOffset + 1, yStart, yEnd);
82 image.drawHorizontalLine(y1 - 1, maxX - xOffset, maxX - 1);
83 image.drawHorizontalLine(y1, maxX - xOffset, maxX - 1);
84 image.drawHorizontalLine(y1 - 1, minX + 1, minX + xOffset + 1);
85 image.drawHorizontalLine(y1, minX + 1, minX + xOffset + 1);