From c65a87fab6ab23aaebd8156b24058a434574a73a Mon Sep 17 00:00:00 2001 From: j4nk Date: Fri, 6 Jan 2023 20:05:34 -0500 Subject: [PATCH] Updated termbox, added scorekeeping to pong.lua --- Makefile | 4 +- main.c | 5 +- oct_termbox_sprite.h | 4 +- pong.lua | 22 +-- termbox.h | 327 ++++++++++++++++++++++++++----------------- termbox_render.h | 4 +- test | Bin 98888 -> 91600 bytes test.c | 3 +- 8 files changed, 226 insertions(+), 143 deletions(-) diff --git a/Makefile b/Makefile index cc7d5ed..20a759d 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ CC=cc -CLIB=-L/usr/local/lib -llua5.3 -lncurses -ltermbox +CLIB=-L/usr/local/lib -llua5.3 INC=-I/usr/local/include BIN=main DEBUG=-g @@ -7,4 +7,4 @@ DEBUG=-g all: $(CC) $(INC) $(CLIB) main.c -o $(BIN) $(DEBUG) test: - $(CC) $(INC) $(CLIB) -D_BSD_SOURCE test.c -o test $(DEBUG) + $(CC) $(INC) $(CLIB) test.c -o test $(DEBUG) diff --git a/main.c b/main.c index e36b1dd..aa32db4 100644 --- a/main.c +++ b/main.c @@ -1,10 +1,11 @@ #include -#include -#include +#include +#include #include "termbox_render.h" #include "oct_termbox_sprite.h" #define TB_IMPL +#include "termbox.h" lua_State *L; diff --git a/oct_termbox_sprite.h b/oct_termbox_sprite.h index 90ac329..83fffb3 100644 --- a/oct_termbox_sprite.h +++ b/oct_termbox_sprite.h @@ -4,8 +4,8 @@ #include #include #include -#include -#include +#include +#include #include "termbox.h" #define OCT_MAX_SPRITE_SIZE 101 diff --git a/pong.lua b/pong.lua index 93af6e2..792f13a 100644 --- a/pong.lua +++ b/pong.lua @@ -13,8 +13,10 @@ top_border = oct_tb_sprite_new(); bottom_border = oct_tb_sprite_new(); left_border = oct_tb_sprite_new(); right_border = oct_tb_sprite_new(); -score_p1 = oct_tb_sprite_new(); -score_p2 = oct_tb_sprite_new(); +score_p1_sprite = oct_tb_sprite_new(); +score_p2_sprite = oct_tb_sprite_new(); +score_p1 = 0; +score_p2 = 0; init_text = oct_tb_sprite_new(); border_topbottom = ""; @@ -73,12 +75,12 @@ function oct_init() right_border["shape"] = border_leftright; right_border["x"] = width-1; right_border["y"] = 1; - score_p1["x"] = 0; - score_p2["x"] = 0; - score_p1["y"] = height+1; - score_p2["y"] = height+2; - score_p1["shape"] = "Player 1: 0"; - score_p2["shape"] = "Player 2: 0"; + score_p1_sprite["x"] = 0; + score_p2_sprite["x"] = 0; + score_p1_sprite["y"] = height+1; + score_p2_sprite["y"] = height+2; + score_p1_sprite["shape"] = "Player 1: " .. tostring(score_p1); + score_p2_sprite["shape"] = "Player 2: " .. tostring(score_p2); init_text["shape"] = "Press SPACE to begin"; pause(); end @@ -122,6 +124,8 @@ function oct_loop(key, ch) then dx = -dx; else + score_p2 = score_p2 + 1; + score_p2_sprite["shape"] = "Player 2: " .. score_p2; pause(); end end @@ -131,6 +135,8 @@ function oct_loop(key, ch) then dx = -dx; else + score_p1 = score_p1 + 1; + score_p1_sprite["shape"] = "Player 1: " .. score_p1; pause(); end end diff --git a/termbox.h b/termbox.h index 9dd0cdc..febf364 100644 --- a/termbox.h +++ b/termbox.h @@ -2,7 +2,7 @@ MIT License Copyright (c) 2010-2020 nsf - 2015-2021 Adam Saponara + 2015-2022 Adam Saponara Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -56,6 +56,20 @@ SOFTWARE. extern "C" { #endif +// __ffi_start + +#define TB_VERSION_STR "2.1.0-dev" + +#if defined(TB_LIB_OPTS) || 0 // __tb_lib_opts +// Ensure consistent compile-time options when using as a library +#undef TB_OPT_TRUECOLOR +#undef TB_OPT_EGC +#undef TB_OPT_PRINTF_BUF +#undef TB_OPT_READ_BUF +#define TB_OPT_TRUECOLOR +#define TB_OPT_EGC +#endif + /* ASCII key constants (tb_event.key) */ #define TB_KEY_CTRL_TILDE 0x00 #define TB_KEY_CTRL_2 0x00 /* clash with 'CTRL_TILDE' */ @@ -182,7 +196,6 @@ extern "C" { #define TB_HARDCAP_EXIT_MOUSE "\x1b[?1006l\x1b[?1015l\x1b[?1002l\x1b[?1000l" /* Colors (numeric) and attributes (bitwise) (tb_cell.fg, tb_cell.bg) */ -#define TB_DEFAULT 0x0000 #define TB_BLACK 0x0001 #define TB_RED 0x0002 #define TB_GREEN 0x0003 @@ -196,12 +209,14 @@ extern "C" { #define TB_REVERSE 0x0400 #define TB_ITALIC 0x0800 #define TB_BLINK 0x1000 +#define TB_DEFAULT 0x2000 #ifdef TB_OPT_TRUECOLOR #define TB_TRUECOLOR_BOLD 0x01000000 #define TB_TRUECOLOR_UNDERLINE 0x02000000 #define TB_TRUECOLOR_REVERSE 0x04000000 #define TB_TRUECOLOR_ITALIC 0x08000000 #define TB_TRUECOLOR_BLINK 0x10000000 +#define TB_TRUECOLOR_DEFAULT 0x20000000 #endif /* Event types (tb_event.type) */ @@ -298,8 +313,6 @@ extern "C" { #define tb_free free #endif -// __ffi_start - #ifdef TB_OPT_TRUECOLOR typedef uint32_t uintattr_t; #else @@ -329,8 +342,8 @@ typedef uint16_t uintattr_t; */ struct tb_cell { uint32_t ch; /* a Unicode character */ - uintattr_t fg; /* bit-wise foreground attributes */ - uintattr_t bg; /* bit-wise background attributes */ + uintattr_t fg; /* bitwise foreground attributes */ + uintattr_t bg; /* bitwise background attributes */ #ifdef TB_OPT_EGC uint32_t *ech; /* a grapheme cluster of Unicode code points */ size_t nech; /* length in bytes of ech, 0 means use ch instead of ech */ @@ -353,7 +366,7 @@ struct tb_cell { */ struct tb_event { uint8_t type; /* one of TB_EVENT_* constants */ - uint8_t mod; /* bit-wise TB_MOD_* constants */ + uint8_t mod; /* bitwise TB_MOD_* constants */ uint16_t key; /* one of TB_KEY_* constants */ uint32_t ch; /* a Unicode code point */ int32_t w; /* resize width */ @@ -367,11 +380,11 @@ struct tb_event { * successful initialization, the library must be finalized using the * tb_shutdown() function. */ -int tb_init(); +int tb_init(void); int tb_init_file(const char *path); int tb_init_fd(int ttyfd); int tb_init_rwfd(int rfd, int wfd); -int tb_shutdown(); +int tb_shutdown(void); /* Returns the size of the internal back buffer (which is the same as terminal's * window size in rows and columns). The internal buffer can be resized after @@ -379,27 +392,32 @@ int tb_shutdown(); * unspecified negative value when called before tb_init() or after * tb_shutdown(). */ -int tb_width(); -int tb_height(); +int tb_width(void); +int tb_height(void); /* Clears the internal back buffer using TB_DEFAULT color or the * color/attributes set by tb_set_clear_attrs() function. */ -int tb_clear(); +int tb_clear(void); int tb_set_clear_attrs(uintattr_t fg, uintattr_t bg); /* Synchronizes the internal back buffer with the terminal by writing to tty. */ -int tb_present(); +int tb_present(void); /* Sets the position of the cursor. Upper-left character is (0, 0). */ int tb_set_cursor(int cx, int cy); -int tb_hide_cursor(); +int tb_hide_cursor(void); -/* Set cell contents in the internal back buffer at the specified position. Use - * tb_set_cell_ex() for rendering grapheme clusters (e.g., combining diacritical - * marks). Function tb_set_cell(x, y, ch, fg, bg) is equivalent to - * tb_set_cell_ex(x, y, &ch, 1, fg, bg). tb_extend_cell() is a shortcut for - * appending 1 code point to cell->ech. +/* Set cell contents in the internal back buffer at the specified position. + * + * Use tb_set_cell_ex() for rendering grapheme clusters (e.g., combining + * diacritical marks). + * + * Function tb_set_cell(x, y, ch, fg, bg) is equivalent to + * tb_set_cell_ex(x, y, &ch, 1, fg, bg). + * + * Function tb_extend_cell() is a shortcut for appending 1 code point to + * cell->ech. */ int tb_set_cell(int x, int y, uint32_t ch, uintattr_t fg, uintattr_t bg); int tb_set_cell_ex(int x, int y, uint32_t *ch, size_t nch, uintattr_t fg, @@ -429,15 +447,22 @@ int tb_extend_cell(int x, int y, uint32_t ch); */ int tb_set_input_mode(int mode); -/* Sets the termbox output mode. Termbox has three output modes: +/* Sets the termbox output mode. Termbox has multiple output modes: + * + * 1. TB_OUTPUT_NORMAL => [0..8] * - * 1. TB_OUTPUT_NORMAL => [1..8] * This mode provides 8 different colors: * TB_BLACK, TB_RED, TB_GREEN, TB_YELLOW, * TB_BLUE, TB_MAGENTA, TB_CYAN, TB_WHITE - * Colors may be bitwise OR'd with attributes: + * + * Plus TB_DEFAULT which skips sending a color code (i.e., uses the + * terminal's default color). + * + * Colors (including TB_DEFAULT) may be bitwise OR'd with attributes: * TB_BOLD, TB_UNDERLINE, TB_REVERSE, TB_ITALIC, TB_BLINK * + * The value 0 is interpreted as TB_DEFAULT. + * * Some notes: TB_REVERSE can be applied as either fg or bg attributes for * the same effect. TB_BOLD, TB_UNDERLINE, TB_ITALIC, TB_BLINK apply as fg * attributes only, and are ignored as bg attributes. @@ -446,32 +471,49 @@ int tb_set_input_mode(int mode); * tb_set_cell(x, y, '@', TB_BLACK | TB_BOLD, TB_RED); * * 2. TB_OUTPUT_256 => [0..255] + * * In this mode you get 256 distinct colors: * 0x00 - 0x07: the 8 colors as in TB_OUTPUT_NORMAL * 0x08 - 0x0f: bright versions of the above * 0x10 - 0xe7: 216 different colors * 0xe8 - 0xff: 24 different shades of grey * - * Example usage: - * tb_set_cell(x, y, '@', 184, 240); - * tb_set_cell(x, y, '@', 0xb8, 0xf0); + * Attributes may be bitwise OR'd as in TB_OUTPUT_NORMAL. + * + * In this mode 0x00 represents TB_BLACK, so TB_DEFAULT must be used for + * default colors. + * + * 3. TB_OUTPUT_216 => [0..216] * - * 3. TB_OUTPUT_216 => [0..215] * This mode supports the 3rd range of TB_OUTPUT_256 only, but you don't * need to provide an offset. * - * 4. TB_OUTPUT_GRAYSCALE => [0..23] + * The value 0 is interpreted as TB_DEFAULT. + * + * 4. TB_OUTPUT_GRAYSCALE => [0..24] + * * This mode supports the 4th range of TB_OUTPUT_256 only, but you don't * need to provide an offset. * + * The value 0 is interpreted as TB_DEFAULT. + * * 5. TB_OUTPUT_TRUECOLOR => [0x000000..0xffffff] + * * This mode provides 24-bit color on supported terminals. The format is * 0xRRGGBB. Colors may be bitwise OR'd with `TB_TRUECOLOR_*` attributes. * + * In this mode 0x000000 represents black, so TB_TRUECOLOR_DEFAULT must be + * used for default colors. + * * If mode is TB_OUTPUT_CURRENT, the function returns the current output mode. * * The default output mode is TB_OUTPUT_NORMAL. * + * To use the terminal default color (i.e., to not send an escape code), pass + * TB_DEFAULT (or TB_TRUECOLOR_DEFAULT in TB_OUTPUT_TRUECOLOR mode). For + * convenience, the value 0 is interpreted as TB_DEFAULT in TB_OUTPUT_NORMAL, + * TB_OUTPUT_216, and TB_OUTPUT_GRAYSCALE. + * * Note, not all terminals support all output modes, especially beyond * TB_OUTPUT_NORMAL. There is also no very reliable way to determine color * support dynamically. If portability is desired, callers are recommended to @@ -526,11 +568,12 @@ int tb_set_func(int fn_type, int (*fn)(struct tb_event *, size_t *)); int tb_utf8_char_length(char c); int tb_utf8_char_to_unicode(uint32_t *out, const char *c); int tb_utf8_unicode_to_char(char *out, uint32_t c); -int tb_last_errno(); +int tb_last_errno(void); const char *tb_strerror(int err); -struct tb_cell *tb_cell_buffer(); -int tb_has_truecolor(); -int tb_has_egc(); +struct tb_cell *tb_cell_buffer(void); +int tb_has_truecolor(void); +int tb_has_egc(void); +const char *tb_version(void); #ifdef __cplusplus } @@ -624,6 +667,7 @@ struct tb_global_t { int initialized; int (*fn_extract_esc_pre)(struct tb_event *, size_t *); int (*fn_extract_esc_post)(struct tb_event *, size_t *); + char errbuf[1024]; }; static struct tb_global_t global = {0}; @@ -1312,28 +1356,28 @@ static const unsigned char utf8_length[256] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, static const unsigned char utf8_mask[6] = {0x7f, 0x1f, 0x0f, 0x07, 0x03, 0x01}; -static int tb_reset(); +static int tb_reset(void); static int tb_printf_inner(int x, int y, uintattr_t fg, uintattr_t bg, size_t *out_w, const char *fmt, va_list vl); -static int init_term_attrs(); -static int init_term_caps(); -static int init_cap_trie(); +static int init_term_attrs(void); +static int init_term_caps(void); +static int init_cap_trie(void); static int cap_trie_add(const char *cap, uint16_t key, uint8_t mod); static int cap_trie_find(const char *buf, size_t nbuf, struct cap_trie_t **last, size_t *depth); static int cap_trie_deinit(struct cap_trie_t *node); -static int init_resize_handler(); -static int send_init_escape_codes(); -static int send_clear(); -static int update_term_size(); -static int update_term_size_via_esc(); -static int init_cellbuf(); -static int tb_deinit(); -static int load_terminfo(); +static int init_resize_handler(void); +static int send_init_escape_codes(void); +static int send_clear(void); +static int update_term_size(void); +static int update_term_size_via_esc(void); +static int init_cellbuf(void); +static int tb_deinit(void); +static int load_terminfo(void); static int load_terminfo_from_path(const char *path, const char *term); static int read_terminfo_path(const char *path); -static int parse_terminfo_caps(); -static int load_builtin_caps(); +static int parse_terminfo_caps(void); +static int load_builtin_caps(void); static const char *get_terminfo_string(int16_t str_offsets_pos, int16_t str_table_pos, int16_t str_table_len, int16_t str_index); static int wait_event(struct tb_event *event, int timeout); @@ -1342,10 +1386,11 @@ static int extract_esc(struct tb_event *event); static int extract_esc_user(struct tb_event *event, int is_post); static int extract_esc_cap(struct tb_event *event); static int extract_esc_mouse(struct tb_event *event); -static int resize_cellbufs(); +static int resize_cellbufs(void); static void handle_resize(int sig); static int send_attr(uintattr_t fg, uintattr_t bg); -static int send_sgr(uintattr_t fg, uintattr_t bg); +static int send_sgr(uintattr_t fg, uintattr_t bg, uintattr_t fg_is_default, + uintattr_t bg_is_default); static int send_cursor_if(int x, int y); static int send_char(int x, int y, uint32_t ch); static int send_cluster(int x, int y, uint32_t *ch, size_t nch); @@ -1368,7 +1413,7 @@ static int bytebuf_flush(struct bytebuf_t *b, int fd); static int bytebuf_reserve(struct bytebuf_t *b, size_t sz); static int bytebuf_free(struct bytebuf_t *b); -int tb_init() { +int tb_init(void) { return tb_init_file("/dev/tty"); } @@ -1416,23 +1461,23 @@ int tb_init_rwfd(int rfd, int wfd) { return rv; } -int tb_shutdown() { +int tb_shutdown(void) { if_not_init_return(); tb_deinit(); return TB_OK; } -int tb_width() { +int tb_width(void) { if_not_init_return(); return global.width; } -int tb_height() { +int tb_height(void) { if_not_init_return(); return global.height; } -int tb_clear() { +int tb_clear(void) { if_not_init_return(); return cellbuf_clear(&global.back); } @@ -1444,7 +1489,7 @@ int tb_set_clear_attrs(uintattr_t fg, uintattr_t bg) { return TB_OK; } -int tb_present() { +int tb_present(void) { if_not_init_return(); int rv; @@ -1468,7 +1513,8 @@ int tb_present() { w = wcswidth((wchar_t *)back->ech, back->nech); else #endif - w = wcwidth(back->ch); + /* wcwidth() simply returns -1 on overflow of wchar_t */ + w = wcwidth((wchar_t)back->ch); } if (w < 1) { w = 1; @@ -1527,7 +1573,7 @@ int tb_set_cursor(int cx, int cy) { return TB_OK; } -int tb_hide_cursor() { +int tb_hide_cursor(void) { if_not_init_return(); int rv; if (global.cursor_x >= 0) { @@ -1660,7 +1706,7 @@ int tb_print_ex(int x, int y, uintattr_t fg, uintattr_t bg, size_t *out_w, } while (*str) { str += tb_utf8_char_to_unicode(&uni, str); - w = wcwidth(uni); + w = wcwidth((wchar_t)uni); if (w < 0) { w = 1; } @@ -1726,7 +1772,7 @@ int tb_set_func(int fn_type, int (*fn)(struct tb_event *, size_t *)) { return TB_ERR; } -struct tb_cell *tb_cell_buffer() { +struct tb_cell *tb_cell_buffer(void) { if (!global.initialized) return NULL; return global.back.cells; @@ -1788,7 +1834,7 @@ int tb_utf8_unicode_to_char(char *out, uint32_t c) { return len; } -int tb_last_errno() { +int tb_last_errno(void) { return global.last_errno; } @@ -1830,11 +1876,12 @@ const char *tb_strerror(int err) { case TB_ERR_RESIZE_POLL: case TB_ERR_RESIZE_READ: default: - return strerror(global.last_errno); + strerror_r(global.last_errno, global.errbuf, sizeof(global.errbuf)); + return (const char *)global.errbuf; } } -int tb_has_truecolor() { +int tb_has_truecolor(void) { #ifdef TB_OPT_TRUECOLOR return 1; #else @@ -1842,7 +1889,7 @@ int tb_has_truecolor() { #endif } -int tb_has_egc() { +int tb_has_egc(void) { #ifdef TB_OPT_EGC return 1; #else @@ -1850,7 +1897,11 @@ int tb_has_egc() { #endif } -static int tb_reset() { +const char *tb_version(void) { + return TB_VERSION_STR; +} + +static int tb_reset(void) { int ttyfd_open = global.ttyfd_open; memset(&global, 0, sizeof(global)); global.ttyfd = -1; @@ -1874,7 +1925,7 @@ static int tb_reset() { return TB_OK; } -static int init_term_attrs() { +static int init_term_attrs(void) { if (global.ttyfd < 0) { return TB_OK; } @@ -1911,14 +1962,14 @@ int tb_printf_inner(int x, int y, uintattr_t fg, uintattr_t bg, size_t *out_w, return tb_print_ex(x, y, fg, bg, out_w, buf); } -static int init_term_caps() { +static int init_term_caps(void) { if (load_terminfo() == TB_OK) { return parse_terminfo_caps(); } return load_builtin_caps(); } -static int init_cap_trie() { +static int init_cap_trie(void) { int rv, i; // Add caps from terminfo or built-in @@ -2026,7 +2077,7 @@ static int cap_trie_deinit(struct cap_trie_t *node) { return TB_OK; } -static int init_resize_handler() { +static int init_resize_handler(void) { if (pipe(global.resize_pipefd) != 0) { global.last_errno = errno; return TB_ERR_RESIZE_PIPE; @@ -2043,7 +2094,7 @@ static int init_resize_handler() { return TB_OK; } -static int send_init_escape_codes() { +static int send_init_escape_codes(void) { int rv; if_err_return(rv, bytebuf_puts(&global.out, global.caps[TB_CAP_ENTER_CA])); if_err_return(rv, @@ -2053,7 +2104,7 @@ static int send_init_escape_codes() { return TB_OK; } -static int send_clear() { +static int send_clear(void) { int rv; if_err_return(rv, send_attr(global.fg, global.bg)); @@ -2069,7 +2120,7 @@ static int send_clear() { return TB_OK; } -static int update_term_size() { +static int update_term_size(void) { int rv, ioctl_errno; if (global.ttyfd < 0) { @@ -2094,7 +2145,7 @@ static int update_term_size() { return TB_ERR_RESIZE_IOCTL; } -static int update_term_size_via_esc() { +static int update_term_size_via_esc(void) { #ifndef TB_RESIZE_FALLBACK_MS #define TB_RESIZE_FALLBACK_MS 1000 #endif @@ -2139,7 +2190,7 @@ static int update_term_size_via_esc() { return TB_OK; } -static int init_cellbuf() { +static int init_cellbuf(void) { int rv; if_err_return(rv, cellbuf_init(&global.back, global.width, global.height)); if_err_return(rv, cellbuf_init(&global.front, global.width, global.height)); @@ -2148,7 +2199,7 @@ static int init_cellbuf() { return TB_OK; } -static int tb_deinit() { +static int tb_deinit(void) { if (global.caps[0] != NULL && global.wfd >= 0) { bytebuf_puts(&global.out, global.caps[TB_CAP_SHOW_CURSOR]); bytebuf_puts(&global.out, global.caps[TB_CAP_SGR0]); @@ -2188,7 +2239,7 @@ static int tb_deinit() { return TB_OK; } -static int load_terminfo() { +static int load_terminfo(void) { int rv; char tmp[PATH_MAX]; @@ -2297,7 +2348,7 @@ static int read_terminfo_path(const char *path) { return TB_OK; } -static int parse_terminfo_caps() { +static int parse_terminfo_caps(void) { // See term(5) "LEGACY STORAGE FORMAT" and "EXTENDED STORAGE FORMAT" for a // description of this behavior. @@ -2349,7 +2400,7 @@ static int parse_terminfo_caps() { return TB_OK; } -static int load_builtin_caps() { +static int load_builtin_caps(void) { int i, j; const char *term = getenv("TERM"); @@ -2388,6 +2439,10 @@ static const char *get_terminfo_string(int16_t str_offsets_pos, const int16_t *str_offset = (int16_t *)(global.terminfo + (int)str_offsets_pos + ((int)str_index * (int)sizeof(int16_t))); + if (*str_offset < 0) { + // A negative indicates the cap is absent from this terminal + return ""; + } if (*str_offset >= str_table_len) { // Invalid string offset return NULL; @@ -2687,10 +2742,10 @@ static int extract_esc_mouse(struct tb_event *event) { } else { int start = (type == TYPE_1015 ? 2 : 3); - int n1 = strtoul(&in->buf[start], NULL, 10); - int n2 = + unsigned n1 = strtoul(&in->buf[start], NULL, 10); + unsigned n2 = strtoul(&in->buf[indices[FIRST_SEMICOLON] + 1], NULL, 10); - int n3 = + unsigned n3 = strtoul(&in->buf[indices[LAST_SEMICOLON] + 1], NULL, 10); if (type == TYPE_1015) { @@ -2754,7 +2809,7 @@ static int extract_esc_mouse(struct tb_event *event) { return ret; } -static int resize_cellbufs() { +static int resize_cellbufs(void) { int rv; if_err_return(rv, cellbuf_resize(&global.back, global.width, global.height)); @@ -2795,35 +2850,36 @@ static int send_attr(uintattr_t fg, uintattr_t bg) { case TB_OUTPUT_216: cfg = fg & 0xff; - if (cfg > 215) - cfg = 7; cbg = bg & 0xff; - if (cbg > 215) - cbg = 0; - cfg += 0x10; - cbg += 0x10; + if (cfg > 216) + cfg = 216; + if (cbg > 216) + cbg = 216; + cfg += 0x0f; + cbg += 0x0f; break; case TB_OUTPUT_GRAYSCALE: cfg = fg & 0xff; - if (cfg > 23) - cfg = 23; cbg = bg & 0xff; - if (cbg > 23) - cbg = 0; - cfg += 0xe8; - cbg += 0xe8; + if (cfg > 24) + cfg = 24; + if (cbg > 24) + cbg = 24; + cfg += 0xe7; + cbg += 0xe7; break; #ifdef TB_OPT_TRUECOLOR case TB_OUTPUT_TRUECOLOR: - cfg = fg; - cbg = bg; + cfg = fg & 0xffffff; + cbg = bg & 0xffffff; break; #endif } - uintattr_t attr_bold, attr_blink, attr_italic, attr_underline, attr_reverse; + uintattr_t attr_bold, attr_blink, attr_italic, attr_underline, attr_reverse, + attr_default; #ifdef TB_OPT_TRUECOLOR if (global.output_mode == TB_OUTPUT_TRUECOLOR) { attr_bold = TB_TRUECOLOR_BOLD; @@ -2831,6 +2887,7 @@ static int send_attr(uintattr_t fg, uintattr_t bg) { attr_italic = TB_TRUECOLOR_ITALIC; attr_underline = TB_TRUECOLOR_UNDERLINE; attr_reverse = TB_TRUECOLOR_REVERSE; + attr_default = TB_TRUECOLOR_DEFAULT; } else #endif { @@ -2839,6 +2896,19 @@ static int send_attr(uintattr_t fg, uintattr_t bg) { attr_italic = TB_ITALIC; attr_underline = TB_UNDERLINE; attr_reverse = TB_REVERSE; + attr_default = TB_DEFAULT; + } + + /* For convenience (and some back compat), interpret 0 as default in some + * modes */ + if (global.output_mode == TB_OUTPUT_NORMAL || + global.output_mode == TB_OUTPUT_216 || + global.output_mode == TB_OUTPUT_GRAYSCALE) + { + if ((fg & 0xff) == 0) + fg |= attr_default; + if ((bg & 0xff) == 0) + bg |= attr_default; } if (fg & attr_bold) @@ -2859,7 +2929,7 @@ static int send_attr(uintattr_t fg, uintattr_t bg) { if_err_return(rv, bytebuf_puts(&global.out, global.caps[TB_CAP_REVERSE])); - if_err_return(rv, send_sgr(cfg, cbg)); + if_err_return(rv, send_sgr(cfg, cbg, fg & attr_default, bg & attr_default)); global.last_fg = fg; global.last_bg = bg; @@ -2867,16 +2937,12 @@ static int send_attr(uintattr_t fg, uintattr_t bg) { return TB_OK; } -static int send_sgr(uintattr_t fg, uintattr_t bg) { +static int send_sgr(uintattr_t cfg, uintattr_t cbg, uintattr_t fg_is_default, + uintattr_t bg_is_default) { int rv; char nbuf[32]; - if ( -#ifdef TB_OPT_TRUECOLOR - global.output_mode != TB_OUTPUT_TRUECOLOR && -#endif - fg == TB_DEFAULT && bg == TB_DEFAULT) - { + if (fg_is_default && bg_is_default) { return TB_OK; } @@ -2884,16 +2950,16 @@ static int send_sgr(uintattr_t fg, uintattr_t bg) { default: case TB_OUTPUT_NORMAL: send_literal(rv, "\x1b["); - if (fg != TB_DEFAULT) { + if (!fg_is_default) { send_literal(rv, "3"); - send_num(rv, nbuf, fg - 1); - if (bg != TB_DEFAULT) { + send_num(rv, nbuf, cfg - 1); + if (!bg_is_default) { send_literal(rv, ";"); } } - if (bg != TB_DEFAULT) { + if (!bg_is_default) { send_literal(rv, "4"); - send_num(rv, nbuf, bg - 1); + send_num(rv, nbuf, cbg - 1); } send_literal(rv, "m"); break; @@ -2902,34 +2968,42 @@ static int send_sgr(uintattr_t fg, uintattr_t bg) { case TB_OUTPUT_216: case TB_OUTPUT_GRAYSCALE: send_literal(rv, "\x1b["); - if (fg != TB_DEFAULT) { + if (!fg_is_default) { send_literal(rv, "38;5;"); - send_num(rv, nbuf, fg); - if (bg != TB_DEFAULT) { + send_num(rv, nbuf, cfg); + if (!bg_is_default) { send_literal(rv, ";"); } } - if (bg != TB_DEFAULT) { + if (!bg_is_default) { send_literal(rv, "48;5;"); - send_num(rv, nbuf, bg); + send_num(rv, nbuf, cbg); } send_literal(rv, "m"); break; #ifdef TB_OPT_TRUECOLOR case TB_OUTPUT_TRUECOLOR: - send_literal(rv, "\x1b[38;2;"); - send_num(rv, nbuf, (fg >> 16) & 0xff); - send_literal(rv, ";"); - send_num(rv, nbuf, (fg >> 8) & 0xff); - send_literal(rv, ";"); - send_num(rv, nbuf, fg & 0xff); - send_literal(rv, ";48;2;"); - send_num(rv, nbuf, (bg >> 16) & 0xff); - send_literal(rv, ";"); - send_num(rv, nbuf, (bg >> 8) & 0xff); - send_literal(rv, ";"); - send_num(rv, nbuf, bg & 0xff); + send_literal(rv, "\x1b["); + if (!fg_is_default) { + send_literal(rv, "38;2;"); + send_num(rv, nbuf, (cfg >> 16) & 0xff); + send_literal(rv, ";"); + send_num(rv, nbuf, (cfg >> 8) & 0xff); + send_literal(rv, ";"); + send_num(rv, nbuf, cfg & 0xff); + if (!bg_is_default) { + send_literal(rv, ";"); + } + } + if (!bg_is_default) { + send_literal(rv, "48;2;"); + send_num(rv, nbuf, (cbg >> 16) & 0xff); + send_literal(rv, ";"); + send_num(rv, nbuf, (cbg >> 8) & 0xff); + send_literal(rv, ";"); + send_num(rv, nbuf, cbg & 0xff); + } send_literal(rv, "m"); break; #endif @@ -2980,9 +3054,10 @@ static int send_cluster(int x, int y, uint32_t *ch, size_t nch) { static int convert_num(uint32_t num, char *buf) { int i, l = 0; - int ch; + char ch; do { - buf[l++] = '0' + (num % 10); + /* '0' = 48; 48 + num%10 < 58 < MAX_8bitCHAR */ + buf[l++] = (char)('0' + (num % 10)); num /= 10; } while (num); for (i = 0; i < l / 2; i++) { diff --git a/termbox_render.h b/termbox_render.h index 609e0fe..60fcb2d 100644 --- a/termbox_render.h +++ b/termbox_render.h @@ -3,8 +3,8 @@ #include #include -#include -#include +#include +#include #include "termbox.h" #include "oct_termbox_sprite.h" #define OCT_MAX_SPRITE_SIZE 101 diff --git a/test b/test index d2bbb74259f759e1c0634abaefdd6c7bad3034b6..8839477f35eaa9969152963c04152307b3629295 100755 GIT binary patch literal 91600 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 literal 98888 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 O*Q;B0`uw-Q|NjFfK$?C4 diff --git a/test.c b/test.c index 74ed6ba..6c2a633 100644 --- a/test.c +++ b/test.c @@ -1,6 +1,7 @@ +#include + #define TB_IMPL #include "termbox.h" -#include int main(int argc, char **argv) { struct tb_event ev;