source: mainline/uspace/lib/c/include/io/chargrid.h@ d7f7a4a

Last change on this file since d7f7a4a was d7f7a4a, checked in by Jiří Zárevúcky <zarevucky.jiri@…>, 4 years ago

Replace some license headers with SPDX identifier

Headers are replaced using tools/transorm-copyright.sh only
when it can be matched verbatim with the license header used
throughout most of the codebase.

  • Property mode set to 100644
File size: 2.2 KB
Line 
1/*
2 * SPDX-FileCopyrightText: 2011 Martin Decky
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7/** @addtogroup libc
8 * @{
9 */
10/**
11 * @file
12 */
13
14#ifndef _LIBC_IO_CHARGRID_H_
15#define _LIBC_IO_CHARGRID_H_
16
17#include <io/charfield.h>
18#include <types/common.h>
19#include <stddef.h>
20
21typedef enum {
22 CHARGRID_FLAG_NONE = 0,
23 CHARGRID_FLAG_SHARED = 1
24} chargrid_flag_t;
25
26typedef struct {
27 size_t size; /**< Structure size */
28 chargrid_flag_t flags; /**< Screenbuffer flags */
29
30 sysarg_t cols; /**< Number of columns */
31 sysarg_t rows; /**< Number of rows */
32
33 sysarg_t col; /**< Current column */
34 sysarg_t row; /**< Current row */
35 bool cursor_visible; /**< Cursor visibility */
36
37 char_attrs_t attrs; /**< Current attributes */
38
39 sysarg_t top_row; /**< The first row in the cyclic buffer */
40 charfield_t data[]; /**< Screen contents (cyclic buffer) */
41} chargrid_t;
42
43static inline charfield_t *chargrid_charfield_at(chargrid_t *chargrid,
44 sysarg_t col, sysarg_t row)
45{
46 return chargrid->data +
47 ((row + chargrid->top_row) % chargrid->rows) * chargrid->cols +
48 col;
49}
50
51extern chargrid_t *chargrid_create(sysarg_t, sysarg_t,
52 chargrid_flag_t);
53extern void chargrid_destroy(chargrid_t *);
54
55extern bool chargrid_cursor_at(chargrid_t *, sysarg_t, sysarg_t);
56
57extern sysarg_t chargrid_get_top_row(chargrid_t *);
58
59extern sysarg_t chargrid_putuchar(chargrid_t *, char32_t, bool);
60extern sysarg_t chargrid_newline(chargrid_t *);
61extern sysarg_t chargrid_tabstop(chargrid_t *, sysarg_t);
62extern sysarg_t chargrid_backspace(chargrid_t *);
63
64extern void chargrid_clear(chargrid_t *);
65extern void chargrid_clear_row(chargrid_t *, sysarg_t);
66
67extern void chargrid_set_cursor(chargrid_t *, sysarg_t, sysarg_t);
68extern void chargrid_set_cursor_visibility(chargrid_t *, bool);
69extern bool chargrid_get_cursor_visibility(chargrid_t *);
70
71extern void chargrid_get_cursor(chargrid_t *, sysarg_t *, sysarg_t *);
72
73extern void chargrid_set_style(chargrid_t *, console_style_t);
74extern void chargrid_set_color(chargrid_t *, console_color_t,
75 console_color_t, console_color_attr_t);
76extern void chargrid_set_rgb_color(chargrid_t *, pixel_t, pixel_t);
77
78#endif
79
80/** @}
81 */
Note: See TracBrowser for help on using the repository browser.