#pragma once #include "BROSE9323.h" #include "logic/bitmap_format.h" #include "logic/display_controller.h" #include "logic/page_render.h" // Draws the screens on the flipdot display. Each method sends one complete frame. class FlipdotFrames : public Frames { public: FlipdotFrames(BROSE9323 &display, PageResources &resources); // The page set with setDynamicPage(), drawn for this time void dynamicPage(const LocalTime &time) override; // "No WiFi" with the time below it void noWifi(int hour, int minute) override; // The bitmap set with setPageBitmap() void page() override; // The image set with setLiveBitmap() void live() override; // Blank, or the bitmap set with setOffBitmap() void off() override; void setDynamicPage(const DynamicPage &page); void setPageBitmap(const uint8_t *bitmap); void setLiveBitmap(const uint8_t *bitmap); // nullptr: blank void setOffBitmap(const uint8_t *bitmap); private: BROSE9323 &_display; PageResources &_resources; DynamicPage _dynamic; uint8_t _page[BITMAP_BYTES] = {}; uint8_t _live[BITMAP_BYTES] = {}; uint8_t _off[BITMAP_BYTES] = {}; // all zero: blank void _drawFullScreen(const uint8_t *bitmap); };