#!/usr/bin/perl -w

use Tk;
use strict;
require "color_model";

my (
    $main,
    $coord,
    $count,
    $color_offset,
    $text_offset,
    $i,
);

$coord = [
    [0,0], [0,1], [0,2], [0,3], [0,4], [0,5], [0,6],
    [1,6], [2,6], [2,5], [2,4], [3,4], [4,4], [4,5], [4,6], [5,6],
    [6,6], [6,5], [6,4], [6,3], [6,2], [6,1], [6,0],
    [5,0], [4,0], [4,1], [4,2], [3,2], [2,2], [2,1], [2,0], [1,0],
];
$count = $#$coord + 1;

$main = MainWindow->new();
for ($i=0; $i<$count; ++$i) {
    $main->{"box$i"} = $main->Label(-width=>1);
    $main->{"box$i"}->grid(-row=>$coord->[$i][0], -column=>$coord->[$i][1]);
}

$color_offset = $text_offset = 0;
RotateText();
RotateColor();

MainLoop();

#=================================================================

sub RotateText {
    my ($msg) = "TK: the most portable GUI tool!";
    for (my $i=0; $i<$count; ++$i) {
	$main->{"box$i"}->configure(-text=>substr($msg,
	    ($i+$text_offset)%$count, 1));
    }
    $main->after(300, \&RotateText);
#    $main->idletasks();
    $text_offset = ($text_offset + 1) % $count;
}

sub RotateColor {
    for (my $i=0; $i<$count; ++$i) {
	$main->{"box$i"}->configure(-bg=>sprintf("#%02x%02x%02x",
	    HSBtoRGB(($i+$color_offset) % $count / $count, 1, 255)));
    }
    $main->after(260, \&RotateColor);
#    $main->idletasks();
    $color_offset = ($color_offset - 1) % $count;
}

