| #!/bin/bash |
| # |
| # This file echoes four gradients with 24-bit color codes |
| # to the terminal to demonstrate their functionality. |
| # The foreground escape sequence is ^[38;2;<r>;<g>;<b>m |
| # The background escape sequence is ^[48;2;<r>;<g>;<b>m |
| # <r> <g> <b> range from 0 to 255 inclusive. |
| # The escape sequence ^[0m returns output to default |
| |
| # |
| # From |
| # https://github.com/gnachman/iTerm2/blob/master/tests/24-bit-color.sh |
| # and presumably covered by |
| # https://github.com/gnachman/iTerm2/blob/master/LICENSE |
| # |
| |
| SEQ1= |
| if which gseq >/dev/null 2>&1; then |
| SEQ1=gseq |
| elif seq --version|grep -q GNU; then |
| SEQ1=seq |
| fi |
| if [ -n "$SEQ1" ]; then |
| # GNU seq requires a -ve increment if going backwards |
| seq1() |
| { |
| if [ $1 -gt $2 ]; then |
| $SEQ1 $1 -1 $2 |
| else |
| $SEQ1 $1 $2 |
| fi |
| } |
| SEQ=seq1 |
| else |
| SEQ=seq |
| fi |
| SEPARATOR=':' |
| |
| setBackgroundColor() |
| { |
| echo -en "\033[48${SEPARATOR}2${SEPARATOR}$1${SEPARATOR}$2${SEPARATOR}$3""m" |
| } |
| |
| resetOutput() |
| { |
| echo -en "\033[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() |
| { |
| let h=$1/43 |
| let f=$1-43*$h |
| let t=$f*255/43 |
| let 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 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 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 128`; do |
| setBackgroundColor 0 0 $i |
| echo -n " " |
| done |
| resetOutput |
| |
| for i in `$SEQ 0 127`; do |
| setBackgroundColor `rainbowColor $i` |
| echo -n " " |
| done |
| resetOutput |
| for i in `$SEQ 255 128`; do |
| setBackgroundColor `rainbowColor $i` |
| echo -n " " |
| done |
| resetOutput |