#!/usr/bin/perl -w
#
#  Author       :  Calvin Wong <deadcat@freeshell.org>
#  File Name    :  color
#  Discription  :  Ported version of Nam Nguyen's <breakins@excite.com>
#                  color.cpp program. It displays all possible colors
#                  under a UNIX terminal emulator.
#  Comment(s)   :
#  Created On   :
#  Last Modified:  Tue Jul  2 16:20:04 PDT 2002

my %extra=("1m" => "Bold",
           "2m" => "Italics",
           "4m" => "Underscore",
           "5m" => "Blink",
           "7m" => "Inverse",
           "8m" => "Invisible");
my @fgcolor=("30m", "1;30m",
             "31m", "1;31m",
             "32m", "1;32m",
             "33m", "1;33m",
             "34m", "1;34m",
             "35m", "1;35m",
             "36m", "1;36m",
             "37m", "1;37m");
my @bgcolor=("40m", "41m",
             "42m", "43m",
             "44m", "45m",
             "46m", "47m");

#  displaying the bgcolor numbers on the first row.
#
print "  ";
for ($row=0; $row <= $#bgcolor; $row++)
{
    #  sets the width to 9 characters right-justified.
    #
    printf "%+9s", $bgcolor[$row];
}
print "\n";

for ($row=0; $row <= $#fgcolor; $row++)
{
    #  sets the width to 6 characters right-justified.
    #
    printf "%+6s", $fgcolor[$row];
    for ($col=0; $col <= $#bgcolor; $col++)
    {
        #  if forground matches 1;3X
        #
        if ($fgcolor[$row] =~ m/1;3.m/)
        {
            #  displays bold/brighter colors.
            #
            print " \033[", $fgcolor[$row], "\033[", $bgcolor[$col];
            print " Bold   ", "\033[0m";
        }
        else
        {
            #  displays normal colors.
            #
            print " \033[", $fgcolor[$row], "\033[", $bgcolor[$col];
            print " Normal ", "\033[0m";
        }
    }
    print "\n";
}

#  prints extra features of number patterns.
#
if ((defined($ARGV[0])) && ($ARGV[0] eq "-a"))
{
    print "\n";
    foreach $xfont (sort(keys %extra))
    {
        print " " x 4;
        printf "%-4s%-14s", $xfont, "\033[${xfont}$extra{$xfont}\033[0m";
        if (($xfont eq '4m') || ($xfont eq '8m'))
        {
            print "\n";
        }
    }
}

__END__
