diff --git a/examples/7.Displays/MCU-OLED-SSD1306-x2/MCU-OLED-SSD1306-x2.ino b/examples/7.Displays/MCU-OLED-SSD1306-x2/MCU-OLED-SSD1306-x2.ino index e7adb5de09..b143f7fc2c 100644 --- a/examples/7.Displays/MCU-OLED-SSD1306-x2/MCU-OLED-SSD1306-x2.ino +++ b/examples/7.Displays/MCU-OLED-SSD1306-x2/MCU-OLED-SSD1306-x2.ino @@ -224,15 +224,15 @@ MCU::TimeDisplayDisplay timedisplaydisplay = { }; // Play / Record -NoteBitmapDisplay<> playDisp = { +BitmapDisplay<> playDisp = { display_L, play, XBM::play_7, {16 + 64, 0}, WHITE, }; -NoteBitmapDisplay<> recordDisp = { +BitmapDisplay<> recordDisp = { display_L, record, XBM::record_7, {26 + 64, 0}, WHITE, }; // Mute -NoteBitmapDisplay<> muteDisp[] = { +BitmapDisplay<> muteDisp[] = { {display_L, mute[0], XBM::mute_10B, {14, 50}, WHITE}, {display_L, mute[1], XBM::mute_10B, {14 + 64, 50}, WHITE}, {display_R, mute[2], XBM::mute_10B, {14, 50}, WHITE}, @@ -240,18 +240,18 @@ NoteBitmapDisplay<> muteDisp[] = { }; // Solo -NoteBitmapDisplay<> soloDisp[] = { +BitmapDisplay<> soloDisp[] = { {display_L, solo[0], XBM::solo_10B, {14, 50}, WHITE}, {display_L, solo[1], XBM::solo_10B, {14 + 64, 50}, WHITE}, {display_R, solo[2], XBM::solo_10B, {14, 50}, WHITE}, {display_R, solo[3], XBM::solo_10B, {14 + 64, 50}, WHITE}, }; -NoteBitmapDisplay<> rudeSoloDisp = { +BitmapDisplay<> rudeSoloDisp = { display_L, rudeSolo, XBM::solo_7, {36 + 64, 0}, WHITE}; // Record arm / ready -NoteBitmapDisplay<> recrdyDisp[] = { +BitmapDisplay<> recrdyDisp[] = { {display_L, recrdy[0], XBM::rec_rdy_10B, {14 + 14, 50}, WHITE}, {display_L, recrdy[1], XBM::rec_rdy_10B, {14 + 14 + 64, 50}, WHITE}, {display_R, recrdy[2], XBM::rec_rdy_10B, {14 + 14, 50}, WHITE}, diff --git a/examples/7.Displays/MCU-OLED-SSD1306/MCU-OLED-SSD1306.ino b/examples/7.Displays/MCU-OLED-SSD1306/MCU-OLED-SSD1306.ino index c39ba86148..7f5b75db25 100644 --- a/examples/7.Displays/MCU-OLED-SSD1306/MCU-OLED-SSD1306.ino +++ b/examples/7.Displays/MCU-OLED-SSD1306/MCU-OLED-SSD1306.ino @@ -179,30 +179,30 @@ MCU::TimeDisplayDisplay timedisplaydisplay = { }; // Play / Record -NoteBitmapDisplay<> playDisp = { +BitmapDisplay<> playDisp = { display, play, XBM::play_7, {16 + 64, 0}, WHITE, }; -NoteBitmapDisplay<> recordDisp = { +BitmapDisplay<> recordDisp = { display, record, XBM::record_7, {26 + 64, 0}, WHITE, }; // Mute -NoteBitmapDisplay<> muteDisp[] = { +BitmapDisplay<> muteDisp[] = { {display, mute[0], XBM::mute_10B, {14, 50}, WHITE}, {display, mute[1], XBM::mute_10B, {14 + 64, 50}, WHITE}, }; // Solo -NoteBitmapDisplay<> soloDisp[] = { +BitmapDisplay<> soloDisp[] = { {display, solo[0], XBM::solo_10B, {14, 50}, WHITE}, {display, solo[1], XBM::solo_10B, {14 + 64, 50}, WHITE}, }; -NoteBitmapDisplay<> rudeSoloDisp = { +BitmapDisplay<> rudeSoloDisp = { display, rudeSolo, XBM::solo_7, {36 + 64, 0}, WHITE}; // Record arm / ready -NoteBitmapDisplay<> recrdyDisp[] = { +BitmapDisplay<> recrdyDisp[] = { {display, recrdy[0], XBM::rec_rdy_10B, {14 + 14, 50}, WHITE}, {display, recrdy[1], XBM::rec_rdy_10B, {14 + 14 + 64, 50}, WHITE}, }; diff --git a/examples/Boards/ESP32/OLED/VU-Meter-Bridge/VU-Meter-Bridge.ino b/examples/Boards/ESP32/OLED/VU-Meter-Bridge/VU-Meter-Bridge.ino index 510fded040..eac9028d31 100644 --- a/examples/Boards/ESP32/OLED/VU-Meter-Bridge/VU-Meter-Bridge.ino +++ b/examples/Boards/ESP32/OLED/VU-Meter-Bridge/VU-Meter-Bridge.ino @@ -148,7 +148,7 @@ MCU::VUDisplay<> vuDisp[8] = { {display, VUMeters[7], {2 + 16 * 7, 50}, 12, 3, 1, WHITE}, }; -NoteBitmapDisplay<> muteDisp[8] = { +BitmapDisplay<> muteDisp[8] = { // Draw the first mute indicator to the display, at position (4, 54), // using bitmap icon mute_7 with a white foreground color. {display, mute[0], XBM::mute_7, {4 + 16 * 0, 54}, WHITE}, @@ -161,7 +161,7 @@ NoteBitmapDisplay<> muteDisp[8] = { {display, mute[7], XBM::mute_7, {4 + 16 * 7, 54}, WHITE}, }; -NoteBitmapDisplay<> soloDisp[8] = { +BitmapDisplay<> soloDisp[8] = { // Draw the first solo indicator to the display, at position (4, 54), // using bitmap icon solo_7 with a white foreground color. {display, solo[0], XBM::solo_7, {4 + 16 * 0, 54}, WHITE}, diff --git a/src/Control_Surface.h b/src/Control_Surface.h index 218926be00..2ff4db15b3 100755 --- a/src/Control_Surface.h +++ b/src/Control_Surface.h @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include // ------------------------------ MIDI Outputs ------------------------------ // diff --git a/src/Display/NoteBitmapDisplay.cpp b/src/Display/BitmapDisplay.cpp similarity index 52% rename from src/Display/NoteBitmapDisplay.cpp rename to src/Display/BitmapDisplay.cpp index 97602a4207..0f89d90c39 100644 --- a/src/Display/NoteBitmapDisplay.cpp +++ b/src/Display/BitmapDisplay.cpp @@ -1,3 +1,3 @@ #ifdef TEST_COMPILE_ALL_HEADERS_SEPARATELY -#include "NoteBitmapDisplay.hpp" +#include "BitmapDisplay.hpp" #endif \ No newline at end of file diff --git a/src/Display/BitmapDisplay.hpp b/src/Display/BitmapDisplay.hpp new file mode 100644 index 0000000000..7efc3ff924 --- /dev/null +++ b/src/Display/BitmapDisplay.hpp @@ -0,0 +1,42 @@ +#pragma once + +#include // std::forward +#include +#include +#include + +BEGIN_CS_NAMESPACE + +/// A class that displays a bitmap depending on the state of a MIDINote or any +/// other object that has a `getValue()` method that returns true (or anything +/// that evaluates to true) when the bitmap has to be displayed, as wel as a +/// pair of `getDirty()`/`clearDirty()` methods to determine whether the display +/// has to be updated. +template +class BitmapDisplay : public DisplayElement { + public: + BitmapDisplay(DisplayInterface &display, Value_t &&value, + const XBitmap &xbm, PixelLocation loc, uint16_t color) + : DisplayElement(display), value(std::forward(value)), + xbm(xbm), x(loc.x), y(loc.y), color(color) {} + + void draw() override { + if (value.getValue()) + display.drawXBitmap(x, y, xbm.bits, xbm.width, xbm.height, color); + value.clearDirty(); + } + + bool getDirty() const override { return value.getDirty(); } + + private: + Value_t value; + const XBitmap &xbm; + int16_t x, y; + uint16_t color; +}; + +template +using NoteBitmapDisplay [[deprecated("Use BitmapDisplay instead")]] = + BitmapDisplay; + +END_CS_NAMESPACE \ No newline at end of file diff --git a/src/Display/NoteBitmapDisplay.hpp b/src/Display/NoteBitmapDisplay.hpp deleted file mode 100644 index cffb46f96b..0000000000 --- a/src/Display/NoteBitmapDisplay.hpp +++ /dev/null @@ -1,33 +0,0 @@ -#pragma once - -#include -#include -#include - -BEGIN_CS_NAMESPACE - -/// A class that displays a bitmap depending on the state of a MIDINote. -template -class NoteBitmapDisplay : public DisplayElement { - public: - NoteBitmapDisplay(DisplayInterface &display, NoteValue_t ¬e, - const XBitmap &xbm, PixelLocation loc, uint16_t color) - : DisplayElement(display), note(note), xbm(xbm), x(loc.x), y(loc.y), - color(color) {} - - void draw() override { - if (note.getValue()) - display.drawXBitmap(x, y, xbm.bits, xbm.width, xbm.height, color); - note.clearDirty(); - } - - bool getDirty() const override { return note.getDirty(); } - - private: - NoteValue_t ¬e; - const XBitmap &xbm; - int16_t x, y; - uint16_t color; -}; - -END_CS_NAMESPACE \ No newline at end of file