diff options
author | Jesse Luehrs <doy@tozt.net> | 2014-04-25 04:54:00 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2014-04-25 04:54:00 -0400 |
commit | a45f04256a5cef95078868bcceb7bc750dcc6094 (patch) | |
tree | ecaaadc265149c35964ee89604e6366ebf02a8e3 | |
parent | 2ab15b99b02a7933b4497942bb8e90c691ea93aa (diff) | |
download | runes-a45f04256a5cef95078868bcceb7bc750dcc6094.tar.gz runes-a45f04256a5cef95078868bcceb7bc750dcc6094.zip |
implement inverse
-rw-r--r-- | src/display.c | 12 | ||||
-rw-r--r-- | src/screen.c | 10 | ||||
-rw-r--r-- | src/screen.h | 17 |
3 files changed, 30 insertions, 9 deletions
diff --git a/src/display.c b/src/display.c index 2f755a8..4686d26 100644 --- a/src/display.c +++ b/src/display.c @@ -185,6 +185,18 @@ static void runes_display_draw_cell(RunesTerm *t, int row, int col) break; } + if (cell->attrs.inverse) { + if (cell->attrs.fgcolor.id == cell->attrs.bgcolor.id) { + fg = t->bgdefault; + bg = t->fgdefault; + } + else { + cairo_pattern_t *tmp = fg; + fg = bg; + bg = tmp; + } + } + if (bg) { runes_display_paint_rectangle(t, t->cr, bg, row, col, 1, 1); } diff --git a/src/screen.c b/src/screen.c index 00a4476..0f62667 100644 --- a/src/screen.c +++ b/src/screen.c @@ -314,8 +314,9 @@ void runes_screen_set_underline(RunesTerm *t) void runes_screen_set_inverse(RunesTerm *t) { - UNUSED(t); - fprintf(stderr, "set_inverse nyi\n"); + RunesScreen *scr = &t->scr; + + scr->attrs.inverse = 1; } void runes_screen_reset_bold(RunesTerm *t) @@ -341,8 +342,9 @@ void runes_screen_reset_underline(RunesTerm *t) void runes_screen_reset_inverse(RunesTerm *t) { - UNUSED(t); - fprintf(stderr, "reset_inverse nyi\n"); + RunesScreen *scr = &t->scr; + + scr->attrs.inverse = 0; } void runes_screen_use_alternate_buffer(RunesTerm *t) diff --git a/src/screen.h b/src/screen.h index 1c0eb9d..4fd9e83 100644 --- a/src/screen.h +++ b/src/screen.h @@ -1,6 +1,8 @@ #ifndef _RUNES_SCREEN_H #define _RUNES_SCREEN_H +#include <stdint.h> + enum RunesColorType { RUNES_COLOR_DEFAULT, RUNES_COLOR_IDX, @@ -15,13 +17,18 @@ struct runes_loc { struct runes_color { union { struct { - unsigned char r; - unsigned char g; - unsigned char b; + union { + struct { + unsigned char r; + unsigned char g; + unsigned char b; + }; + unsigned char idx; + }; + unsigned char type; }; - unsigned char idx; + uint32_t id; }; - unsigned char type; }; struct runes_cell_attrs { |