aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2014-04-25 04:54:00 -0400
committerJesse Luehrs <doy@tozt.net>2014-04-25 04:54:00 -0400
commita45f04256a5cef95078868bcceb7bc750dcc6094 (patch)
treeecaaadc265149c35964ee89604e6366ebf02a8e3
parent2ab15b99b02a7933b4497942bb8e90c691ea93aa (diff)
downloadrunes-a45f04256a5cef95078868bcceb7bc750dcc6094.tar.gz
runes-a45f04256a5cef95078868bcceb7bc750dcc6094.zip
implement inverse
-rw-r--r--src/display.c12
-rw-r--r--src/screen.c10
-rw-r--r--src/screen.h17
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 {