# shellcheck shell=dash

___x_cmd_term_8color(){
    printf "\n"

    ___x_cmd_term_8color_notice
    ___x_cmd_term_8color_char

    printf "\n\n"

    ___x_cmd_term_8color_bgfg

    ___x_cmd_term_8color_matrix
}

___x_cmd_term_8color_notice(){
    printf "\033[1;33;40m %s:  \033[1;34;40m%s\033[0m\n" "Notice" "slow-blink and fast-blink might not worked in some terminal"
}

___x_cmd_term_8color_char(){
    local i=0
    local arg; for arg in "  reset   " "   bold   " "   dim   " "   italic  " "underline " "slowblink " "fastblink " " reverse  "; do
        # printf "%s\n" "${___X_CMD_UNSEENCHAR_033}[${i}m \\033[${i}m : ${arg}${___X_CMD_UNSEENCHAR_033}[0m"
        printf "%s" "${___X_CMD_UNSEENCHAR_033}[${i}m$arg${___X_CMD_UNSEENCHAR_033}[0m"
        i=$((i+1))
    done

    printf "\n"

    i=0
    for arg in reset bold dim italic underline "slow-blink (might not worked)" "fast-blink (might no worked)" reverse; do
        # printf "%s\n" "${___X_CMD_UNSEENCHAR_033}[${i}m \\033[${i}m : ${arg}${___X_CMD_UNSEENCHAR_033}[0m"
        printf "%s" "${___X_CMD_UNSEENCHAR_033}[${i}m \\033[${i}m  ${___X_CMD_UNSEENCHAR_033}[0m"
        i=$((i+1))
    done
}

___x_cmd_term_8color_bgfg(){
    printf "%s" ""
    local i=0; while [ "$i" -lt 8 ]; do
        printf "%s" "${___X_CMD_UNSEENCHAR_033}[3${i}m \\033[3${i}m "
        i=$((i+1))
    done
    printf "%s FG\n" "${___X_CMD_UNSEENCHAR_033}[0m"

    printf "%s" ""
    local i=0; while [ "$i" -lt 8 ]; do
        printf "%s" "${___X_CMD_UNSEENCHAR_033}[4${i}m \\033[4${i}m "
        i=$((i+1))
    done
    printf "%s BG\n" "${___X_CMD_UNSEENCHAR_033}[0m"

    local arg;
    local i=0; for arg in "  black   " "   red    " "  green   " "  yellow  " "   blue   "  "  magenta " "   cyan   " "  white   "; do
        printf "%s" "${___X_CMD_UNSEENCHAR_033}[4${i}m${arg}"
        i=$((i+1))
    done

    printf "\033[0m\n"
}

___x_cmd_term_8color_matrix(){
    local i;
    local j;
    local i=0; while [ "$i" -lt 8 ]; do
        local j=0; while [ "$j" -lt 8 ]; do
            # \u001b
            printf "\033[0;3${i};4${j}m%s" "  3${i}  4${j}  "
            j=$((j+1))
        done
        printf "\033[0m\n"
        i=$((i+1))
    done
    printf "\033[0m"

    printf "\n"
}
