29 using ArpNonSoundInteger::ArpNonSoundInteger;
31 this->setValue(computeCurrentValueForUnsignedMenuItem(soundEditor.currentArpSettings->rhythm));
33 void writeCurrentValue()
override {
34 int32_t value = computeFinalValueForUnsignedMenuItem(this->getValue());
35 soundEditor.currentArpSettings->rhythm = value;
38 void drawValue()
override { display->setScrollingText(arpRhythmPatternNames[this->getValue()]); }
40 void drawInteger(int32_t textWidth, int32_t textHeight, int32_t yPixel)
override {
43 canvas.
drawStringCentred(arpRhythmPatternNames[this->getValue()], yPixel + OLED_MAIN_TOPMOST_PIXEL, textWidth,
47 void renderInHorizontalMenu(int32_t startX, int32_t width, int32_t startY, int32_t height)
override {
50 renderColumnLabel(startX, width, startY);
54 DEF_STACK_STRING_BUF(shortOpt, kShortStringBufferSize);
55 if (soundEditor.editingKit() && !soundEditor.editingGateDrumRow()) {
56 shortOpt.append(arpRhythmPatternNames[this->getValue()]);
61 snprintf(
name,
sizeof(
name),
"%d: %s", this->getValue(), arpRhythmPatternNames[this->getValue()]);
62 shortOpt.append(
name);
66 while ((pxLen = image.getStringWidthInPixels(shortOpt.c_str(), kTextSpacingY)) >= width) {
67 shortOpt.truncate(shortOpt.size() - 1);
70 int32_t pad = (width + 1 - pxLen) / 2;
71 image.drawString(shortOpt.c_str(), startX + pad, startY + kTextSpacingY + 2, kTextSpacingX, kTextSpacingY, 0,
72 startX + width - kTextSpacingX);
void drawStringCentred(char const *string, int32_t pixelY, int32_t textWidth, int32_t textHeight, int32_t centrePos=OLED_MAIN_WIDTH_PIXELS/2)
Definition canvas.cpp:189