#!/bin/sh large_0() { printf '%s\n' \ ' [XX] ' \ '[] [] ' \ '[] [] ' \ '[] [] ' \ '[] [] ' \ '[] [] ' \ ' [XX] ' } large_1() { printf '%s\n' \ ' [XX] ' \ ' [] ' \ ' [] ' \ ' [] ' \ ' [] ' \ ' [] ' \ ' [XXXX] ' } large_2() { printf '%s\n' \ ' [XX] ' \ '[] [] ' \ ' [] ' \ ' [] ' \ ' [] ' \ '[] ' \ '[XXXXXX] ' } large_3() { printf '%s\n' \ '[XXXX] ' \ ' [] ' \ ' [] ' \ ' [XXX] ' \ ' [] ' \ ' [] ' \ '[XXXX] ' } large_4() { printf '%s\n' \ '[] [] ' \ '[] [] ' \ '[] [] ' \ '[XXXXXX] ' \ ' [] ' \ ' [] ' \ ' [] ' } large_5() { printf '%s\n' \ '[XXXXX] ' \ '[] ' \ '[] ' \ '[XXXX] ' \ ' [] ' \ ' [] ' \ '[XXXX] ' } large_6() { printf '%s\n' \ ' [XXX] ' \ '[] ' \ '[] ' \ '[XXXX] ' \ '[] [] ' \ '[] [] ' \ ' [XX] ' } large_7() { printf '%s\n' \ '[XXXXXX] ' \ ' [] ' \ ' [] ' \ ' [] ' \ ' [] ' \ ' [] ' \ ' [] ' } large_8() { printf '%s\n' \ ' [XX] ' \ '[] [] ' \ '[] [] ' \ ' [XX] ' \ '[] [] ' \ '[] [] ' \ ' [XX] ' } large_9() { printf '%s\n' \ ' [XX] ' \ '[] [] ' \ '[] [] ' \ ' [XXXX] ' \ ' [] ' \ ' [] ' \ ' [XXX] ' } large_colon() { printf '%s\n' \ ' ' \ ' ' \ ' [] ' \ ' ' \ ' ' \ ' [] ' \ ' ' } large_dot() { printf '%s\n' \ ' ' \ ' ' \ ' ' \ ' ' \ ' ' \ ' ' \ ' [] ' } large_minus() { printf '%s\n' \ ' ' \ ' ' \ ' ' \ '[XXXXXX] ' \ ' ' \ ' ' \ ' ' } what="$1" shift 1 if test $# = 0; then set 0 1 2 3 4 5 6 7 8 9 colon dot minus fi if test "$what" = h; then printf '#define LARGE_Y %i\n' $(large_0 | wc -l) printf '#define LARGE_X %i\n' $(large_0 | head -n 1 | tr -d '\n' | wc -c) printf '#define LARGE_XC %i\n' $(large_colon | head -n 1 | tr -d '\n' | wc -c) printf '#define LARGE_XD %i\n' $(large_dot | head -n 1 | tr -d '\n' | wc -c) printf '#define LARGE_XM %i\n' $(large_minus | head -n 1 | tr -d '\n' | wc -c) printf '#define SMALL_Y %i\n' $(expr \( $(large_0 | wc -l) + 1 \) / 2) printf '#define SMALL_X %i\n' $(expr \( $(large_0 | head -n 1 | tr -d '\n' | wc -c) + 1 \) / 2) printf '#define SMALL_XC %i\n' $(expr \( $(large_colon | head -n 1 | tr -d '\n' | wc -c) + 1 \) / 2) printf '#define SMALL_XD %i\n' $(expr \( $(large_dot | head -n 1 | tr -d '\n' | wc -c) + 1 \) / 2) printf '#define SMALL_XM %i\n' $(expr \( $(large_minus | head -n 1 | tr -d '\n' | wc -c) + 1 \) / 2) fi for c; do if test "$what" = h; then printf 'extern const char *large_%s[];\n' $c printf 'extern const char *small_%s[];\n' $c else printf 'const char *large_%s[] = {\n' $c large_$c | \ sed -e 's/X/ /g' -e 's/\[/\\033\[7m /g' -e 's/\]/ \\033\[27m/g' | \ sed -e 's/^/"/' -e 's/$/",/' | \ sed '$s/,$//' printf '};\n' printf 'const char *small_%s[] = {\n' $c ( if expr $(large_$c | wc -l) % 2 >/dev/null; then printf '%*.s\n' $(expr \( $(large_0 | head -n 1 | tr -d '\n' | wc -c) + 1 \) / 2 \* 2) '' fi if expr $(large_$c | head -n 1 | tr -d '\n' | wc -c) % 2 >/dev/null; then large_$c | tr '][' XX | sed 's/$/ /g' else large_$c | tr '][' XX fi ) | tr ' \n' ., | sed 's/\([^,]*\),\([^,]*\),/:\1:\2:\n/g' | while read line; do high="$(printf '%s\n' "$line" | cut -d : -f 2)" low="$(printf '%s\n' "$line" | cut -d : -f 3)" while test -n "$high"; do block="$(printf '%s\n' "$high" | colrm 3)$(printf '%s\n' "$low" | colrm 3)" high="$(printf '%s\n' "$high" | colrm 1 2)" low="$(printf '%s\n' "$low" | colrm 1 2)" if test "$block" = '....'; then printf ' ' elif test "$block" = '...X'; then printf '▗' elif test "$block" = '..X.'; then printf '▖' elif test "$block" = '..XX'; then printf '▄' elif test "$block" = '.X..'; then printf '▝' elif test "$block" = '.X.X'; then printf '▐' elif test "$block" = '.XX.'; then printf '▞' elif test "$block" = '.XXX'; then printf '▟' elif test "$block" = 'X...'; then printf '▘' elif test "$block" = 'X..X'; then printf '▚' elif test "$block" = 'X.X.'; then printf '▌' elif test "$block" = 'X.XX'; then printf '▙' elif test "$block" = 'XX..'; then printf '▀' elif test "$block" = 'XX.X'; then printf '▜' elif test "$block" = 'XXX.'; then printf '▛' elif test "$block" = 'XXXX'; then printf '█' fi done printf '\n' done | sed -e 's/^/"/' -e 's/$/",/' | sed '$s/,$//' printf '};\n' fi done