#! /bin/bash
#
# colortest.bash
# A script to ricily display a color palette
# Copyright (C) 2019 Vintage Salt <rehashedsalt@cock.li>
#
# Distributed under terms of the MIT license.
#

# Globals
teststring="•••"
padding="  "
spacer="  "

# Derived globals
teststringlen="$(( $(wc -m <<< "$teststring") - 1 ))"

# $1: Foreground color
# $2: Background color
printc() {
	[ -z "$1" ] && return 1
	[ -z "$2" ] && return 2
	printf "\e[0m\e[$2m\e[$1m$padding$teststring$padding\e[0m"
}
# $1: Heading
printh() {
	[ -z "$1" ] && return 1
	printf "$padding%${teststringlen}s$padding$spacer" "$1"
}
println() {
	printf "\\n"
}

# Headers
printf "%8s$spacer"
printh "0m"
for (( bg=40; bg<=47; bg++)); do
	printh "${bg}m"
done
println

# Content
for fg in $(seq 30 1 37) "" $(seq 90 1 97); do
	[ -z "$fg" ] && println && continue
	headerstring="${fg}m"
	printf "%8s$spacer" "$headerstring"
	# No background
	printc $fg 0
	printf "$spacer"
	# All backgrounds
	for (( bg=40; bg<=47; bg++)); do
		printc $fg $bg
		printf "$spacer"
	done
	println
done
println