diff options
Diffstat (limited to 'src/libsystemd-terminal/term.h')
-rw-r--r-- | src/libsystemd-terminal/term.h | 183 |
1 files changed, 0 insertions, 183 deletions
diff --git a/src/libsystemd-terminal/term.h b/src/libsystemd-terminal/term.h deleted file mode 100644 index 1a78a81184..0000000000 --- a/src/libsystemd-terminal/term.h +++ /dev/null @@ -1,183 +0,0 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - -/*** - This file is part of systemd. - - Copyright (C) 2014 David Herrmann <dh.herrmann@gmail.com> - - systemd is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 2.1 of the License, or - (at your option) any later version. - - systemd is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with systemd; If not, see <http://www.gnu.org/licenses/>. -***/ - -#pragma once - -#include <stdbool.h> -#include <stdint.h> -#include <stdlib.h> -#include "util.h" - -typedef struct term_color term_color; -typedef struct term_attr term_attr; - -typedef struct term_utf8 term_utf8; -typedef struct term_seq term_seq; -typedef struct term_parser term_parser; - -typedef struct term_screen term_screen; - -/* - * Ageing - */ - -typedef uint64_t term_age_t; - -#define TERM_AGE_NULL 0 - -/* - * Attributes - */ - -enum { - /* special color-codes */ - TERM_CCODE_DEFAULT, /* default foreground/background color */ - TERM_CCODE_256, /* 256color code */ - TERM_CCODE_RGB, /* color is specified as RGB */ - - /* dark color-codes */ - TERM_CCODE_BLACK, - TERM_CCODE_RED, - TERM_CCODE_GREEN, - TERM_CCODE_YELLOW, - TERM_CCODE_BLUE, - TERM_CCODE_MAGENTA, - TERM_CCODE_CYAN, - TERM_CCODE_WHITE, /* technically: light grey */ - - /* light color-codes */ - TERM_CCODE_LIGHT_BLACK = TERM_CCODE_BLACK + 8, /* technically: dark grey */ - TERM_CCODE_LIGHT_RED = TERM_CCODE_RED + 8, - TERM_CCODE_LIGHT_GREEN = TERM_CCODE_GREEN + 8, - TERM_CCODE_LIGHT_YELLOW = TERM_CCODE_YELLOW + 8, - TERM_CCODE_LIGHT_BLUE = TERM_CCODE_BLUE + 8, - TERM_CCODE_LIGHT_MAGENTA = TERM_CCODE_MAGENTA + 8, - TERM_CCODE_LIGHT_CYAN = TERM_CCODE_CYAN + 8, - TERM_CCODE_LIGHT_WHITE = TERM_CCODE_WHITE + 8, - - TERM_CCODE_CNT, -}; - -struct term_color { - uint8_t ccode; - uint8_t c256; - uint8_t red; - uint8_t green; - uint8_t blue; -}; - -struct term_attr { - term_color fg; /* foreground color */ - term_color bg; /* background color */ - - unsigned int bold : 1; /* bold font */ - unsigned int italic : 1; /* italic font */ - unsigned int underline : 1; /* underline text */ - unsigned int inverse : 1; /* inverse fg/bg */ - unsigned int protect : 1; /* protect from erase */ - unsigned int blink : 1; /* blink text */ - unsigned int hidden : 1; /* hidden */ -}; - -void term_attr_to_argb32(const term_attr *attr, uint32_t *fg, uint32_t *bg, const uint8_t *palette); - -/* - * UTF-8 - */ - -struct term_utf8 { - uint32_t chars[5]; - uint32_t ucs4; - - unsigned int i_bytes : 3; - unsigned int n_bytes : 3; - unsigned int valid : 1; -}; - -size_t term_utf8_decode(term_utf8 *p, uint32_t **out_buf, char c); - -/* - * Parsers - */ - -int term_parser_new(term_parser **out, bool host); -term_parser *term_parser_free(term_parser *parser); -int term_parser_feed(term_parser *parser, const term_seq **seq_out, uint32_t raw); - -#define _term_parser_free_ _cleanup_(term_parser_freep) -DEFINE_TRIVIAL_CLEANUP_FUNC(term_parser*, term_parser_free); - -/* - * Screens - */ - -enum { - TERM_KBDMOD_IDX_SHIFT, - TERM_KBDMOD_IDX_CTRL, - TERM_KBDMOD_IDX_ALT, - TERM_KBDMOD_IDX_LINUX, - TERM_KBDMOD_IDX_CAPS, - TERM_KBDMOD_CNT, - - TERM_KBDMOD_SHIFT = 1 << TERM_KBDMOD_IDX_SHIFT, - TERM_KBDMOD_CTRL = 1 << TERM_KBDMOD_IDX_CTRL, - TERM_KBDMOD_ALT = 1 << TERM_KBDMOD_IDX_ALT, - TERM_KBDMOD_LINUX = 1 << TERM_KBDMOD_IDX_LINUX, - TERM_KBDMOD_CAPS = 1 << TERM_KBDMOD_IDX_CAPS, -}; - -typedef int (*term_screen_write_fn) (term_screen *screen, void *userdata, const void *buf, size_t size); -typedef int (*term_screen_cmd_fn) (term_screen *screen, void *userdata, unsigned int cmd, const term_seq *seq); - -int term_screen_new(term_screen **out, term_screen_write_fn write_fn, void *write_fn_data, term_screen_cmd_fn cmd_fn, void *cmd_fn_data); -term_screen *term_screen_ref(term_screen *screen); -term_screen *term_screen_unref(term_screen *screen); - -DEFINE_TRIVIAL_CLEANUP_FUNC(term_screen*, term_screen_unref); - -unsigned int term_screen_get_width(term_screen *screen); -unsigned int term_screen_get_height(term_screen *screen); -uint64_t term_screen_get_age(term_screen *screen); - -int term_screen_feed_text(term_screen *screen, const uint8_t *in, size_t size); -int term_screen_feed_keyboard(term_screen *screen, - const uint32_t *keysyms, - size_t n_syms, - uint32_t ascii, - const uint32_t *ucs4, - unsigned int mods); -int term_screen_resize(term_screen *screen, unsigned int width, unsigned int height); -void term_screen_soft_reset(term_screen *screen); -void term_screen_hard_reset(term_screen *screen); - -int term_screen_set_answerback(term_screen *screen, const char *answerback); - -int term_screen_draw(term_screen *screen, - int (*draw_fn) (term_screen *screen, - void *userdata, - unsigned int x, - unsigned int y, - const term_attr *attr, - const uint32_t *ch, - size_t n_ch, - unsigned int ch_width), - void *userdata, - uint64_t *fb_age); |