aboutsummaryrefslogtreecommitdiff
path: root/Perl/t/zinc.t
blob: 26c390291081084c92b15d7b6025c815c70b24d0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
#!/usr/bin/perl

use Tk;

$mw = MainWindow->new;
$logo = $mw->Photo(-file => "/home/etienne/images/logo.gif");
# $canvas = $mw->Canvas;
# $canvas->pack(-expand => t, -fill => 'both');
# $text = $canvas->create('text', 30, 20, -width => 45, -text => "hello");
# @listOfList = $canvas->itemconfigure($text);
# for (@listOfList) {
#     ($option, $name, $class, $default, $value) = @$_;
#     print "$option, $value\n";
# }
# MainLoop;
# exit;
###################################################
# creation radar
###################################################

#$mw->Radar()->pack;
#MainLoop; exit;
$top = 1;
$radar = $mw->Radar(-backcolor => 'skyblue', -relief => 'sunken');
$radar->pack(-expand => t, -fill => 'both');

$radar->configure(-width => 800, -height => 500);
$color = $radar->cget("-backcolor"); print "radar backcolor=$color\n";

###################################################
# creation track
###################################################
$track = $radar->add("track", $top, 10);
#$radar->itemconfigure($track, -tags => 'toto');

$radar->itemconfigure($track, -position => [1, 1]); 
$radar->itemconfigure($track, -position => [10, 10]); 
$radar->itemconfigure($track, -position => [20, 20]); 
$radar->itemconfigure($track, -position => [30, 30]); 
$radar->itemconfigure($track, -position => [40, 40]); 
$radar->itemconfigure($track, -position => [50, 50]); 
$radar->itemconfigure($track, -position => [60, 50]); 
$radar->itemconfigure($track, -speedvector => [20, 0]); 
$radar->itemconfigure($track, -symbolcolor => 'red', -labeldistance => 60);
$radar->itemconfigure($track, -markersize => 10, -filledmarker => 1,
		      -markercolor => "green");

print "radar itemconfigure :\n\n";
for $attr ($radar->itemconfigure($track)) {
    print "  ( ",join(',', @$attr)," )\n" ;
}
print "\n";

$size = $radar->itemcget($track, -markersize); print "track markersize=$size\n";
(@coords) = $radar->itemcget($track, "-position");
print "track position=",$coords[0],"+",$coords[1],"\n";


$radar->itemconfigure($track, -labelformat =>
		      "150x60|40+20|40+20|40+20,0:40x20+0+0,1:40x20+40+0,2:150x60+0+0");

$radar->itemconfigure($track, 0, -filled => 1 , -backcolor => "red",
 		      -border => "contour");
$radar->itemconfigure($track, 0, -text => "TO");
$radar->itemconfigure($track, 1, -filled => 1 , -backcolor => "green",
		      -border => "contour");
$radar->itemconfigure($track, 1, -filled => 1 , -backcolor => "green",
		      -border => "contour");
$radar->itemconfigure($track, 2, -image => $logo , -alignment => "center");
$mk = $radar->itemcget($track, -markercolor);

$radar->itemconfigure($track, 0, -reliefthickness =>  2, -relief => "sunken",
		      -bordercolor => "red", -border => "noborder");

$radar->bind($track.":-3", "<Enter>",
	     sub {$radar->itemconfigure($track, -speedvectorcolor => 'red')});
$radar->bind($track.":-3", "<Leave>",
    sub {$radar->itemconfigure($track, -speedvectorcolor => 'black')});
	     

###################################################
# creation way point
###################################################
print "creating way point\n";
my $wp = $radar->add("waypoint", $top, 10);
$radar->itemconfigure($wp,
    -symbolcolor => "green",
    -position => [0, 80],
    -labelformat => "80x40|40+20|40+20|40+20,0:40x20+0+0,1:40x20+40+0,2:80x40+0+0"
    );
$radar->itemconfigure($wp, 0 ,-filled => 1 ,-backcolor => "tan",-text => "TO");
$radar->itemconfigure($wp, 1 ,-filled => 1 ,-backcolor => "wheat",-text => "TO");
$radar->itemconfigure($wp, 2 ,-border => "contour");
$radar->bind($wp, "<Enter>", [ \&borders, "on"]);
$radar->bind($wp, "<Leave>", [ \&borders, "off"]);

###################################################
# creation 2nd track
###################################################
print "creating second track\n";
$track2 = $radar->add("track", $top, 10, -speedvector => [-20, 0], -position => [0, 50]);
$radar->itemconfigure($track2, -connecteditem => $track);

###################################################
# creation macro
###################################################
print "creating macro\n";
$macro = $radar->add("macro", $top, 10,
    -labelformat => "80x40|40+20|40+20|40+20,0:40x20+0+0,1:40x20+40+0"
    );
$radar->itemconfigure($macro, 0 , -text => "une");
$radar->itemconfigure($macro, 1, -text => "macro");
$radar->itemconfigure($macro, -connecteditem => $track);
$radar->bind($macro.":0", "<Enter>", [ \&borders, "on"]);
$radar->bind($macro.":0", "<Leave>", [ \&borders, "off"]);

