aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/edit_terminal.erl
blob: b18cafbb720992841248eab093454d888691ce2f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
%%%----------------------------------------------------------------------
%%% File    : edit_terminal.erl
%%% Author  : Luke Gorrie <luke@bluetail.com>
%%% Purpose : ncurses terminal implementation
%%% Created : 16 Sep 2000 by Luke Gorrie <luke@bluetail.com>
%%%----------------------------------------------------------------------

-module(edit_terminal).
-author('luke@bluetail.com').

-include_lib("slang/include/slang.hrl").

-define(ESC, 27).

-compile(export_all).
%%-export([Function/Arity, ...]).

setup() ->
    slang:tt_get_terminfo(),
    slang:kp_init(),
    slang:init_tty(0, 1, 1),
    slang:set_abort_signal(null),
    slang:smg_init_smg (),
    slang:smg_normal_video(),
    slang:setvar(newline_behaviour, ?NEWLINE_MOVES),
    refresh(),
    ok.

teardown() ->
    slang:smg_reset_smg(),
    slang:reset_tty(),
    ok.

newline() ->
    put_char($\n).

put_char(C) ->
    slang:smg_write_char(C).

put_string(S) ->
    slang:smg_write_string(S).

format(Fmt, Args) ->
    slang:smg_printf(Fmt, Args).

erase_to_eol() ->
    slang:smg_erase_eol().

move_to(X, Y) ->
    slang:smg_gotorc(Y, X).

refresh() ->
    slang:smg_refresh().

invalidate() ->
    slang:smg_touch_screen().

width() ->
    slang:getvar(screen_cols).

height() ->
    slang:getvar(screen_rows).

read() ->
    case slang:getkey() of
	?ESC ->
	    read() bor 2#10000000;
	N ->
	    N
    end.

font_reverse() ->
    slang:smg_reverse_video().

font_normal() ->
    slang:smg_normal_video().