#include "Arduino.h" extern bool tintty_cursor_key_mode_application; /** * Renderer callbacks. */ struct tintty_display { int16_t screen_width, screen_height; int16_t screen_col_count, screen_row_count; // width and height divided by char size void (*fill_rect)(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); void (*draw_pixels)(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t *pixels); void (*print_character)(int16_t col, int16_t row, uint16_t fg_color, uint16_t bg_color, char character); void (*print_cursor)(int16_t col, int16_t row, uint16_t color); void (*set_vscroll)(int16_t offset); // scroll offset for entire screen }; /** * Keyboard callbacks. */ struct tintty_keyboard { void (*bell)(); }; /** * Main entry point. * Peek/read callbacks are expected to block until input is available; * while sketch is waiting for input, it should call the tintty_idle() hook * to allow animating cursor, etc. */ void tintty_run( char (*peek_char)(), char (*read_char)(), void (*send_char)(char str), tintty_display *display, tintty_keyboard *keyboard ); /** * Hook to call while e.g. sketch is waiting for input */ void tintty_idle( tintty_display *display );