114#if defined(__GNUC__) && defined(__AVR__)
115#include <avr/pgmspace.h>
140#define U8X8_NOINLINE __attribute__((noinline))
141#define U8X8_SECTION(name) __attribute__((section(name)))
142#define U8X8_UNUSED __attribute__((unused))
144#define U8X8_SECTION(name)
149#if defined(__GNUC__) && defined(__AVR__)
150#define U8X8_FONT_SECTION(name) U8X8_SECTION(".progmem." name)
151#define u8x8_pgm_read(adr) pgm_read_byte_near(adr)
152#define U8X8_PROGMEM PROGMEM
156uint8_t u8x8_pgm_read_esp(
const uint8_t* addr);
157#define U8X8_FONT_SECTION(name) __attribute__((section(".text." name)))
158#define u8x8_pgm_read(adr) u8x8_pgm_read_esp(adr)
162#ifndef U8X8_FONT_SECTION
163#define U8X8_FONT_SECTION(name)
168#define u8x8_pgm_read(adr) (*(const uint8_t*)(adr))
171#define u8x8_pgm_read(adr) ((*(const uint8_t*)(adr)) & 0x0ff)
173#define u8x8_pgm_read(adr) (*(const uint8_t*)(adr))
193typedef uint8_t (*u8x8_msg_cb)(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
194typedef uint16_t (*u8x8_char_cb)(
u8x8_t* u8x8, uint8_t b);
213 uint8_t chip_enable_level;
214 uint8_t chip_disable_level;
216 uint8_t post_chip_enable_wait_ns;
217 uint8_t pre_chip_disable_wait_ns;
218 uint8_t reset_pulse_width_ms;
219 uint8_t post_reset_wait_ms;
225 uint8_t sda_setup_time_ns;
229 uint8_t sck_pulse_width_ns;
232 uint32_t sck_clock_hz;
245 uint8_t i2c_bus_clock_100kHz;
250 uint8_t data_setup_time_ns;
252 uint8_t write_pulse_width_ns;
258 uint8_t default_x_offset;
259 uint8_t flipmode_x_offset;
267 uint16_t pixel_width;
268 uint16_t pixel_height;
273#define U8X8_PIN_SPI_CLOCK 0
275#define U8X8_PIN_SPI_DATA 1
285#define U8X8_PIN_DC 10
286#define U8X8_PIN_RESET 11
288#define U8X8_PIN_I2C_CLOCK 12
289#define U8X8_PIN_I2C_DATA 13
291#define U8X8_PIN_CS1 14
292#define U8X8_PIN_CS2 15
294#define U8X8_PIN_OUTPUT_CNT 16
296#define U8X8_PIN_MENU_SELECT 16
297#define U8X8_PIN_MENU_NEXT 17
298#define U8X8_PIN_MENU_PREV 18
299#define U8X8_PIN_MENU_HOME 19
300#define U8X8_PIN_MENU_UP 20
301#define U8X8_PIN_MENU_DOWN 21
303#define U8X8_PIN_INPUT_CNT 6
306#define U8X8_PIN_CNT (U8X8_PIN_OUTPUT_CNT + U8X8_PIN_INPUT_CNT)
307#define U8X8_PIN_NONE 255
312 u8x8_char_cb next_cb;
313 u8x8_msg_cb display_cb;
316 u8x8_msg_cb gpio_and_delay_cb;
321 uint8_t is_font_inverse_mode;
330 uint8_t debounce_default_pin_state;
331 uint8_t debounce_last_pin_state;
332 uint8_t debounce_state;
333 uint8_t debounce_result_msg;
334#ifdef U8X8_WITH_USER_PTR
343#ifdef U8X8_WITH_USER_PTR
344#define u8x8_GetUserPtr(u8x8) ((u8x8)->user_ptr)
345#define u8x8_SetUserPtr(u8x8, p) ((u8x8)->user_ptr = (p))
348#define u8x8_GetCols(u8x8) ((u8x8)->display_info->tile_width)
349#define u8x8_GetRows(u8x8) ((u8x8)->display_info->tile_height)
350#define u8x8_GetI2CAddress(u8x8) ((u8x8)->i2c_address)
351#define u8x8_SetI2CAddress(u8x8, address) ((u8x8)->i2c_address = (address))
353#define u8x8_SetGPIOResult(u8x8, val) ((u8x8)->gpio_result = (val))
354#define u8x8_GetSPIClockPhase(u8x8) \
355 ((u8x8)->display_info->spi_mode & 0x01)
356#define u8x8_GetSPIClockPolarity(u8x8) (((u8x8)->display_info->spi_mode & 0x02) >> 1)
357#define u8x8_GetSPIClockDefaultLevel(u8x8) (((u8x8)->display_info->spi_mode & 0x02) >> 1)
359#define u8x8_GetFontCharWidth(u8x8) u8x8_pgm_read((u8x8)->font + 2)
360#define u8x8_GetFontCharHeight(u8x8) u8x8_pgm_read((u8x8)->font + 3)
363#define u8x8_SetPin(u8x8, pin, val) (u8x8)->pins[pin] = (val)
364#define u8x8_SetMenuSelectPin(u8x8, val) u8x8_SetPin((u8x8), U8X8_PIN_MENU_SELECT, (val))
365#define u8x8_SetMenuNextPin(u8x8, val) u8x8_SetPin((u8x8), U8X8_PIN_MENU_NEXT, (val))
366#define u8x8_SetMenuPrevPin(u8x8, val) u8x8_SetPin((u8x8), U8X8_PIN_MENU_PREV, (val))
367#define u8x8_SetMenuHomePin(u8x8, val) u8x8_SetPin((u8x8), U8X8_PIN_MENU_HOME, (val))
368#define u8x8_SetMenuUpPin(u8x8, val) u8x8_SetPin((u8x8), U8X8_PIN_MENU_UP, (val))
369#define u8x8_SetMenuDownPin(u8x8, val) u8x8_SetPin((u8x8), U8X8_PIN_MENU_DOWN, (val))
378typedef void (*u8log_cb)(
u8log_t* u8log);
383 uint8_t width, height;
385 uint8_t* screen_buffer;
386 uint8_t is_redraw_line_for_each_char;
387 int8_t line_height_offset;
391 uint8_t cursor_x, cursor_y;
393 uint8_t is_redraw_line;
394 uint8_t is_redraw_all;
395 uint8_t is_redraw_all_required_for_next_nl;
402void u8x8_d_helper_display_init(
u8x8_t* u8g2);
415#define U8X8_MSG_DISPLAY_SETUP_MEMORY 9
429#define U8X8_MSG_DISPLAY_INIT 10
439#define U8X8_MSG_DISPLAY_SET_POWER_SAVE 11
450#define U8X8_MSG_DISPLAY_SET_FLIP_MODE 13
453#define U8X8_MSG_DISPLAY_SET_CONTRAST 14
482#define U8X8_MSG_DISPLAY_DRAW_TILE 15
498#define U8X8_MSG_DISPLAY_REFRESH 16
503uint8_t u8x8_dummy_cb(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
511void u8x8_SetupDefaults(
u8x8_t* u8x8);
515 u8x8_msg_cb display_cb,
518 u8x8_msg_cb gpio_and_delay_cb);
522uint8_t u8x8_DrawTile(
u8x8_t* u8x8, uint8_t x, uint8_t y, uint8_t cnt, uint8_t* tile_ptr);
530void u8x8_SetupMemory(
u8x8_t* u8x8);
538void u8x8_InitDisplay(
u8x8_t* u8x8);
540void u8x8_SetPowerSave(
u8x8_t* u8x8, uint8_t is_enable);
541void u8x8_SetFlipMode(
u8x8_t* u8x8, uint8_t mode);
542void u8x8_SetContrast(
u8x8_t* u8x8, uint8_t value);
543void u8x8_ClearDisplayWithTile(
u8x8_t* u8x8,
const uint8_t* buf) U8X8_NOINLINE;
544void u8x8_ClearDisplay(
u8x8_t* u8x8);
545void u8x8_FillDisplay(
u8x8_t* u8x8);
546void u8x8_RefreshDisplay(
548void u8x8_ClearLine(
u8x8_t* u8x8, uint8_t line);
559#define U8X8_MSG_CAD_INIT 20
561#define U8X8_MSG_CAD_SEND_CMD 21
563#define U8X8_MSG_CAD_SEND_ARG 22
565#define U8X8_MSG_CAD_SEND_DATA 23
567#define U8X8_MSG_CAD_START_TRANSFER 24
569#define U8X8_MSG_CAD_END_TRANSFER 25
576#define u8x8_cad_Init(u8x8) ((u8x8)->cad_cb((u8x8), U8X8_MSG_CAD_INIT, 0, NULL))
578uint8_t u8x8_cad_SendCmd(
u8x8_t* u8x8, uint8_t cmd) U8X8_NOINLINE;
579uint8_t u8x8_cad_SendArg(
u8x8_t* u8x8, uint8_t arg) U8X8_NOINLINE;
580uint8_t u8x8_cad_SendMultipleArg(
u8x8_t* u8x8, uint8_t cnt, uint8_t arg) U8X8_NOINLINE;
581uint8_t u8x8_cad_SendData(
u8x8_t* u8x8, uint8_t cnt, uint8_t* data) U8X8_NOINLINE;
582uint8_t u8x8_cad_StartTransfer(
u8x8_t* u8x8) U8X8_NOINLINE;
583uint8_t u8x8_cad_EndTransfer(
u8x8_t* u8x8) U8X8_NOINLINE;
584void u8x8_cad_vsendf(
u8x8_t* u8x8,
const char* fmt, va_list va);
585void u8x8_SendF(
u8x8_t* u8x8,
const char* fmt, ...);
595#define U8X8_C(c0) (U8X8_MSG_CAD_SEND_CMD), (c0)
596#define U8X8_A(a0) (U8X8_MSG_CAD_SEND_ARG), (a0)
597#define U8X8_CA(c0, a0) (U8X8_MSG_CAD_SEND_CMD), (c0), (U8X8_MSG_CAD_SEND_ARG), (a0)
598#define U8X8_CAA(c0, a0, a1) \
599 (U8X8_MSG_CAD_SEND_CMD), (c0), (U8X8_MSG_CAD_SEND_ARG), (a0), (U8X8_MSG_CAD_SEND_ARG), (a1)
600#define U8X8_CAAA(c0, a0, a1, a2) \
601 (U8X8_MSG_CAD_SEND_CMD), (c0), (U8X8_MSG_CAD_SEND_ARG), (a0), (U8X8_MSG_CAD_SEND_ARG), (a1), \
602 (U8X8_MSG_CAD_SEND_ARG), (a2)
603#define U8X8_CAAAA(c0, a0, a1, a2, a3) \
604 (U8X8_MSG_CAD_SEND_CMD), (c0), (U8X8_MSG_CAD_SEND_ARG), (a0), (U8X8_MSG_CAD_SEND_ARG), (a1), \
605 (U8X8_MSG_CAD_SEND_ARG), (a2), (U8X8_MSG_CAD_SEND_ARG), (a3)
606#define U8X8_AAC(a0, a1, c0) \
607 (U8X8_MSG_CAD_SEND_ARG), (a0), (U8X8_MSG_CAD_SEND_ARG), (a1), (U8X8_MSG_CAD_SEND_CMD), (c0)
608#define U8X8_D1(d0) (U8X8_MSG_CAD_SEND_DATA), (d0)
610#define U8X8_A4(a0, a1, a2, a3) U8X8_A(a0), U8X8_A(a1), U8X8_A(a2), U8X8_A(a3)
611#define U8X8_A8(a0, a1, a2, a3, a4, a5, a6, a7) \
612 U8X8_A4((a0), (a1), (a2), (a3)), U8X8_A4((a4), (a5), (a6), (a7))
614#define U8X8_START_TRANSFER() (U8X8_MSG_CAD_START_TRANSFER)
615#define U8X8_END_TRANSFER() (U8X8_MSG_CAD_END_TRANSFER)
616#define U8X8_DLY(m) (0xfe), (m)
617#define U8X8_END() (0xff)
619void u8x8_cad_SendSequence(
u8x8_t* u8x8, uint8_t
const* data);
620uint8_t u8x8_cad_empty(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
621uint8_t u8x8_cad_110(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
622uint8_t u8x8_cad_001(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
623uint8_t u8x8_cad_011(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
624uint8_t u8x8_cad_100(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
625uint8_t u8x8_cad_st7920_spi(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
626uint8_t u8x8_cad_ssd13xx_i2c(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
627uint8_t u8x8_cad_ssd13xx_fast_i2c(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
628uint8_t u8x8_cad_st75256_i2c(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
629uint8_t u8x8_cad_ld7032_i2c(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
630uint8_t u8x8_cad_uc16xx_i2c(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
635#define U8X8_MSG_BYTE_INIT U8X8_MSG_CAD_INIT
636#define U8X8_MSG_BYTE_SET_DC 32
638#define U8X8_MSG_BYTE_SEND U8X8_MSG_CAD_SEND_DATA
640#define U8X8_MSG_BYTE_START_TRANSFER U8X8_MSG_CAD_START_TRANSFER
641#define U8X8_MSG_BYTE_END_TRANSFER U8X8_MSG_CAD_END_TRANSFER
646uint8_t u8x8_byte_SetDC(
u8x8_t* u8x8, uint8_t dc) U8X8_NOINLINE;
647uint8_t u8x8_byte_SendByte(
u8x8_t* u8x8, uint8_t
byte) U8X8_NOINLINE;
648uint8_t u8x8_byte_SendBytes(
u8x8_t* u8x8, uint8_t cnt, uint8_t* data) U8X8_NOINLINE;
649uint8_t u8x8_byte_StartTransfer(
u8x8_t* u8x8);
650uint8_t u8x8_byte_EndTransfer(
u8x8_t* u8x8);
652uint8_t u8x8_byte_empty(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
653uint8_t u8x8_byte_4wire_sw_spi(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
654uint8_t u8x8_byte_8bit_6800mode(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
655uint8_t u8x8_byte_8bit_8080mode(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
656uint8_t u8x8_byte_3wire_sw_spi(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
658void u8x8_byte_set_ks0108_cs(
u8x8_t* u8x8, uint8_t arg) U8X8_NOINLINE;
659uint8_t u8x8_byte_ks0108(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
660uint8_t u8x8_byte_ssd13xx_sw_i2c(
665uint8_t u8x8_byte_sw_i2c(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
666uint8_t u8x8_byte_sed1520(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
676#define U8X8_MSG_GPIO_AND_DELAY_INIT 40
679#define U8X8_MSG_DELAY_MILLI 41
682#define U8X8_MSG_DELAY_10MICRO 42
683#define U8X8_MSG_DELAY_100NANO 43
685#define U8X8_MSG_DELAY_NANO 44
687#define U8X8_MSG_DELAY_I2C 45
689#define U8X8_MSG_GPIO(x) (64 + (x))
691#define u8x8_GetPinIndex(u8x8, msg) ((msg) & 0x3f)
692#define u8x8_GetPinValue(u8x8, msg) ((u8x8)->pins[(msg) & 0x3f])
695#define U8X8_MSG_GPIO_D0 U8X8_MSG_GPIO(U8X8_PIN_D0)
696#define U8X8_MSG_GPIO_SPI_CLOCK U8X8_MSG_GPIO(U8X8_PIN_SPI_CLOCK)
697#define U8X8_MSG_GPIO_D1 U8X8_MSG_GPIO(U8X8_PIN_D1)
698#define U8X8_MSG_GPIO_SPI_DATA U8X8_MSG_GPIO(U8X8_PIN_SPI_DATA)
699#define U8X8_MSG_GPIO_D2 U8X8_MSG_GPIO(U8X8_PIN_D2)
700#define U8X8_MSG_GPIO_D3 U8X8_MSG_GPIO(U8X8_PIN_D3)
701#define U8X8_MSG_GPIO_D4 U8X8_MSG_GPIO(U8X8_PIN_D4)
702#define U8X8_MSG_GPIO_D5 U8X8_MSG_GPIO(U8X8_PIN_D5)
703#define U8X8_MSG_GPIO_D6 U8X8_MSG_GPIO(U8X8_PIN_D6)
704#define U8X8_MSG_GPIO_D7 U8X8_MSG_GPIO(U8X8_PIN_D7)
705#define U8X8_MSG_GPIO_E U8X8_MSG_GPIO(U8X8_PIN_E)
706#define U8X8_MSG_GPIO_CS U8X8_MSG_GPIO(U8X8_PIN_CS)
707#define U8X8_MSG_GPIO_DC U8X8_MSG_GPIO(U8X8_PIN_DC)
708#define U8X8_MSG_GPIO_RESET U8X8_MSG_GPIO(U8X8_PIN_RESET)
709#define U8X8_MSG_GPIO_I2C_CLOCK U8X8_MSG_GPIO(U8X8_PIN_I2C_CLOCK)
710#define U8X8_MSG_GPIO_I2C_DATA U8X8_MSG_GPIO(U8X8_PIN_I2C_DATA)
712#define U8X8_MSG_GPIO_CS1 U8X8_MSG_GPIO(U8X8_PIN_CS1)
713#define U8X8_MSG_GPIO_CS2 U8X8_MSG_GPIO(U8X8_PIN_CS2)
716#define U8X8_MSG_GPIO_MENU_SELECT U8X8_MSG_GPIO(U8X8_PIN_MENU_SELECT)
717#define U8X8_MSG_GPIO_MENU_NEXT U8X8_MSG_GPIO(U8X8_PIN_MENU_NEXT)
718#define U8X8_MSG_GPIO_MENU_PREV U8X8_MSG_GPIO(U8X8_PIN_MENU_PREV)
719#define U8X8_MSG_GPIO_MENU_HOME U8X8_MSG_GPIO(U8X8_PIN_MENU_HOME)
720#define U8X8_MSG_GPIO_MENU_UP U8X8_MSG_GPIO(U8X8_PIN_MENU_UP)
721#define U8X8_MSG_GPIO_MENU_DOWN U8X8_MSG_GPIO(U8X8_PIN_MENU_DOWN)
723#define u8x8_gpio_Init(u8x8) \
724 ((u8x8)->gpio_and_delay_cb((u8x8), U8X8_MSG_GPIO_AND_DELAY_INIT, 0, NULL))
732#define u8x8_gpio_SetDC(u8x8, v) u8x8_gpio_call(u8x8, U8X8_MSG_GPIO_DC, (v))
733#define u8x8_gpio_SetCS(u8x8, v) u8x8_gpio_call(u8x8, U8X8_MSG_GPIO_CS, (v))
734#define u8x8_gpio_SetReset(u8x8, v) u8x8_gpio_call(u8x8, U8X8_MSG_GPIO_RESET, (v))
735#define u8x8_gpio_SetSPIClock(u8x8, v) u8x8_gpio_call(u8x8, U8X8_MSG_GPIO_SPI_CLOCK, (v))
736#define u8x8_gpio_SetSPIData(u8x8, v) u8x8_gpio_call(u8x8, U8X8_MSG_GPIO_SPI_DATA, (v))
737#define u8x8_gpio_SetI2CClock(u8x8, v) u8x8_gpio_call(u8x8, U8X8_MSG_GPIO_I2C_CLOCK, (v))
738#define u8x8_gpio_SetI2CData(u8x8, v) u8x8_gpio_call(u8x8, U8X8_MSG_GPIO_I2C_DATA, (v))
740void u8x8_gpio_call(
u8x8_t* u8x8, uint8_t msg, uint8_t arg) U8X8_NOINLINE;
742#define u8x8_gpio_Delay(u8x8, msg, dly) u8x8_gpio_call((u8x8), (msg), (dly))
748uint8_t u8x8_GetMenuEvent(
u8x8_t* u8x8);
752void u8x8_SetupStdio(
u8x8_t* u8x8);
756void u8x8_Setup_SDL_128x64(
u8x8_t* u8x8);
757void u8x8_Setup_SDL_240x160(
u8x8_t* u8x8);
758int u8g_sdl_get_key(
void);
762void u8x8_Setup_TGA_DESC(
u8x8_t* u8x8);
763void u8x8_Setup_TGA_LCD(
u8x8_t* u8x8);
764void tga_save(
const char* name);
768uint8_t u8x8_GetBitmapPixel(
u8x8_t* u8x8, uint16_t x, uint16_t y);
769void u8x8_SaveBitmapTGA(
u8x8_t* u8x8,
const char* filename);
770void u8x8_SetupBitmap(
u8x8_t* u8x8, uint16_t pixel_width, uint16_t pixel_height);
771uint8_t u8x8_ConnectBitmapToU8x8(
u8x8_t* u8x8);
775void u8x8_Setup_Utf8(
u8x8_t* u8x8);
781uint8_t u8x8_d_null_cb(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
784uint8_t u8x8_d_uc1701_ea_dogs102(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
785uint8_t u8x8_d_uc1701_mini12864(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
786uint8_t u8x8_d_ssd1305_128x32_noname(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
787uint8_t u8x8_d_ssd1305_128x32_adafruit(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
788uint8_t u8x8_d_ssd1305_128x64_adafruit(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
789uint8_t u8x8_d_ssd1306_128x64_noname(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
790uint8_t u8x8_d_ssd1306_128x64_vcomh0(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
791uint8_t u8x8_d_ssd1306_128x64_alt0(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
792uint8_t u8x8_d_ssd1309_128x64_noname0(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
793uint8_t u8x8_d_ssd1309_128x64_noname2(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
794uint8_t u8x8_d_sh1106_128x64_noname(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
795uint8_t u8x8_d_sh1106_128x64_vcomh0(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
796uint8_t u8x8_d_sh1106_128x64_winstar(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
797uint8_t u8x8_d_sh1106_72x40_wise(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
798uint8_t u8x8_d_sh1106_64x32(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
799uint8_t u8x8_d_sh1107_64x128(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
800uint8_t u8x8_d_sh1107_seeed_96x96(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
801uint8_t u8x8_d_sh1107_128x128(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
802uint8_t u8x8_d_sh1107_pimoroni_128x128(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
803uint8_t u8x8_d_sh1107_seeed_128x128(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
804uint8_t u8x8_d_sh1108_160x160(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
805uint8_t u8x8_d_sh1122_256x64(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
806uint8_t u8x8_d_st7920_192x32(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
807uint8_t u8x8_d_st7920_128x64(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
808uint8_t u8x8_d_ssd1306_128x32_univision(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
809uint8_t u8x8_d_ssd1306_128x32_winstar(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
810uint8_t u8x8_d_ssd1306_64x48_er(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
811uint8_t u8x8_d_ssd1306_48x64_winstar(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
812uint8_t u8x8_d_ssd1306_64x32_noname(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
813uint8_t u8x8_d_ssd1306_64x32_1f(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
814uint8_t u8x8_d_ssd1306_96x16_er(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
815uint8_t u8x8_d_ssd1306_72x40_er(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
816uint8_t u8x8_d_ls013b7dh03_128x128(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
817uint8_t u8x8_d_ls027b7dh01_400x240(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
818uint8_t u8x8_d_ls013b7dh05_144x168(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
819uint8_t u8x8_d_st7511_avd_320x240(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
820uint8_t u8x8_d_st7528_nhd_c160100(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
821uint8_t u8x8_d_st7565_ea_dogm128(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
822uint8_t u8x8_d_st7565_lm6063(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
823uint8_t u8x8_d_st7565_64128n(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
824uint8_t u8x8_d_st7565_ea_dogm132(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
825uint8_t u8x8_d_st7565_zolen_128x64(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
826uint8_t u8x8_d_st7565_nhd_c12832(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
827uint8_t u8x8_d_st7565_nhd_c12864(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
828uint8_t u8x8_d_st7565_jlx12864(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
829uint8_t u8x8_d_st7565_lm6059(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
830uint8_t u8x8_d_st7565_lx12864(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
831uint8_t u8x8_d_st7565_erc12864(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
832uint8_t u8x8_d_st7565_erc12864_alt(
837uint8_t u8x8_d_st7567_pi_132x64(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
838uint8_t u8x8_d_st7567_jlx12864(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
839uint8_t u8x8_d_st7567_enh_dg128064(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
840uint8_t u8x8_d_st7567_enh_dg128064i(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
841uint8_t u8x8_d_st7567_64x32(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
842uint8_t u8x8_d_st7567_os12864(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
843uint8_t u8x8_d_st7586s_s028hn118a(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
844uint8_t u8x8_d_st7586s_erc240160(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
845uint8_t u8x8_d_st7588_jlx12864(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
846uint8_t u8x8_d_st75256_jlx256128(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
847uint8_t u8x8_d_st75256_wo256x128(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
848uint8_t u8x8_d_st75256_jlx256160(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
849uint8_t u8x8_d_st75256_jlx256160m(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
850uint8_t u8x8_d_st75256_jlx256160_alt(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
851uint8_t u8x8_d_st75256_jlx240160(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
852uint8_t u8x8_d_st75256_jlx25664(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
853uint8_t u8x8_d_st75256_jlx172104(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
854uint8_t u8x8_d_st75256_jlx19296(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
855uint8_t u8x8_d_st75320_jlx320240(
860uint8_t u8x8_d_nt7534_tg12864r(
865uint8_t u8x8_d_ld7032_60x32(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
866uint8_t u8x8_d_t6963_240x128(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
867uint8_t u8x8_d_t6963_240x64(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
868uint8_t u8x8_d_t6963_128x64(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
869uint8_t u8x8_d_t6963_128x64_alt(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
870uint8_t u8x8_d_t6963_160x80(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
871uint8_t u8x8_d_t6963_256x64(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
872uint8_t u8x8_d_ssd1316_128x32(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
873uint8_t u8x8_d_ssd1317_96x96(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
874uint8_t u8x8_d_ssd1318_128x96(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
875uint8_t u8x8_d_ssd1318_128x96_xcp(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
876uint8_t u8x8_d_ssd1322_nhd_256x64(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
877uint8_t u8x8_d_ssd1322_nhd_128x64(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
878uint8_t u8x8_d_a2printer_384x240(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
879uint8_t u8x8_d_sed1330_240x128(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
880uint8_t u8x8_d_ra8835_nhd_240x128(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
881uint8_t u8x8_d_ra8835_320x240(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
882uint8_t u8x8_d_ssd1325_nhd_128x64(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
883uint8_t u8x8_d_ssd0323_os128064(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
884uint8_t u8x8_d_ssd1327_ws_96x64(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
885uint8_t u8x8_d_ssd1327_seeed_96x96(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
886uint8_t u8x8_d_ssd1327_ea_w128128(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
887uint8_t u8x8_d_ssd1327_midas_128x128(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
888uint8_t u8x8_d_ssd1327_ws_128x128(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
889uint8_t u8x8_d_ssd1327_visionox_128x96(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
890uint8_t u8x8_d_ssd1326_er_256x32(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
891uint8_t u8x8_d_ssd1329_128x96_noname(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
892uint8_t u8x8_d_uc1601_128x32(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
893uint8_t u8x8_d_uc1604_jlx19264(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
894uint8_t u8x8_d_uc1608_erc24064(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
895uint8_t u8x8_d_uc1608_erc240120(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
896uint8_t u8x8_d_uc1608_240x128(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
897uint8_t u8x8_d_uc1610_ea_dogxl160(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
898uint8_t u8x8_d_uc1611_ea_dogm240(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
899uint8_t u8x8_d_uc1611_ea_dogxl240(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
901 u8x8_d_uc1611_ew50850(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
903 u8x8_d_uc1611_cg160160(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
904uint8_t u8x8_d_uc1617_jlx128128(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
905uint8_t u8x8_d_uc1638_160x128(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
906uint8_t u8x8_d_ks0108_128x64(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
907uint8_t u8x8_d_ks0108_erm19264(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
908uint8_t u8x8_d_sbn1661_122x32(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
909uint8_t u8x8_d_sed1520_122x32(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
910uint8_t u8x8_d_pcd8544_84x48(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
911uint8_t u8x8_d_pcf8812_96x65(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
912uint8_t u8x8_d_hx1230_96x68(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
913uint8_t u8x8_d_ssd1606_172x72(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
914uint8_t u8x8_d_ssd1607_200x200(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
915uint8_t u8x8_d_ssd1607_v2_200x200(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
916uint8_t u8x8_d_ssd1607_gd_200x200(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
917uint8_t u8x8_d_ssd1607_ws_200x200(
922uint8_t u8x8_d_il3820_296x128(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
923uint8_t u8x8_d_il3820_v2_296x128(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
924uint8_t u8x8_d_lc7981_160x80(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
925uint8_t u8x8_d_lc7981_160x160(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
926uint8_t u8x8_d_lc7981_240x128(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
927uint8_t u8x8_d_lc7981_240x64(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
928uint8_t u8x8_d_ist3020_erc19264(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
929uint8_t u8x8_d_ist7920_128x128(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
930uint8_t u8x8_d_max7219_64x8(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
931uint8_t u8x8_d_max7219_32x8(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
932uint8_t u8x8_d_max7219_16x16(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
933uint8_t u8x8_d_max7219_8x8(
u8x8_t* u8x8, uint8_t msg, uint8_t arg_int,
void* arg_ptr);
938uint16_t u8x8_upscale_byte(uint8_t x) U8X8_NOINLINE;
940void u8x8_utf8_init(
u8x8_t* u8x8);
941uint16_t u8x8_ascii_next(
u8x8_t* u8x8, uint8_t b);
942uint16_t u8x8_utf8_next(
u8x8_t* u8x8, uint8_t b);
947void u8x8_SetFont(
u8x8_t* u8x8,
const uint8_t* font_8x8);
948void u8x8_DrawGlyph(
u8x8_t* u8x8, uint8_t x, uint8_t y, uint8_t encoding);
949void u8x8_Draw2x2Glyph(
u8x8_t* u8x8, uint8_t x, uint8_t y, uint8_t encoding);
950void u8x8_Draw1x2Glyph(
u8x8_t* u8x8, uint8_t x, uint8_t y, uint8_t encoding);
951uint8_t u8x8_DrawString(
u8x8_t* u8x8, uint8_t x, uint8_t y,
const char* s);
953 u8x8_DrawUTF8(
u8x8_t* u8x8, uint8_t x, uint8_t y,
const char* s);
954uint8_t u8x8_Draw2x2String(
u8x8_t* u8x8, uint8_t x, uint8_t y,
const char* s);
955uint8_t u8x8_Draw2x2UTF8(
u8x8_t* u8x8, uint8_t x, uint8_t y,
const char* s);
956uint8_t u8x8_Draw1x2String(
u8x8_t* u8x8, uint8_t x, uint8_t y,
const char* s);
957uint8_t u8x8_Draw1x2UTF8(
u8x8_t* u8x8, uint8_t x, uint8_t y,
const char* s);
958uint8_t u8x8_GetUTF8Len(
u8x8_t* u8x8,
const char* s);
959#define u8x8_SetInverseFont(u8x8, b) (u8x8)->is_font_inverse_mode = (b)
963const char* u8x8_u8toa(uint8_t v, uint8_t d);
964const char* u8x8_u16toa(uint16_t v, uint8_t d);
965const char* u8x8_utoa(uint16_t v);
970uint8_t u8x8_GetStringLineCnt(
const char* str);
971const char* u8x8_GetStringLineStart(uint8_t line_idx,
const char* str);
972void u8x8_CopyStringLine(
char* dest, uint8_t line_idx,
const char* str);
974uint8_t u8x8_DrawUTF8Line(
u8x8_t* u8x8, uint8_t x, uint8_t y, uint8_t w,
const char* s);
976uint8_t u8x8_DrawUTF8Lines(
u8x8_t* u8x8, uint8_t x, uint8_t y, uint8_t w,
const char* s);
992typedef void (*u8x8_sl_cb)(
u8x8_t* u8x8,
u8sl_t* u8sl, uint8_t idx,
const void* aux);
994void u8sl_Next(
u8sl_t* u8sl);
995void u8sl_Prev(
u8sl_t* u8sl);
997uint8_t u8x8_UserInterfaceSelectionList(
1006uint8_t u8x8_UserInterfaceMessage(
1011 const char* buttons);
1017uint8_t u8x8_capture_get_pixel_1(uint16_t x, uint16_t y, uint8_t* dest_ptr, uint8_t tile_width);
1021uint8_t u8x8_capture_get_pixel_2(uint16_t x, uint16_t y, uint8_t* dest_ptr, uint8_t tile_width);
1023void u8x8_capture_write_pbm_pre(
1025 uint8_t tile_height,
1026 void (*out)(
const char* s));
1027void u8x8_capture_write_pbm_buffer(
1030 uint8_t tile_height,
1031 uint8_t (*get_pixel)(uint16_t x, uint16_t y, uint8_t* dest_ptr, uint8_t tile_width),
1032 void (*out)(
const char* s));
1034void u8x8_capture_write_xbm_pre(
1036 uint8_t tile_height,
1037 void (*out)(
const char* s));
1038void u8x8_capture_write_xbm_buffer(
1041 uint8_t tile_height,
1042 uint8_t (*get_pixel)(uint16_t x, uint16_t y, uint8_t* dest_ptr, uint8_t tile_width),
1043 void (*out)(
const char* s));
1049uint8_t u8x8_UserInterfaceInputValue(
1061void u8log_Init(
u8log_t* u8log, uint8_t width, uint8_t height, uint8_t* buf);
1062void u8log_SetCallback(
u8log_t* u8log, u8log_cb cb,
void* aux_data);
1063void u8log_SetRedrawMode(
u8log_t* u8log, uint8_t is_redraw_line_for_each_char);
1064void u8log_SetLineHeightOffset(
u8log_t* u8log, int8_t line_height_offset);
1065void u8log_WriteString(
u8log_t* u8log,
const char* s) U8X8_NOINLINE;
1066void u8log_WriteChar(
u8log_t* u8log, uint8_t c) U8X8_NOINLINE;
1067void u8log_WriteHex8(
u8log_t* u8log, uint8_t b) U8X8_NOINLINE;
1068void u8log_WriteHex16(
u8log_t* u8log, uint16_t v);
1069void u8log_WriteHex32(
u8log_t* u8log, uint32_t v);
1070void u8log_WriteDec8(
u8log_t* u8log, uint8_t v, uint8_t d);
1071void u8log_WriteDec16(
u8log_t* u8log, uint16_t v, uint8_t d);
1075void u8x8_DrawLog(
u8x8_t* u8x8, uint8_t x, uint8_t y,
u8log_t* u8log);
1076void u8log_u8x8_cb(
u8log_t* u8log);
1081 u8x8_font_amstrad_cpc_extended_f[] U8X8_FONT_SECTION(
"u8x8_font_amstrad_cpc_extended_f");
1083 u8x8_font_amstrad_cpc_extended_r[] U8X8_FONT_SECTION(
"u8x8_font_amstrad_cpc_extended_r");
1085 u8x8_font_amstrad_cpc_extended_n[] U8X8_FONT_SECTION(
"u8x8_font_amstrad_cpc_extended_n");
1087 u8x8_font_amstrad_cpc_extended_u[] U8X8_FONT_SECTION(
"u8x8_font_amstrad_cpc_extended_u");
1088extern const uint8_t u8x8_font_5x7_f[] U8X8_FONT_SECTION(
"u8x8_font_5x7_f");
1089extern const uint8_t u8x8_font_5x7_r[] U8X8_FONT_SECTION(
"u8x8_font_5x7_r");
1090extern const uint8_t u8x8_font_5x7_n[] U8X8_FONT_SECTION(
"u8x8_font_5x7_n");
1091extern const uint8_t u8x8_font_5x8_f[] U8X8_FONT_SECTION(
"u8x8_font_5x8_f");
1092extern const uint8_t u8x8_font_5x8_r[] U8X8_FONT_SECTION(
"u8x8_font_5x8_r");
1093extern const uint8_t u8x8_font_5x8_n[] U8X8_FONT_SECTION(
"u8x8_font_5x8_n");
1094extern const uint8_t u8x8_font_8x13_1x2_f[] U8X8_FONT_SECTION(
"u8x8_font_8x13_1x2_f");
1095extern const uint8_t u8x8_font_8x13_1x2_r[] U8X8_FONT_SECTION(
"u8x8_font_8x13_1x2_r");
1096extern const uint8_t u8x8_font_8x13_1x2_n[] U8X8_FONT_SECTION(
"u8x8_font_8x13_1x2_n");
1097extern const uint8_t u8x8_font_8x13B_1x2_f[] U8X8_FONT_SECTION(
"u8x8_font_8x13B_1x2_f");
1098extern const uint8_t u8x8_font_8x13B_1x2_r[] U8X8_FONT_SECTION(
"u8x8_font_8x13B_1x2_r");
1099extern const uint8_t u8x8_font_8x13B_1x2_n[] U8X8_FONT_SECTION(
"u8x8_font_8x13B_1x2_n");
1100extern const uint8_t u8x8_font_7x14_1x2_f[] U8X8_FONT_SECTION(
"u8x8_font_7x14_1x2_f");
1101extern const uint8_t u8x8_font_7x14_1x2_r[] U8X8_FONT_SECTION(
"u8x8_font_7x14_1x2_r");
1102extern const uint8_t u8x8_font_7x14_1x2_n[] U8X8_FONT_SECTION(
"u8x8_font_7x14_1x2_n");
1103extern const uint8_t u8x8_font_7x14B_1x2_f[] U8X8_FONT_SECTION(
"u8x8_font_7x14B_1x2_f");
1104extern const uint8_t u8x8_font_7x14B_1x2_r[] U8X8_FONT_SECTION(
"u8x8_font_7x14B_1x2_r");
1105extern const uint8_t u8x8_font_7x14B_1x2_n[] U8X8_FONT_SECTION(
"u8x8_font_7x14B_1x2_n");
1107 u8x8_font_open_iconic_arrow_1x1[] U8X8_FONT_SECTION(
"u8x8_font_open_iconic_arrow_1x1");
1109 u8x8_font_open_iconic_check_1x1[] U8X8_FONT_SECTION(
"u8x8_font_open_iconic_check_1x1");
1111 u8x8_font_open_iconic_embedded_1x1[] U8X8_FONT_SECTION(
"u8x8_font_open_iconic_embedded_1x1");
1113 u8x8_font_open_iconic_play_1x1[] U8X8_FONT_SECTION(
"u8x8_font_open_iconic_play_1x1");
1115 u8x8_font_open_iconic_thing_1x1[] U8X8_FONT_SECTION(
"u8x8_font_open_iconic_thing_1x1");
1117 u8x8_font_open_iconic_weather_1x1[] U8X8_FONT_SECTION(
"u8x8_font_open_iconic_weather_1x1");
1119 u8x8_font_open_iconic_arrow_2x2[] U8X8_FONT_SECTION(
"u8x8_font_open_iconic_arrow_2x2");
1121 u8x8_font_open_iconic_check_2x2[] U8X8_FONT_SECTION(
"u8x8_font_open_iconic_check_2x2");
1123 u8x8_font_open_iconic_embedded_2x2[] U8X8_FONT_SECTION(
"u8x8_font_open_iconic_embedded_2x2");
1125 u8x8_font_open_iconic_play_2x2[] U8X8_FONT_SECTION(
"u8x8_font_open_iconic_play_2x2");
1127 u8x8_font_open_iconic_thing_2x2[] U8X8_FONT_SECTION(
"u8x8_font_open_iconic_thing_2x2");
1129 u8x8_font_open_iconic_weather_2x2[] U8X8_FONT_SECTION(
"u8x8_font_open_iconic_weather_2x2");
1131 u8x8_font_open_iconic_arrow_4x4[] U8X8_FONT_SECTION(
"u8x8_font_open_iconic_arrow_4x4");
1133 u8x8_font_open_iconic_check_4x4[] U8X8_FONT_SECTION(
"u8x8_font_open_iconic_check_4x4");
1135 u8x8_font_open_iconic_embedded_4x4[] U8X8_FONT_SECTION(
"u8x8_font_open_iconic_embedded_4x4");
1137 u8x8_font_open_iconic_play_4x4[] U8X8_FONT_SECTION(
"u8x8_font_open_iconic_play_4x4");
1139 u8x8_font_open_iconic_thing_4x4[] U8X8_FONT_SECTION(
"u8x8_font_open_iconic_thing_4x4");
1141 u8x8_font_open_iconic_weather_4x4[] U8X8_FONT_SECTION(
"u8x8_font_open_iconic_weather_4x4");
1143 u8x8_font_open_iconic_arrow_8x8[] U8X8_FONT_SECTION(
"u8x8_font_open_iconic_arrow_8x8");
1145 u8x8_font_open_iconic_check_8x8[] U8X8_FONT_SECTION(
"u8x8_font_open_iconic_check_8x8");
1147 u8x8_font_open_iconic_embedded_8x8[] U8X8_FONT_SECTION(
"u8x8_font_open_iconic_embedded_8x8");
1149 u8x8_font_open_iconic_play_8x8[] U8X8_FONT_SECTION(
"u8x8_font_open_iconic_play_8x8");
1151 u8x8_font_open_iconic_thing_8x8[] U8X8_FONT_SECTION(
"u8x8_font_open_iconic_thing_8x8");
1153 u8x8_font_open_iconic_weather_8x8[] U8X8_FONT_SECTION(
"u8x8_font_open_iconic_weather_8x8");
1154extern const uint8_t u8x8_font_profont29_2x3_f[] U8X8_FONT_SECTION(
"u8x8_font_profont29_2x3_f");
1155extern const uint8_t u8x8_font_profont29_2x3_r[] U8X8_FONT_SECTION(
"u8x8_font_profont29_2x3_r");
1156extern const uint8_t u8x8_font_profont29_2x3_n[] U8X8_FONT_SECTION(
"u8x8_font_profont29_2x3_n");
1157extern const uint8_t u8x8_font_artossans8_r[] U8X8_FONT_SECTION(
"u8x8_font_artossans8_r");
1158extern const uint8_t u8x8_font_artossans8_n[] U8X8_FONT_SECTION(
"u8x8_font_artossans8_n");
1159extern const uint8_t u8x8_font_artossans8_u[] U8X8_FONT_SECTION(
"u8x8_font_artossans8_u");
1160extern const uint8_t u8x8_font_artosserif8_r[] U8X8_FONT_SECTION(
"u8x8_font_artosserif8_r");
1161extern const uint8_t u8x8_font_artosserif8_n[] U8X8_FONT_SECTION(
"u8x8_font_artosserif8_n");
1162extern const uint8_t u8x8_font_artosserif8_u[] U8X8_FONT_SECTION(
"u8x8_font_artosserif8_u");
1164 u8x8_font_chroma48medium8_r[] U8X8_FONT_SECTION(
"u8x8_font_chroma48medium8_r");
1166 u8x8_font_chroma48medium8_n[] U8X8_FONT_SECTION(
"u8x8_font_chroma48medium8_n");
1168 u8x8_font_chroma48medium8_u[] U8X8_FONT_SECTION(
"u8x8_font_chroma48medium8_u");
1170 u8x8_font_saikyosansbold8_n[] U8X8_FONT_SECTION(
"u8x8_font_saikyosansbold8_n");
1172 u8x8_font_saikyosansbold8_u[] U8X8_FONT_SECTION(
"u8x8_font_saikyosansbold8_u");
1173extern const uint8_t u8x8_font_torussansbold8_r[] U8X8_FONT_SECTION(
"u8x8_font_torussansbold8_r");
1174extern const uint8_t u8x8_font_torussansbold8_n[] U8X8_FONT_SECTION(
"u8x8_font_torussansbold8_n");
1175extern const uint8_t u8x8_font_torussansbold8_u[] U8X8_FONT_SECTION(
"u8x8_font_torussansbold8_u");
1176extern const uint8_t u8x8_font_victoriabold8_r[] U8X8_FONT_SECTION(
"u8x8_font_victoriabold8_r");
1177extern const uint8_t u8x8_font_victoriabold8_n[] U8X8_FONT_SECTION(
"u8x8_font_victoriabold8_n");
1178extern const uint8_t u8x8_font_victoriabold8_u[] U8X8_FONT_SECTION(
"u8x8_font_victoriabold8_u");
1180 u8x8_font_victoriamedium8_r[] U8X8_FONT_SECTION(
"u8x8_font_victoriamedium8_r");
1182 u8x8_font_victoriamedium8_n[] U8X8_FONT_SECTION(
"u8x8_font_victoriamedium8_n");
1184 u8x8_font_victoriamedium8_u[] U8X8_FONT_SECTION(
"u8x8_font_victoriamedium8_u");
1185extern const uint8_t u8x8_font_courB18_2x3_f[] U8X8_FONT_SECTION(
"u8x8_font_courB18_2x3_f");
1186extern const uint8_t u8x8_font_courB18_2x3_r[] U8X8_FONT_SECTION(
"u8x8_font_courB18_2x3_r");
1187extern const uint8_t u8x8_font_courB18_2x3_n[] U8X8_FONT_SECTION(
"u8x8_font_courB18_2x3_n");
1188extern const uint8_t u8x8_font_courR18_2x3_f[] U8X8_FONT_SECTION(
"u8x8_font_courR18_2x3_f");
1189extern const uint8_t u8x8_font_courR18_2x3_r[] U8X8_FONT_SECTION(
"u8x8_font_courR18_2x3_r");
1190extern const uint8_t u8x8_font_courR18_2x3_n[] U8X8_FONT_SECTION(
"u8x8_font_courR18_2x3_n");
1191extern const uint8_t u8x8_font_courB24_3x4_f[] U8X8_FONT_SECTION(
"u8x8_font_courB24_3x4_f");
1192extern const uint8_t u8x8_font_courB24_3x4_r[] U8X8_FONT_SECTION(
"u8x8_font_courB24_3x4_r");
1193extern const uint8_t u8x8_font_courB24_3x4_n[] U8X8_FONT_SECTION(
"u8x8_font_courB24_3x4_n");
1194extern const uint8_t u8x8_font_courR24_3x4_f[] U8X8_FONT_SECTION(
"u8x8_font_courR24_3x4_f");
1195extern const uint8_t u8x8_font_courR24_3x4_r[] U8X8_FONT_SECTION(
"u8x8_font_courR24_3x4_r");
1196extern const uint8_t u8x8_font_courR24_3x4_n[] U8X8_FONT_SECTION(
"u8x8_font_courR24_3x4_n");
1197extern const uint8_t u8x8_font_lucasarts_scumm_subtitle_o_2x2_f[] U8X8_FONT_SECTION(
1198 "u8x8_font_lucasarts_scumm_subtitle_o_2x2_f");
1199extern const uint8_t u8x8_font_lucasarts_scumm_subtitle_o_2x2_r[] U8X8_FONT_SECTION(
1200 "u8x8_font_lucasarts_scumm_subtitle_o_2x2_r");
1201extern const uint8_t u8x8_font_lucasarts_scumm_subtitle_o_2x2_n[] U8X8_FONT_SECTION(
1202 "u8x8_font_lucasarts_scumm_subtitle_o_2x2_n");
1203extern const uint8_t u8x8_font_lucasarts_scumm_subtitle_r_2x2_f[] U8X8_FONT_SECTION(
1204 "u8x8_font_lucasarts_scumm_subtitle_r_2x2_f");
1205extern const uint8_t u8x8_font_lucasarts_scumm_subtitle_r_2x2_r[] U8X8_FONT_SECTION(
1206 "u8x8_font_lucasarts_scumm_subtitle_r_2x2_r");
1207extern const uint8_t u8x8_font_lucasarts_scumm_subtitle_r_2x2_n[] U8X8_FONT_SECTION(
1208 "u8x8_font_lucasarts_scumm_subtitle_r_2x2_n");
1209extern const uint8_t u8x8_font_inr21_2x4_f[] U8X8_FONT_SECTION(
"u8x8_font_inr21_2x4_f");
1210extern const uint8_t u8x8_font_inr21_2x4_r[] U8X8_FONT_SECTION(
"u8x8_font_inr21_2x4_r");
1211extern const uint8_t u8x8_font_inr21_2x4_n[] U8X8_FONT_SECTION(
"u8x8_font_inr21_2x4_n");
1212extern const uint8_t u8x8_font_inr33_3x6_f[] U8X8_FONT_SECTION(
"u8x8_font_inr33_3x6_f");
1213extern const uint8_t u8x8_font_inr33_3x6_r[] U8X8_FONT_SECTION(
"u8x8_font_inr33_3x6_r");
1214extern const uint8_t u8x8_font_inr33_3x6_n[] U8X8_FONT_SECTION(
"u8x8_font_inr33_3x6_n");
1215extern const uint8_t u8x8_font_inr46_4x8_f[] U8X8_FONT_SECTION(
"u8x8_font_inr46_4x8_f");
1216extern const uint8_t u8x8_font_inr46_4x8_r[] U8X8_FONT_SECTION(
"u8x8_font_inr46_4x8_r");
1217extern const uint8_t u8x8_font_inr46_4x8_n[] U8X8_FONT_SECTION(
"u8x8_font_inr46_4x8_n");
1218extern const uint8_t u8x8_font_inb21_2x4_f[] U8X8_FONT_SECTION(
"u8x8_font_inb21_2x4_f");
1219extern const uint8_t u8x8_font_inb21_2x4_r[] U8X8_FONT_SECTION(
"u8x8_font_inb21_2x4_r");
1220extern const uint8_t u8x8_font_inb21_2x4_n[] U8X8_FONT_SECTION(
"u8x8_font_inb21_2x4_n");
1221extern const uint8_t u8x8_font_inb33_3x6_f[] U8X8_FONT_SECTION(
"u8x8_font_inb33_3x6_f");
1222extern const uint8_t u8x8_font_inb33_3x6_r[] U8X8_FONT_SECTION(
"u8x8_font_inb33_3x6_r");
1223extern const uint8_t u8x8_font_inb33_3x6_n[] U8X8_FONT_SECTION(
"u8x8_font_inb33_3x6_n");
1224extern const uint8_t u8x8_font_inb46_4x8_f[] U8X8_FONT_SECTION(
"u8x8_font_inb46_4x8_f");
1225extern const uint8_t u8x8_font_inb46_4x8_r[] U8X8_FONT_SECTION(
"u8x8_font_inb46_4x8_r");
1226extern const uint8_t u8x8_font_inb46_4x8_n[] U8X8_FONT_SECTION(
"u8x8_font_inb46_4x8_n");
1227extern const uint8_t u8x8_font_pressstart2p_f[] U8X8_FONT_SECTION(
"u8x8_font_pressstart2p_f");
1228extern const uint8_t u8x8_font_pressstart2p_r[] U8X8_FONT_SECTION(
"u8x8_font_pressstart2p_r");
1229extern const uint8_t u8x8_font_pressstart2p_n[] U8X8_FONT_SECTION(
"u8x8_font_pressstart2p_n");
1230extern const uint8_t u8x8_font_pressstart2p_u[] U8X8_FONT_SECTION(
"u8x8_font_pressstart2p_u");
1231extern const uint8_t u8x8_font_pcsenior_f[] U8X8_FONT_SECTION(
"u8x8_font_pcsenior_f");
1232extern const uint8_t u8x8_font_pcsenior_r[] U8X8_FONT_SECTION(
"u8x8_font_pcsenior_r");
1233extern const uint8_t u8x8_font_pcsenior_n[] U8X8_FONT_SECTION(
"u8x8_font_pcsenior_n");
1234extern const uint8_t u8x8_font_pcsenior_u[] U8X8_FONT_SECTION(
"u8x8_font_pcsenior_u");
1236 u8x8_font_pxplusibmcgathin_f[] U8X8_FONT_SECTION(
"u8x8_font_pxplusibmcgathin_f");
1238 u8x8_font_pxplusibmcgathin_r[] U8X8_FONT_SECTION(
"u8x8_font_pxplusibmcgathin_r");
1240 u8x8_font_pxplusibmcgathin_n[] U8X8_FONT_SECTION(
"u8x8_font_pxplusibmcgathin_n");
1242 u8x8_font_pxplusibmcgathin_u[] U8X8_FONT_SECTION(
"u8x8_font_pxplusibmcgathin_u");
1243extern const uint8_t u8x8_font_pxplusibmcga_f[] U8X8_FONT_SECTION(
"u8x8_font_pxplusibmcga_f");
1244extern const uint8_t u8x8_font_pxplusibmcga_r[] U8X8_FONT_SECTION(
"u8x8_font_pxplusibmcga_r");
1245extern const uint8_t u8x8_font_pxplusibmcga_n[] U8X8_FONT_SECTION(
"u8x8_font_pxplusibmcga_n");
1246extern const uint8_t u8x8_font_pxplusibmcga_u[] U8X8_FONT_SECTION(
"u8x8_font_pxplusibmcga_u");
1248 u8x8_font_pxplustandynewtv_f[] U8X8_FONT_SECTION(
"u8x8_font_pxplustandynewtv_f");
1250 u8x8_font_pxplustandynewtv_r[] U8X8_FONT_SECTION(
"u8x8_font_pxplustandynewtv_r");
1252 u8x8_font_pxplustandynewtv_n[] U8X8_FONT_SECTION(
"u8x8_font_pxplustandynewtv_n");
1254 u8x8_font_pxplustandynewtv_u[] U8X8_FONT_SECTION(
"u8x8_font_pxplustandynewtv_u");
1256 u8x8_font_px437wyse700a_2x2_f[] U8X8_FONT_SECTION(
"u8x8_font_px437wyse700a_2x2_f");
1258 u8x8_font_px437wyse700a_2x2_r[] U8X8_FONT_SECTION(
"u8x8_font_px437wyse700a_2x2_r");
1260 u8x8_font_px437wyse700a_2x2_n[] U8X8_FONT_SECTION(
"u8x8_font_px437wyse700a_2x2_n");
1262 u8x8_font_px437wyse700b_2x2_f[] U8X8_FONT_SECTION(
"u8x8_font_px437wyse700b_2x2_f");
1264 u8x8_font_px437wyse700b_2x2_r[] U8X8_FONT_SECTION(
"u8x8_font_px437wyse700b_2x2_r");
1266 u8x8_font_px437wyse700b_2x2_n[] U8X8_FONT_SECTION(
"u8x8_font_px437wyse700b_2x2_n");