Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Roblox
GitHub Repository: Roblox/luau
Path: blob/master/extern/isocline/src/term.h
2727 views
1
/* ----------------------------------------------------------------------------
2
Copyright (c) 2021, Daan Leijen
3
This is free software; you can redistribute it and/or modify it
4
under the terms of the MIT License. A copy of the license can be
5
found in the "LICENSE" file at the root of this distribution.
6
-----------------------------------------------------------------------------*/
7
#pragma once
8
#ifndef IC_TERM_H
9
#define IC_TERM_H
10
11
#include "common.h"
12
#include "tty.h"
13
#include "stringbuf.h"
14
#include "attr.h"
15
16
struct term_s;
17
typedef struct term_s term_t;
18
19
typedef enum buffer_mode_e {
20
UNBUFFERED,
21
LINEBUFFERED,
22
BUFFERED,
23
} buffer_mode_t;
24
25
// Primitives
26
ic_private term_t* term_new(alloc_t* mem, tty_t* tty, bool nocolor, bool silent, int fd_out);
27
ic_private void term_free(term_t* term);
28
29
ic_private bool term_is_interactive(const term_t* term);
30
ic_private void term_start_raw(term_t* term);
31
ic_private void term_end_raw(term_t* term, bool force);
32
33
ic_private bool term_enable_beep(term_t* term, bool enable);
34
ic_private bool term_enable_color(term_t* term, bool enable);
35
36
ic_private void term_flush(term_t* term);
37
ic_private buffer_mode_t term_set_buffer_mode(term_t* term, buffer_mode_t mode);
38
39
ic_private void term_write_n(term_t* term, const char* s, ssize_t n);
40
ic_private void term_write(term_t* term, const char* s);
41
ic_private void term_writeln(term_t* term, const char* s);
42
ic_private void term_write_char(term_t* term, char c);
43
44
ic_private void term_write_repeat(term_t* term, const char* s, ssize_t count );
45
ic_private void term_beep(term_t* term);
46
47
ic_private bool term_update_dim(term_t* term);
48
49
ic_private ssize_t term_get_width(term_t* term);
50
ic_private ssize_t term_get_height(term_t* term);
51
ic_private int term_get_color_bits(term_t* term);
52
53
// Helpers
54
ic_private void term_writef(term_t* term, const char* fmt, ...);
55
ic_private void term_vwritef(term_t* term, const char* fmt, va_list args);
56
57
ic_private void term_left(term_t* term, ssize_t n);
58
ic_private void term_right(term_t* term, ssize_t n);
59
ic_private void term_up(term_t* term, ssize_t n);
60
ic_private void term_down(term_t* term, ssize_t n);
61
ic_private void term_start_of_line(term_t* term );
62
ic_private void term_clear_line(term_t* term);
63
ic_private void term_clear_to_end_of_line(term_t* term);
64
// ic_private void term_clear_lines_to_end(term_t* term);
65
66
67
ic_private void term_attr_reset(term_t* term);
68
ic_private void term_underline(term_t* term, bool on);
69
ic_private void term_reverse(term_t* term, bool on);
70
ic_private void term_bold(term_t* term, bool on);
71
ic_private void term_italic(term_t* term, bool on);
72
73
ic_private void term_color(term_t* term, ic_color_t color);
74
ic_private void term_bgcolor(term_t* term, ic_color_t color);
75
76
// Formatted output
77
78
ic_private attr_t term_get_attr( const term_t* term );
79
ic_private void term_set_attr( term_t* term, attr_t attr );
80
ic_private void term_write_formatted( term_t* term, const char* s, const attr_t* attrs );
81
ic_private void term_write_formatted_n( term_t* term, const char* s, const attr_t* attrs, ssize_t n );
82
83
ic_private ic_color_t color_from_ansi256(ssize_t i);
84
85
#endif // IC_TERM_H
86
87