###################################################
# creation ministrip
###################################################
print "creating ministrip\n";
$ministrip = $radar->add("ministrip", $top, 10,
    -labelformat => "80x40|40+20|40+20|40+20,0:40x20+0+0,1:40x20+40+0",
    -position => [100, 10]
    );
$radar->itemconfigure($ministrip, 0 , -text => 'ministrip');

###################################################
# creation map
###################################################
print "creating map\n";
$mw->videomap("load", "/home/etienne/tmp/videomap_paris-w_90_2", 0, "paris-w");
$mw->videomap("load", "/home/etienne/tmp/videomap_orly", 17, "orly");
$mw->videomap("load", "/home/etienne/tmp/hegias_parouest_TE.vid", 0, "paris-ouest");

print "videomap ids : ",
    join('|', $mw->videomap("ids", "/home/etienne/tmp/videomap_orly")),"\n";
$map = $radar->add("map", $top, -color => red);
$radar->itemconfigure($map,-mapinfo => orly);

$map2 = $radar->add("map", $top, -color => green, -filled => 1, -priority => 0,
    -fillpattern => AlphaStipple6);
#$radar->itemconfigure($map2, -mapinfo => paris-ouest);

$map3 = $radar->add("map", $top, -color => orange);
$radar->itemconfigure($map3,-mapinfo => "paris-w");


###################################################
#creation rectangle, arc, multipoint
###################################################

$rect = $radar->add(rectangle, $top, -50, -50, 50, -80, -linecolor => bisque);
$radar->bind($rect, '<Enter>', sub { $radar->itemconfigure($rect, -linecolor => red)});
$radar->bind($rect, '<Leave>', sub { $radar->itemconfigure($rect, -linecolor => bisque)});

$arc = $radar->add(arc, $top, -100, 80, -50, 30, -linecolor => bisque,
    -tags => ["arc"]);
#$radar->addtag("fleche",'withtag', $arc);
#$radar->addtag("carquois",'withtag', $arc);
$radar->add(rectangle, $top, -101, 81, -49, 29, -linecolor => green);
$radar->raise($arc);
$radar->bind($arc, '<Enter>', sub {$radar->itemconfigure($arc, -linecolor => red)});
$radar->bind($arc, '<Leave>', sub {$radar->itemconfigure($arc, -linecolor => bisque)});
print "arc tags=", join('|',$radar->gettags($arc)),"\n";

$radar->itemconfigure($arc, -startangle => 0, -extent => 360);

$mp = $radar->add(multipoint, $top, -300, 0, -250, 100, -80, 20);
$radar->itemconfigure($mp, -filled => 1, -linewidth => 4, -linecolor => yellow,
    -fillcolor => tan, -fillpattern => AlphaStipple8);
$radar->itemconfigure($mp, -marker => AtcSymbol9 , -markercolor => red);

###################################################
# Map info
###################################################
$mw->mapinfo('mpessai', 'create');
$mw->mapinfo('mpessai', add, text, normal, simple, 0, 200, "Et voilą");
$mw->mapinfo(mpessai, add, line, simple, 0,  0, 0, 0, 200);
#$mw->mapinfo('mpessai', add, line, simple, 5, -100, 100, 0, 0);
$radar->itemconfigure($map3, -mapinfo => mpessai);

print "mapinfo count line : ", $mw->mapinfo(mpessai, count, line),"\n";
print "mapinfo get line 3: ", join('|',$mw->mapinfo(mpessai, get, line, 0)),"\n";
###################################################
# tests diverses methodes 
###################################################

for ($radar->find('all')) {
    print $_, " -> ", $radar->type($_),"\n";
}
$radar->Tk::bind("<2>", [sub {
    print $_[1], "@" ,$_[2], ", closest: ",
    join(' ',$radar->find('closest', $_[1], $_[2])),"\n";
    }, Ev('x'), Ev('y')]);


$radar->Tk::bind('<ButtonPress-1>',
    [ sub {($origx, $origy) = ($_[1], $_[2]); }, Ev('x'), Ev('y') ]);

$radar->Tk::bind('<ButtonRelease-1>',
    [ sub {&finditems($_[1], $_[2]); }, Ev('x'), Ev('y') ]);

$radar->Tk::bind("<2>", sub {$radar->translate($top, 10,10); });
$radar->Tk::bind("<3>", sub {$radar->scale($top, 1.1, 1.1); });


MainLoop;

sub borders {
    my($widget, $onoff) = @_;
    my $part = $radar->currentpart;
    my $contour = "noborder";
    $contour = "contour" if ($onoff eq 'on');
    $radar->itemconfigure('current', $part, -border => $contour) if ($part >= 0);
}

sub finditems {
    my($cornerx, $cornery) = @_;
    print "--- enclosed --->",
    join('|', $radar->find('enclosed',$origx, $origy, $cornerx, $cornery)),"\n";
    print "--- overlapping --->",
    join('|',$radar->find('overlapping',$origx, $origy, $cornerx, $cornery)),"\n\n";
}