#! /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=30; fg <=37; fg++ )); do
	for (( bold=0; bold<=1; bold++ )); do
		headerstring="${fg}m"
		[ "$bold" == "1" ] && headerstring="$bold;$headerstring"
		printf "%8s" "$headerstring"
		printf "$spacer"
		# No background
		printc $fg 0
		printf "$spacer"
		# All backgrounds
		for (( bg=40; bg<=47; bg++)); do
			printc $fg $bg
			printf "$spacer"
		done
		println
	done
done
println