From 0c50d44a9254f7c57c7655d28bc889c0a5d38ba8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 9 May 2021 01:34:18 +0200 Subject: [PATCH] scripts: add 24-bit color test script --- 24-bit-color-test.sh | 92 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100755 24-bit-color-test.sh diff --git a/24-bit-color-test.sh b/24-bit-color-test.sh new file mode 100755 index 0000000..0238dda --- /dev/null +++ b/24-bit-color-test.sh @@ -0,0 +1,92 @@ +#!/usr/bin/env bash +# +# This file echoes a bunch of 24-bit color codes +# to the terminal to demonstrate its functionality. +# The foreground escape sequence is ^[38;2;;;m +# The background escape sequence is ^[48;2;;;m +# range from 0 to 255 inclusive. +# The escape sequence ^[0m returns output to default + +setBackgroundColor() { + echo -en "\x1b[48;2;$1;$2;$3""m" +} + +resetOutput() { + echo -en "\x1b[0m\n" +} + +# Gives a color $1/255 % along HSV +# Who knows what happens when $1 is outside 0-255 +# Echoes "$red $green $blue" where +# $red $green and $blue are integers +# ranging between 0 and 255 inclusive +rainbowColor() +{ + h=$(($1 / 43)) + f=$(($1 - 43 * h)) + t=$((f * 255 / 43)) + 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 +} + +for i in $(seq 0 127); do + setBackgroundColor "$i" 0 0 + echo -en " " +done +resetOutput +for i in $(seq 255 -1 128); do + setBackgroundColor "$i" 0 0 + echo -en " " +done +resetOutput + +for i in $(seq 0 127); do + setBackgroundColor 0 "$i" 0 + echo -n " " +done +resetOutput +for i in $(seq 255 -1 128); do + setBackgroundColor 0 "$i" 0 + echo -n " " +done +resetOutput + +for i in $(seq 0 127); do + setBackgroundColor 0 0 "$i" + echo -n " " +done +resetOutput +for i in $(seq 255 -1 128); do + setBackgroundColor 0 0 "$i" + echo -n " " +done +resetOutput + +for i in $(seq 0 127); do + # shellcheck disable=SC2046 + setBackgroundColor $(rainbowColor "$i") + echo -n " " +done +resetOutput +for i in $(seq 255 -1 128); do + # shellcheck disable=SC2046 + setBackgroundColor $(rainbowColor "$i") + echo -n " " +done +resetOutput