diff --git a/colours.sh b/colours.sh index 793faf6..6e8d583 100755 --- a/colours.sh +++ b/colours.sh @@ -32,3 +32,44 @@ for fgc in {30..37}; do done echo; echo done + +rainbowColor() { + local h=$(($1 / 43)) + local f=$(($1 - 43 * h)) + local t=$((f * 255 / 43)) + local q=$((255 - t)) + + if [ $h -eq 0 ] + then + echo "255 $t 0" + elif [ $h -eq 1 ] + then + echo "$q 255 0" + elif [ $h -eq 2 ] + then + echo "0 255 $t" + elif [ $h -eq 3 ] + then + echo "0 $q 255" + elif [ $h -eq 4 ] + then + echo "$t 0 255" + elif [ $h -eq 5 ] + then + echo "255 0 $q" + else + # execution should never reach here + echo '0 0 0' + fi +} + +rf(){ echo "$1" 0 0; }; gf(){ echo 0 "$1" 0; }; bf(){ echo 0 0 "$1"; } +for f in rf gf bf rainbowColor; do + for s in "$(seq 0 127)" "$(seq 255 -1 128)"; do + for i in $s; do + # shellcheck disable=2183,2046 + printf '\x1b[48;2;%s;%s;%sm ' $($f "$i") + done + echo -en "\x1b[0m\n" + done +done