diff options
author | Jesse Luehrs <doy@tozt.net> | 2014-04-25 01:16:09 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2014-04-25 01:16:09 -0400 |
commit | 5662a86fc69900d0b400e002100b03cc0d00a338 (patch) | |
tree | 7119b40e0a127a17037b1fe0f7f64d9ea6ea8021 | |
parent | 7ad3bb9d6b6def7127e4c6063dac85e2709b20eb (diff) | |
download | runes-5662a86fc69900d0b400e002100b03cc0d00a338.tar.gz runes-5662a86fc69900d0b400e002100b03cc0d00a338.zip |
bold/italic/underline
-rw-r--r-- | src/display.c | 25 | ||||
-rw-r--r-- | src/screen.c | 30 |
2 files changed, 38 insertions, 17 deletions
diff --git a/src/display.c b/src/display.c index a85fdaf..abf2230 100644 --- a/src/display.c +++ b/src/display.c @@ -9,8 +9,8 @@ static void runes_display_paint_rectangle( RunesTerm *t, cairo_t *cr, cairo_pattern_t *pattern, int row, int col, int width, int height); static void runes_display_draw_glyph( - RunesTerm *t, cairo_t *cr, cairo_pattern_t *pattern, char *buf, size_t len, - int row, int col); + RunesTerm *t, cairo_t *cr, cairo_pattern_t *pattern, + struct runes_cell_attrs attrs, char *buf, size_t len, int row, int col); void runes_display_init(RunesTerm *t) { @@ -185,7 +185,7 @@ static void runes_display_draw_cell(RunesTerm *t, int row, int col) if (cell->len) { runes_display_draw_glyph( - t, t->cr, fg, cell->contents, cell->len, row, col); + t, t->cr, fg, cell->attrs, cell->contents, cell->len, row, col); } } @@ -203,9 +203,24 @@ static void runes_display_paint_rectangle( } static void runes_display_draw_glyph( - RunesTerm *t, cairo_t *cr, cairo_pattern_t *pattern, char *buf, size_t len, - int row, int col) + RunesTerm *t, cairo_t *cr, cairo_pattern_t *pattern, + struct runes_cell_attrs attrs, char *buf, size_t len, int row, int col) { + PangoAttrList *pango_attrs; + + pango_attrs = pango_layout_get_attributes(t->layout); + if (t->bold_is_bold) { + pango_attr_list_change( + pango_attrs, pango_attr_weight_new( + attrs.bold ? PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL)); + } + pango_attr_list_change( + pango_attrs, pango_attr_style_new( + attrs.italic ? PANGO_STYLE_ITALIC : PANGO_STYLE_NORMAL)); + pango_attr_list_change( + pango_attrs, pango_attr_underline_new( + attrs.underline ? PANGO_UNDERLINE_SINGLE : PANGO_UNDERLINE_NONE)); + cairo_save(cr); cairo_move_to(cr, col * t->fontx, row * t->fonty); cairo_set_source(cr, pattern); diff --git a/src/screen.c b/src/screen.c index 8e0b333..ed8d22f 100644 --- a/src/screen.c +++ b/src/screen.c @@ -266,20 +266,23 @@ void runes_screen_reset_bg_color(RunesTerm *t) void runes_screen_set_bold(RunesTerm *t) { - UNUSED(t); - fprintf(stderr, "set_bold nyi\n"); + RunesScreen *scr = &t->scr; + + scr->attrs.bold = 1; } void runes_screen_set_italic(RunesTerm *t) { - UNUSED(t); - fprintf(stderr, "set_italic nyi\n"); + RunesScreen *scr = &t->scr; + + scr->attrs.italic = 1; } void runes_screen_set_underline(RunesTerm *t) { - UNUSED(t); - fprintf(stderr, "set_underline nyi\n"); + RunesScreen *scr = &t->scr; + + scr->attrs.underline = 1; } void runes_screen_set_inverse(RunesTerm *t) @@ -290,20 +293,23 @@ void runes_screen_set_inverse(RunesTerm *t) void runes_screen_reset_bold(RunesTerm *t) { - UNUSED(t); - fprintf(stderr, "reset_bold nyi\n"); + RunesScreen *scr = &t->scr; + + scr->attrs.bold = 0; } void runes_screen_reset_italic(RunesTerm *t) { - UNUSED(t); - fprintf(stderr, "reset_italic nyi\n"); + RunesScreen *scr = &t->scr; + + scr->attrs.italic = 0; } void runes_screen_reset_underline(RunesTerm *t) { - UNUSED(t); - fprintf(stderr, "reset_underline nyi\n"); + RunesScreen *scr = &t->scr; + + scr->attrs.underline = 0; } void runes_screen_reset_inverse(RunesTerm *t) |