The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w
# $Id: items.pl,v 1.6 2004/04/30 11:35:18 lecoanet Exp $
# these simple samples have been developped by C. Mertz mertz@cena.fr

use vars qw( $VERSION );
($VERSION) = sprintf("%d.%02d", q$Revision: 1.6 $ =~ /(\d+)\.(\d+)/);

use Tk;
use Tk::Zinc;
use strict;

my $defaultfont = '-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*';
my $mw = MainWindow->new();
my $zinc = $mw->Scrolled('Zinc', -width => 700, -height => 600,
			 -font => '10x20', -borderwidth => 3,
			 -relief => 'sunken', -scrollbars => 'se',
			 -scrollregion => [-100, 0, 1000, 1000]);
$zinc->pack(-expand => 'yes', -fill => 'both');

$zinc->add('rectangle', 1, [10,10, 100, 50], -fillcolor => "green", -filled => 1,
	    -linewidth => 10, -relief => "roundridge", -linecolor => "darkgreen");


$zinc->add('text', 1,
	   -font => $defaultfont,
	   -text => "A filled rectangle with a \"roundridge\" relief border of 10 pixels.",
	   -anchor => 'nw',
	   -position => [120, 20]);


my $labelformat = "x82x60+0+0 x60a0^0^0 x32a0^0>1 a0a0>2>1 x32a0>3>1 a0a0^0>2";

my $x=20;
my $y=120;
my $track=$zinc->add('track', 1, 6, # 6 is the number of fields in the flightlabel
		     -labelformat => $labelformat,
		     -position => [$x, $y],
		     -speedvector => [40, -10],
		     -speedvectormark =>  1, # currently works only with openGL
		     -speedvectorticks => 1, # currently works only with openGL
		     );
# moving the track, to display past positions
foreach my $i (0..5) {  $zinc->coords("$track",[$x+$i*10,$y-$i*2]); }

$zinc->add('text', 1,
	   -font => $defaultfont,
	   -text => "A flight track for a radar display. (A waypoint looks similar,\n".
	   "but has no speedvector neither past positions)",
	   -anchor => 'nw',
	   -position => [200, 80],
	   );

$zinc->itemconfigure($track, 0,
		     -filled => 0,
		     -bordercolor => 'DarkGreen',
		     -border => "contour",
		     );
$zinc->itemconfigure($track, 1,
		     -filled => 1,
		     -backcolor => 'gray60',
		     -text => "AFR001");
$zinc->itemconfigure($track, 2,
		     -filled => 0,
		     -backcolor => 'gray65',
		     -text => "360");
$zinc->itemconfigure($track, 3,
		     -filled => 0,
		     -backcolor => 'gray65',
		     -text => "/");
$zinc->itemconfigure($track, 4,
		     -filled => 0,
		     -backcolor => 'gray65',
		     -text => "410");
$zinc->itemconfigure($track, 5,
		     -filled => 0,
		     -backcolor => 'gray65',
		     -text => "Beacon");





$zinc->add('arc', 1, [150, 140, 450, 240], -fillcolor => "gray20",
	   -filled => 0,  -linewidth => 1,
	   -startangle => 45, -extent => 270);
$zinc->add('arc', 1, [260, 150, 340, 230], -fillcolor => "gray20",
	   -filled => 0,  -linewidth => 1,
	   -startangle => 45, -extent => 270,
	   -pieslice => 1, -closed => 1,
	   -linestyle => 'mixed', -linewidth => 3,
	   );

$zinc->add('text', 1,
	   -font => $defaultfont,
	   -text => "Two arcs, starting at 45° with an extent of 270°.",
	   -anchor => 'nw',
	   -position => [320, 180]);


$zinc->add('curve', 1, [10, 324, 24, 300, 45, 432, 247, 356, 128, 401],
	   -filled => 0, -relief => 'roundgroove',
           # -linewidth => 10, ## BUG with zinc 3.2.3g 
	   );
$zinc->add('text', 1,
	   -font => $defaultfont,
	   -text => "An open curve.",
	   -anchor => 'nw',
	   -position => [50, 350]);


$zinc->add('text', 1,
	   -font => $defaultfont,
	   -text => "A waypoint",
	   -anchor => 'nw',
	   -position => [10, 480],
	   );
my $waypoint = $zinc->add('waypoint', 1, 6, -position => [100,520],
			  -labelformat => $labelformat,
			  -symbol => "AtcSymbol2",
			  -labeldistance => 30);  

foreach my $fieldId (1..5) {
    $zinc->itemconfigure($waypoint, $fieldId,
			 -filled => 0,
			 -bordercolor => 'DarkGreen',
			 -border => "contour",  # does not work with openGL (zinc-perl v3.2.3e)
			 -text => "field$fieldId",
			 );
}


$zinc->add('text', 1,
	   -font => $defaultfont,
	   -text => "3 tabulars of 2 fields,\nattached together.",
	   -anchor => 'nw',
	   -position => [510, 380],
	   );

my $labelformat2 = "x72x40 x72a0^0^0 x34a0^0>1";

my $tabular1 = $zinc->add('tabular', 1, 6, -position => [570,250],
			  -labelformat => $labelformat2,
			  );
my $tabular2 = $zinc->add('tabular', 1, 6, -connecteditem => $tabular1,
			  -labelformat => $labelformat2,
			  );
my $tabular3 = $zinc->add('tabular', 1, 6, -connecteditem => $tabular2,
			  -labelformat => $labelformat2,
			  );
my $count=1;
foreach my $tab ($tabular1, $tabular2, $tabular3) {
    $zinc->itemconfigure($tab, 1, -filled => 0,
			 -bordercolor => 'DarkGreen',
			 -border => "contour", -text => "tabular",
			 );
    $zinc->itemconfigure($tab, 2, -filled => 0,
			 -bordercolor => 'DarkGreen',
			 -border => "contour", -text => "n°$count",
			 );
    $count++;
}


$zinc->add('reticle', 1, -position => [530,550],
	   -firstradius => 20, -numcircles => 6,
	   -period => 2, -stepsize => 20,
	   -brightlinestyle => 'dashed', -brightlinecolor => 'darkred', 
	   );

$zinc->add('text', 1,
	   -font => $defaultfont,
	   -text => "a reticle of 6 circles.",
	   -anchor => 'nw',
	   -position => [530, 540]);



$zinc->add('text', 1,
	   -font => $defaultfont,
	   -text => "maps, triangles and groups items\nare not demonstrated here.",
	   -anchor => 'nw',
	   -position => [10, 550]);



MainLoop;