blob: fc1c10c566346b1f771d8ade9d23df8d4cbf3433 (
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
|
#!/usr/bin/env bash
colors=$@
for (( n=0; n < $colors; n++ )) do
printf " [%d] $(tput setaf $n)%s$(tput sgr0)" $n "Hello World!
"
done
PADDING='Padding'
main() {
local xterm_start=0 \
xterm_width=8 \
xterm_height=2
local cube_start=$((xterm_start + xterm_width * xterm_height)) \
cube_width=6 \
cube_height=$((6 * 6))
local greys_start=$((cube_start + cube_width * cube_height)) \
greys_width=8 \
greys_height=3
color_block $xterm_start $xterm_width $xterm_height
color_block $cube_start $cube_width $cube_height use_padding
color_block $greys_start $greys_width $greys_height
echo
}
color_block() {
local start=$1 width=$2 height=$3 use_padding=$4
local max s color_nums colors
max=$((start + width * height - 1))
echo
for s in $(seq $start $width $max); do
color_nums=$(seq $s $((s + width - 1)))
colors="${use_padding:+$PADDING }${color_nums}${use_padding:+ $PADDING}"
printf '%s%s %s%s\n' \
"$(fg_bars $colors)" $ansi_reset \
"$(bg_bars $colors)" $ansi_reset
done
}
fg_bars() {
for color in $@; do
color_bar ansi_fg $color ''
done
}
bg_bars() {
for color in $@; do
color_bar ansi_bg $color ' '
done
}
color_bar() {
local ansi=$1 color=$2 trail=$3
if [ "$color" == $PADDING ]; then
printf '%s %s' $ansi_reset "$trail"
else
local color_seq=$($ansi $color)
printf '%s %03d%s' $color_seq $color "$trail"
fi
}
ansi_reset=$'\033[0m'
ansi_fg() {
printf '\033[38;5;%dm' $1
}
ansi_bg() {
printf '\033[48;5;%dm' $1
}
main
|