// // Created by Stepan Usatiuk on 02.03.2025. // #ifndef CB_DISP_TOOLS_HPP #define CB_DISP_TOOLS_HPP #include namespace DispTools { static void clear() { for (int y = 0; y < DISP_HEIGHT; y++) { for (int x = 0; x < DISP_WIDTH; x++) { SMD::set_pixel(x, y, true); } } } static bool get_pixel(int x, int y) { if (x < 0 || x >= DISP_WIDTH || y < 0 || y >= DISP_HEIGHT) assert(false); assert(false); // Not implemented return true; // return disp_frame[y][x]; } static void reset_pixel(int x, int y) { if (x < 0 || x >= DISP_WIDTH || y < 0 || y >= DISP_HEIGHT) assert(false); SMD::set_pixel(x, y, false); } static void set_pixel(int x, int y) { if (x < 0 || x >= DISP_WIDTH || y < 0 || y >= DISP_HEIGHT) assert(false); SMD::set_pixel(x, y, true); } static void set_pixel(int x, int y, bool on) { if (on) { set_pixel(x, y); } else { reset_pixel(x, y); } } // New simplified async pipeline wrappers static void async_frame_start() { SMD::async_draw_wait(); } // call at frame start static void async_frame_end() { SMD::async_draw_start(); } // call after rendering // Legacy names (temporary) mapped to new API in case of straggling calls static void draw_to_display_async_start() { SMD::async_draw_start(); } static void draw_to_display_async_wait() { SMD::async_draw_wait(); } static bool draw_to_display_async_busy() { return SMD::async_draw_busy(); } }; #endif // DISP_TOOLS_HPP