summaryrefslogtreecommitdiffstats
path: root/tapset/ansi.stp
blob: ea5376ae8bd46e50d1e662f472e18b1d6ae929e5 (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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# ANSI escape sequences tapset
# Copyright (C) 2009 Red Hat, Inc., Eugene Teo <eteo@redhat.com>
# 
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# Based on some previous work done by Masami Hiramatsu for stapgames.
# Reference: http://en.wikipedia.org/wiki/ANSI_escape_code
#

/**
 * sfunction ansi_clear_screen - Move cursor to top left and clear screen.
 *
 * Description: Sends ansi code for moving cursor to top left and then the
 * ansi code for clearing the screen from the cursor position to the end.
 **/
function ansi_clear_screen() {
	print("\033[1;1H\033[J")
}

/**
 * sfunction ansi_set_color - Set the ansi Select Graphic Rendition mode.
 * @fg: Foreground color to set.
 *
 * Description: Sends ansi code for Select Graphic Rendition mode for the
 * given forground color. Black (30), Blue (34), Green (32), Cyan (36),
 * Red (31), Purple (35), Brown (33), Light Gray (37).
 */
function ansi_set_color(fg:long) {
	printf("\033[%dm", fg)
}

/**
 * sfunction ansi_set_color2 - Set the ansi Select Graphic Rendition mode.
 * @fg: Foreground color to set.
 * @bg: Background color to set.
 *
 * Description: Sends ansi code for Select Graphic Rendition mode for the
 * given forground color, Black (30), Blue (34), Green (32), Cyan (36),
 * Red (31), Purple (35), Brown (33), Light Gray (37) and the given
 * background color, Black (40), Red (41), Green (42), Yellow (43),
 * Blue (44), Magenta (45), Cyan (46), White (47).
 */
function ansi_set_color2(fg:long, bg:long) {
	printf("\033[%d;%dm", bg, fg)
}

/**
 * sfunction ansi_set_color3 - Set the ansi Select Graphic Rendition mode.
 * @fg: Foreground color to set.
 * @bg: Background color to set.
 * @attr: Color attribute to set.
 *
 * Description: Sends ansi code for Select Graphic Rendition mode for the
 * given forground color, Black (30), Blue (34), Green (32), Cyan (36),
 * Red (31), Purple (35), Brown (33), Light Gray (37), the given
 * background color, Black (40), Red (41), Green (42), Yellow (43),
 * Blue (44), Magenta (45), Cyan (46), White (47) and the color attribute
 * All attributes off (0), Intensity Bold (1), Underline Single (4),
 * Blink Slow (5), Blink Rapid (6), Image Negative (7).
 */
function ansi_set_color3(fg:long, bg:long, attr:long) {
	attr_str = attr ? sprintf(";%dm", attr) : "m"
	printf("\033[%d;%d%s", bg, fg, attr_str)
}

/**
 * sfunction ansi_reset_color - Resets Select Graphic Rendition mode.
 *
 * Description: Sends ansi code to reset foreground, background and color
 * attribute to default values.
 */
function ansi_reset_color() {
	ansi_set_color3(0, 0, 0)
}

/**
 * sfunction ansi_new_line - Move cursor to new line.
 *
 * Description: Sends ansi code new line.
 */
function ansi_new_line() {
	printf("\12")
}

/**
 * sfunction ansi_cursor_move - Move cursor to new coordinates.
 * @x: Row to move the cursor to.
 * @y: Colomn to move the cursor to.
 *
 * Description: Sends ansi code for positioning the cursor at row x
 * and column y. Coordinates start at one, (1,1) is the top-left corner.
 */
function ansi_cursor_move(x:long, y:long) {
	printf("\033[%d;%dH", y, x)
}

/**
 * sfunction ansi_cursor_hide - Hides the cursor.
 *
 * Description: Sends ansi code for hiding the cursor.
 */
function ansi_cursor_hide() {
	print("\033[>5I")
}

/**
 * sfunction ansi_cursor_saves - Saves the cursor position.
 *
 * Description: Sends ansi code for saving the current cursor position.
 */
function ansi_cursor_save() {
	print("\033[s")
}

/**
 * sfunction ansi_cursor_saves - Restores a previously saved cursor position.
 *
 * Description: Sends ansi code for restoring the current cursor position
 * previously saved with ansi_cursor_save().
 */
function ansi_cursor_restore() {
	print("\033[u")
}

/**
 * sfunction ansi_cursor_show - Shows the cursor.
 *
 * Description: Sends ansi code for showing the cursor.
 */
function ansi_cursor_show() {
	print("\033[>5h")
}