#!/usr/bin/env bash

# ANSI Color -- use these variables to easily have different color
#    and format output. Make sure to output the reset sequence after 
#    colors (f = foreground, b = background), and use the 'off'
#    feature for anything you turn on.

initializeANSI()
{
  esc=""

  blackf="${esc}[30m";   redf="${esc}[31m";    greenf="${esc}[32m"
  yellowf="${esc}[33m"   bluef="${esc}[34m";   purplef="${esc}[35m"
  cyanf="${esc}[36m";    whitef="${esc}[37m"
  
  blackb="${esc}[1;30m";   redb="${esc}[1;31m";    greenb="${esc}[1;32m"
  yellowb="${esc}[1;33m"   blueb="${esc}[1;34m";   purpleb="${esc}[1;35m"
  cyanb="${esc}[1;36m";    whiteb="${esc}[1;37m"

  boldon="${esc}[1m";    boldoff="${esc}[22m"
  italicson="${esc}[3m"; italicsoff="${esc}[23m"
  ulon="${esc}[4m";      uloff="${esc}[24m"
  invon="${esc}[7m";     invoff="${esc}[27m"

  reset="${esc}[0m"
}

color0=$(xrdb -query | egrep -m1 '^\*\.?color0:' | awk '{print $NF}')
color1=$(xrdb -query | egrep -m1 '^\*\.?color1:' | awk '{print $NF}')
color2=$(xrdb -query | egrep -m1 '^\*\.?color2:' | awk '{print $NF}')
color3=$(xrdb -query | egrep -m1 '^\*\.?color3:' | awk '{print $NF}')
color4=$(xrdb -query | egrep -m1 '^\*\.?color4:' | awk '{print $NF}')
color5=$(xrdb -query | egrep -m1 '^\*\.?color5:' | awk '{print $NF}')
color6=$(xrdb -query | egrep -m1 '^\*\.?color6:' | awk '{print $NF}')
color7=$(xrdb -query | egrep -m1 '^\*\.?color7:' | awk '{print $NF}')

color8=$(xrdb -query | egrep -m1 '^\*\.?color8:' | awk '{print $NF}')
color9=$(xrdb -query | egrep -m1 '^\*\.?color9:' | awk '{print $NF}')
color10=$(xrdb -query | egrep -m1 '^\*\.?color10:' | awk '{print $NF}')
color11=$(xrdb -query | egrep -m1 '^\*\.?color11:' | awk '{print $NF}')
color12=$(xrdb -query | egrep -m1 '^\*\.?color12:' | awk '{print $NF}')
color13=$(xrdb -query | egrep -m1 '^\*\.?color13:' | awk '{print $NF}')
color14=$(xrdb -query | egrep -m1 '^\*\.?color14:' | awk '{print $NF}')
color15=$(xrdb -query | egrep -m1 '^\*\.?color15:' | awk '{print $NF}')
# note in this first use that switching colors doesn't require a reset
# first - the new color overrides the old one.



numbers (){
  echo -en "${blackf} ${color0} ${reset}"
  echo -en "${redf} ${color1} ${reset}"
  echo -en "${greenf} ${color2} ${reset}"
  echo -en "${yellowf} ${color3} ${reset}"
  echo -en "${bluef} ${color4} ${reset}"
  echo -en "${purplef} ${color5} ${reset}"
  echo -en "${cyanf} ${color6} ${reset}"
  echo -en "${whiteb} ${color7} ${reset}"
  echo -e "\n"
  echo -en "${blackf} ${color8} ${reset}"
  echo -en "${redf} ${color9} ${reset}"
  echo -en "${greenf} ${color10} ${reset}"
  echo -en "${yellowf} ${color11} ${reset}"
  echo -en "${bluef} ${color12} ${reset}"
  echo -en "${purplef} ${color13} ${reset}"
  echo -en "${cyanf} ${color14} ${reset}"
  echo -en "${whiteb} ${color15} ${reset}"
  echo -e "\n"
}

blocks (){

initializeANSI

cat << EOF

${blackf}████${reset}${blackb}████${reset} ${redf}████${reset}${redb}████${reset} ${greenf}████${reset}${greenb}████${reset} ${yellowf}████${reset}${yellowb}████${reset} ${bluef}████${reset}${blueb}████${reset} ${purplef}████${reset}${purpleb}████${reset} ${cyanf}████${reset}${cyanb}████${reset} ${whitef}████${reset}${whiteb}████${reset}
${blackf}████${reset}${blackb}████${reset} ${redf}████${reset}${redb}████${reset} ${greenf}████${reset}${greenb}████${reset} ${yellowf}████${reset}${yellowb}████${reset} ${bluef}████${reset}${blueb}████${reset} ${purplef}████${reset}${purpleb}████${reset} ${cyanf}████${reset}${cyanb}████${reset} ${whitef}████${reset}${whiteb}████${reset}
${blackf}████${reset}${blackb}████${reset} ${redf}████${reset}${redb}████${reset} ${greenf}████${reset}${greenb}████${reset} ${yellowf}████${reset}${yellowb}████${reset} ${bluef}████${reset}${blueb}████${reset} ${purplef}████${reset}${purpleb}████${reset} ${cyanf}████${reset}${cyanb}████${reset} ${whitef}████${reset}${whiteb}████${reset}

EOF

}

case $1 in
	b)	blocks;;
	n)	numbers;;
	a)	blocks && numbers;;
	*)  blocks && numbers;;
esac
