screen->gr = screen->saved.gr;
screen->glt = screen->saved.glt;
screen->grt = screen->saved.grt;
- set_reset(screen, TERM_FLAG_AUTO_WRAP, screen->flags & TERM_FLAG_AUTO_WRAP);
- set_reset(screen, TERM_FLAG_ORIGIN_MODE, screen->flags & TERM_FLAG_ORIGIN_MODE);
+ set_reset(screen, TERM_FLAG_AUTO_WRAP, screen->saved.flags & TERM_FLAG_AUTO_WRAP);
+ set_reset(screen, TERM_FLAG_ORIGIN_MODE, screen->saved.flags & TERM_FLAG_ORIGIN_MODE);
screen_cursor_set(screen, screen->saved.cursor_x, screen->saved.cursor_y);
return 0;
if (i >= seq->n_args || seq->args[i] < 0)
break;
+ dst->ccode = TERM_CCODE_256;
code = seq->args[i];
- if (code < 16) {
- dst->ccode = code;
- } else if (code < 232) {
- static const uint8_t bval[] = {
- 0x00, 0x5f, 0x87,
- 0xaf, 0xd7, 0xff,
- };
-
- dst->ccode = TERM_CCODE_256;
- dst->c256 = code;
- code -= 16;
- dst->blue = bval[code % 6];
- code /= 6;
- dst->green = bval[code % 6];
- code /= 6;
- dst->red = bval[code % 6];
- } else if (code < 256) {
- dst->ccode = TERM_CCODE_256;
- dst->c256 = code;
- code = (code - 232) * 10 + 8;
- dst->red = code;
- dst->green = code;
- dst->blue = code;
- }
+ dst->c256 = code < 256 ? code : 0;
break;
}
return screen->page->height;
}
+uint64_t term_screen_get_age(term_screen *screen) {
+ assert_return(screen, 0);
+
+ return screen->age;
+}
+
int term_screen_feed_text(term_screen *screen, const uint8_t *in, size_t size) {
uint32_t *ucs4_str;
size_t i, j, ucs4_len;
assert_return(screen, -EINVAL);
+ ++screen->age;
+
/* Feed bytes into utf8 decoder and handle parsed ucs4 chars. We always
* treat data as UTF-8, but the parser makes sure to fall back to raw
* 8bit mode if the stream is not valid UTF-8. This should be more than
}
if (fb_age)
- *fb_age = screen->age++;
+ *fb_age = screen->age;
return 0;
}