diff options
author | Přemysl Janouch <p.janouch@gmail.com> | 2017-01-23 22:45:13 +0100 |
---|---|---|
committer | Přemysl Janouch <p.janouch@gmail.com> | 2017-01-23 22:45:13 +0100 |
commit | fccfd1dd3b3e256db8759cfd6dba7cf6c3952e37 (patch) | |
tree | 011097892e2e03277e33bff533d57c3a5b4a9604 /hex.c | |
parent | 95be2d94d752b20d3d57c1006af8d518a6c1b843 (diff) | |
download | hex-fccfd1dd3b3e256db8759cfd6dba7cf6c3952e37.tar.gz hex-fccfd1dd3b3e256db8759cfd6dba7cf6c3952e37.tar.xz hex-fccfd1dd3b3e256db8759cfd6dba7cf6c3952e37.zip |
Color the ASCII column instead
Diffstat (limited to 'hex.c')
-rw-r--r-- | hex.c | 25 |
1 files changed, 14 insertions, 11 deletions
@@ -544,9 +544,9 @@ app_make_row (struct row_buffer *buf, int64_t addr, int attrs) row_buffer_append (buf, row_addr_str, attrs); free (row_addr_str); - struct str ascii; - str_init (&ascii); - str_append (&ascii, " "); + struct row_buffer ascii; + row_buffer_init (&ascii); + row_buffer_append (&ascii, " ", attrs); int64_t end_addr = g_ctx.data_offset + g_ctx.data_len; for (int x = 0; x < ROW_SIZE; x++) @@ -559,29 +559,32 @@ app_make_row (struct row_buffer *buf, int64_t addr, int attrs) || cell_addr >= end_addr) { row_buffer_append (buf, " ", attrs); - str_append_c (&ascii, ' '); + row_buffer_append (&ascii, " ", attrs); } else { - int cell_attrs = attrs; + int attrs_mark = attrs; struct marks_by_offset *marks = app_marks_at_offset (cell_addr); if (marks && marks->color >= 0) - cell_attrs = g_ctx.attrs[marks->color].attrs; + attrs_mark = g_ctx.attrs[marks->color].attrs; + int highlight = 0; if (cell_addr >= g_ctx.view_cursor && cell_addr < g_ctx.view_cursor + 8) - cell_attrs |= A_UNDERLINE; + highlight = A_UNDERLINE; + // TODO: leave it up to the user to decide what should be colored uint8_t cell = g_ctx.data[cell_addr - g_ctx.data_offset]; char *hex = xstrdup_printf ("%02x", cell); - row_buffer_append (buf, hex, cell_attrs); + row_buffer_append (buf, hex, attrs | highlight); free (hex); - str_append_c (&ascii, (cell >= 32 && cell < 127) ? cell : '.'); + char s[2] = { (cell >= 32 && cell < 127) ? cell : '.', 0 }; + row_buffer_append (&ascii, s, attrs_mark | highlight); } } - row_buffer_append (buf, ascii.str, attrs); - str_free (&ascii); + row_buffer_append_buffer (buf, &ascii); + row_buffer_free (&ascii); } static void |