From a45f04256a5cef95078868bcceb7bc750dcc6094 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Fri, 25 Apr 2014 04:54:00 -0400 Subject: implement inverse --- src/display.c | 12 ++++++++++++ src/screen.c | 10 ++++++---- 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 + 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 { -- cgit v1.2.3