#! /usr/local/bin/zsh ansi-print () { local hexa=$1 local num=$2 if (( $hexa == 1 )); then printf "%2x " $num else printf "%3d " $num fi } ansi () { local -a cols cols=("black" "red" "green" "yellow" "blue" "magenta" "cyan" "white") local ci=0 local c local hexa=0 reset-color local bg=0 set-bg-color $bg local offs="" echo -n $offs for c in $cols; do set-bg-color $ci ansi-print $hexa $ci ci=$(( $ci + 1 )) done set-bg-color $bg echo echo -n $offs for c in $cols; do set-bg-color $ci ansi-print $hexa $ci ci=$(( $ci + 1 )) done set-bg-color $bg echo '\n' local s repeat 2 { repeat 6 { repeat 3 { s=0 repeat 6 { set-bg-color $ci ansi-print $hexa $ci ci=$(( $ci + 1 )) } set-bg-color $bg [[ $s < 2 ]] && echo -n " "; s=$(( $s + 1 )) } echo } echo } repeat 24 { set-bg-color $ci ansi-print 1 $ci ci=$(( $ci + 1 )) } reset-color echo '\n' } ansibox () { local cols=$1 local rows=$2 local sx=$3 local sy=$4 local beg=$5 local i=$beg local iy ix for (( iy=0; $iy < $rows; iy++ )); do for (( ix=0; $ix < $cols; ix++ )); do set-bg-color $i printf "%4d" $i reset-color i=$(( $i + $sx )) done i=$(( $i + $sy )) echo done echo } ansiall () { ansi ansidark ansilight } ansidark () { ansibox 18 6 1 18 16 } ansilight () { ansibox 18 6 1 18 32 } ansibox-dark () { local w=6 local h=6 local sx=1 local sy=30 local beg=16 local n=3 for (( m=0; m < $n; m++ )); do ansibox $w $h $sx $sy $(( $beg + $m * $w )) done } ansibox-light () { local w=6 local h=6 local sx=1 local sy=30 local beg=32 local n=3 for (( m=0; m < $n; m++ )); do ansibox $w $h $sx $sy $(( $beg + $m * $w )) done } zsh-rgb () { local c for r (0 1 2 3 4 5); do for g (0 1 2 3 4 5); do for b (0 1 2 3 4 5); do c=$(( 16 + 6**2 * $r + 6**1 * $g + 6**0 * $b )) print -n -P "%K{$c} ansi color number $c %k " ansi-to-rgb $c print -n -P " %F{$c}a colorful party%f" echo done done done } zsh-rgb-red () { local c for r (5); do for g (0 1 2 3 4) ; do for b (0 1 2 3 4); do c=$(( 16 + 6**2 * $r + 6**1 * $g + 6**0 * $b )) print -n -P "%K{$c} ansi color number $c %k " ansi-to-rgb $c print -n -P " %F{$c}a colorful party%f" echo done done done } ansi-to-rgb () { local num=$1 local ir=$(( ( $num - 16 ) / 36 )) local ig=$(( ((( $num - 16 ) % 36 ) / 6) )) local ib=$(( ( $num - 16 ) % 6 )) local r g b [[ 0 < $ir ]] && r=$(( 55 + $ir * 40 )) || r=0 [[ 0 < $ig ]] && g=$(( 55 + $ig * 40 )) || g=0 [[ 0 < $ib ]] && b=$(( 55 + $ib * 40 )) || b=0 printf "rgb = (%3d %3d %3d) " $r $g $b printf "#%0.2x%0.2x%0.2x" $r $g $b }