-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathbxdraw
More file actions
executable file
·75 lines (66 loc) · 1.92 KB
/
bxdraw
File metadata and controls
executable file
·75 lines (66 loc) · 1.92 KB
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
#!/bin/bash
bxdraw_version="1"
## Layer I
function cur:set { printf '\e[%s;%sH' "$2" "$1"; }
function cur:back { printf '\e[%sZ' "$1"; }
function cur:setx { printf '\e[%sG' "$1"; }
function cur:next-line { printf '\e[%sE' "$1"; }
function cur:prev-line { printf '\e[%sF' "$1"; }
function cur:left { printf '\e[%sD' "$1"; }
function cur:down { printf '\e[%sB' "$1"; }
function cur:right { printf '\e[%sC' "$1"; }
function cur:up { printf '\e[%sA' "$1"; }
function cur:delete-right { printf '\e[%sP' "$1"; }
function cur:save { printf '\e8'; }
function cur:restore { printf '\e7'; }
function cur:get {
local -n x="$1"
local -n y="$2"
IFS='[;' read -p $'\e[6n' -d R -rs _ y x _
}
function scr:clear { printf '\ec'; }
###
function scr:clear:cur-end { printf '\e[0J'; }
function scr:clear:cur-beg { printf '\e[1J'; }
function scr:clear:clear { printf '\e[2J'; }
function scr:clear:clear-all { printf '\e[3J'; }
function line:clear:cur-end { printf '\e[0K'; }
function line:clear:cur-beg { printf '\e[1K'; }
function line:clear { printf '\e[2K'; }
function src:scroll-up { printf '\e[%sS' "$1"; }
function src:scroll-down { printf '\e[%sT' "$1"; }
# todo: mouse
#function clip:copy { printf '\e[52;c;<base64_encoded_text>\e\\'; }
#Start Hyperlink: ESC]8;;<URL>ESC\
#End Hyperlink: ESC]8;;ESC\
## Layer II
function print:line {
local _bxdr__lp
printf -v _bxdr__lp '%*s' "${1}" ''
printf '%b' "${_bxdr__lp// /${2}}"
}
function print:border {
local _bxdr__lp
printf -v _bxdr__lp '%*s' "${1}" ''
printf '%b' "${_bxdr__lp// /${3}}"
cur:left "${1}"
for ((i=1; i<${2}; i++)); do
printf '%s' "${3}"
cur:right $((${1}-2))
printf '%s' "${3}"
cur:down
cur:left "${1}"
done
printf '%s' "${_bxdr__lp// /${3}}"
}
function print:rectangle {
local _bxdr__lp
printf -v _bxdr__lp '%*s' "${1}" ''
printf '%b' "${_bxdr__lp// /${3}}"
cur:left "${1}"
for ((i=0; i<=${2}; i++)); do
printf '%b' "${_bxdr__lp// /${3}}"
cur:down
cur:left "${1}"
done
}