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

topic/simplify-dev-export
Last change on this file since 1be9ee0 was 1be9ee0, checked in by Jiri Svoboda <jiri@…>, 19 months ago

Move output API to separate library

  • Property mode set to 100644
File size: 3.5 KB
RevLine 
[6d5e378]1/*
2 * Copyright (c) 2011 Martin Decky
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * - Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * - Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * - The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
[1be9ee0]29/** @addtogroup libc
[6d5e378]30 * @{
31 */
32/**
33 * @file
34 */
35
[1be9ee0]36#ifndef _LIBC_IO_CHARGRID_H_
37#define _LIBC_IO_CHARGRID_H_
[6d5e378]38
39#include <io/charfield.h>
[cf13b17]40#include <types/common.h>
[78188e5]41#include <stddef.h>
[6d5e378]42
43typedef enum {
44 CHARGRID_FLAG_NONE = 0,
45 CHARGRID_FLAG_SHARED = 1
46} chargrid_flag_t;
47
48typedef struct {
49 size_t size; /**< Structure size */
50 chargrid_flag_t flags; /**< Screenbuffer flags */
[a35b458]51
[6d5e378]52 sysarg_t cols; /**< Number of columns */
53 sysarg_t rows; /**< Number of rows */
[a35b458]54
[6d5e378]55 sysarg_t col; /**< Current column */
56 sysarg_t row; /**< Current row */
57 bool cursor_visible; /**< Cursor visibility */
[a35b458]58
[6d5e378]59 char_attrs_t attrs; /**< Current attributes */
[a35b458]60
[6d5e378]61 sysarg_t top_row; /**< The first row in the cyclic buffer */
62 charfield_t data[]; /**< Screen contents (cyclic buffer) */
63} chargrid_t;
64
65static inline charfield_t *chargrid_charfield_at(chargrid_t *chargrid,
66 sysarg_t col, sysarg_t row)
67{
68 return chargrid->data +
69 ((row + chargrid->top_row) % chargrid->rows) * chargrid->cols +
70 col;
71}
72
73extern chargrid_t *chargrid_create(sysarg_t, sysarg_t,
74 chargrid_flag_t);
75extern void chargrid_destroy(chargrid_t *);
76
77extern bool chargrid_cursor_at(chargrid_t *, sysarg_t, sysarg_t);
78
79extern sysarg_t chargrid_get_top_row(chargrid_t *);
80
[28a5ebd]81extern sysarg_t chargrid_putuchar(chargrid_t *, char32_t, bool);
[6d5e378]82extern sysarg_t chargrid_newline(chargrid_t *);
83extern sysarg_t chargrid_tabstop(chargrid_t *, sysarg_t);
84extern sysarg_t chargrid_backspace(chargrid_t *);
85
86extern void chargrid_clear(chargrid_t *);
87extern void chargrid_clear_row(chargrid_t *, sysarg_t);
88
89extern void chargrid_set_cursor(chargrid_t *, sysarg_t, sysarg_t);
90extern void chargrid_set_cursor_visibility(chargrid_t *, bool);
91extern bool chargrid_get_cursor_visibility(chargrid_t *);
92
93extern void chargrid_get_cursor(chargrid_t *, sysarg_t *, sysarg_t *);
94
95extern void chargrid_set_style(chargrid_t *, console_style_t);
96extern void chargrid_set_color(chargrid_t *, console_color_t,
97 console_color_t, console_color_attr_t);
98extern void chargrid_set_rgb_color(chargrid_t *, pixel_t, pixel_t);
99
100#endif
101
102/** @}
103 */
Note: See TracBrowser for help on using the repository browser.