PageRenderTime 75ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/Master/tlpkg/tlperl/lib/Tk/demos/widget_lib/floor.pl

https://bitbucket.org/preining/tex-live
Perl | 726 lines | 645 code | 56 blank | 25 comment | 9 complexity | 2d877fe8a5c213099744a73c72759e23 MD5 | raw file
  1. # floor.pl
  2. use Tk::Trace;
  3. use subs qw/floor_bg1 floor_bg2 floor_bg3 floor_display floor_fg1 floor_fg2
  4. floor_fg3 floor_room_changed/;
  5. use vars qw/$TOP/;
  6. sub floor {
  7. # Create a top-level window containing a Canvas that displays the
  8. # floorplan for DEC's Western Research Laboratory.
  9. my($demo) = @_;
  10. $TOP = $MW->WidgetDemo(
  11. -name => $demo,
  12. -text => ['This window contains a canvas widget showing the floorplan of Digital Equipment Corporation\'s Western Research Laboratory. It has three levels. At any given time one of the levels is active, meaning that you can see its room structure. To activate a level, click the left mouse button anywhere on it. As the mouse moves over the active level, the room under the mouse lights up and its room number appears in the "Room:" entry. You can also type a room number in the entry and the room will light up.', qw/-wraplength 8i/],
  13. -title => 'Floorplan Canvas Demonstration',
  14. -iconname => 'floor',
  15. );
  16. my $c = $TOP->Scrolled(qw/Canvas -width 900 -height 500 -relief sunken
  17. -borderwidth 2 -scrollbars se/);
  18. $c->pack(qw/-expand yes -fill both/);
  19. # Create an Entry for displaying and typing in current room.
  20. $floor::current_room = '';
  21. my $c_entry = $c->Entry(qw/-width 10 -relief sunken -borderwidth 2
  22. -textvariable/ => \$floor::current_room);
  23. # Choose colors, then fill in the floorplan.
  24. my %cinfo; # color information hash
  25. if ($TOP->depth > 1) {
  26. $cinfo{'floor_bg1'} = '#a9c1da';
  27. $cinfo{outline1} = '#77889a';
  28. $cinfo{'floor_bg2'} = '#9ab0c6';
  29. $cinfo{outline2} = '#687786';
  30. $cinfo{'floor_bg3'} = '#8ba0b3';
  31. $cinfo{outline3} = '#596673';
  32. $cinfo{offices} = 'Black';
  33. $cinfo{active} = '#c4d1df';
  34. } else {
  35. $cinfo{'floor_bg1'} = 'white';
  36. $cinfo{outline1} = 'black';
  37. $cinfo{'floor_bg2'} = 'white';
  38. $cinfo{outline2} = 'black';
  39. $cinfo{'floor_bg3'} = 'white';
  40. $cinfo{outline3} = 'black';
  41. $cinfo{offices} = 'Black';
  42. $cinfo{active} = 'black';
  43. }
  44. my %floor_labels = ();
  45. my %floor_items = ();
  46. my $active_floor = 0;
  47. floor_display $c->Subwidget('canvas'), 3, \%floor_labels, \%floor_items,
  48. \%cinfo, \$active_floor, $c_entry;
  49. # Set up event bindings for the Canvas.
  50. my $floor_number;
  51. for $floor_number (1..3) {
  52. $c->bind("floor${floor_number}", '<1>' =>
  53. [\&floor_display, $floor_number, \%floor_labels, \%floor_items,
  54. \%cinfo, \$active_floor, $c_entry],
  55. );
  56. }
  57. $c->bind('room', '<Enter>' => sub {
  58. my($c) = @_;
  59. my $id = $c->find('withtag' => 'current');
  60. $id = $id->[0] if ref($id) eq 'ARRAY';
  61. $floor::current_room = $floor_labels{$id} if defined $id;
  62. $c->idletasks;
  63. });
  64. $c->bind('room', '<Leave>' => sub {$floor::current_room = ''});
  65. $c->CanvasBind('<2>' => sub {
  66. my($c) = @_;
  67. my $e = $c->XEvent;
  68. $c->scanMark($e->x, $e->y);
  69. });
  70. $c->CanvasBind('<B2-Motion>' => sub {
  71. my($c) = @_;
  72. my $e = $c->XEvent;
  73. $c->scanDragto($e->x, $e->y);
  74. });
  75. $c->CanvasBind('<Enter>', => [sub {shift; shift->focus}, $c_entry]);
  76. $c->traceVariable(\$floor::current_room, 'w' =>
  77. [sub {
  78. my($index, $value, $op, $floor_items, $cinfo) = @_;
  79. return if $op eq 'u';
  80. $floor_current_room = $value;
  81. &floor_room_changed($c->Subwidget('canvas'), $floor_items, $cinfo);
  82. $value; # always return variable's new value
  83. }, \%floor_items, \%cinfo],
  84. );
  85. } # floor
  86. sub floor_display {
  87. # The following procedure recreates the floorplan display in the
  88. # Canvas given by "w". The floor given by "active" (1, 2, or 3) is
  89. # displayed on top, with office structure visible. (Used as a callback
  90. # and a normal function.)
  91. my($c, $active, $floor_labels, $floor_items, $cinfo, $active_floor,
  92. $c_entry) = @_;
  93. return if $$active_floor eq $active;
  94. $c->delete('all');
  95. $$active_floor = $active;
  96. # First go through the three floors, displaying the backgrounds for
  97. # each floor.
  98. floor_bg1 $c, $cinfo->{'floor_bg1'}, $cinfo->{outline1};
  99. floor_bg2 $c, $cinfo->{'floor_bg2'}, $cinfo->{outline2};
  100. floor_bg3 $c, $cinfo->{'floor_bg3'}, $cinfo->{outline3};
  101. # Raise the background for the active floor so that it's on top.
  102. $c->raise("floor${active}");
  103. # Create a dummy item just to mark this point in the display list, so
  104. # we can insert highlights here.
  105. $c->create('rectangle', 0, 100, 1, 101, -fill => undef, -outline => undef,
  106. -tags => 'marker');
  107. # Add the walls and labels for the active floor, along with transparent
  108. # polygons that define the rooms on the floor. Make sure that the room
  109. # polygons are on top.
  110. my $cmd = "floor_fg${active}";
  111. {
  112. no strict qw(refs);
  113. &$cmd($c, $cinfo->{offices}, $floor_labels, $floor_items);
  114. }
  115. $c->raise('room');
  116. # Offset the floors diagonally from each other.
  117. $c->move(qw(floor1 2c 2c));
  118. $c->move(qw(floor2 1c 1c));
  119. # Create items for the room entry and its label.
  120. $c->create('window', 600, 100, -anchor => 'w', -window => $c_entry);
  121. $c->create('text', 600, 100, -anchor => 'e', -text => 'Room: ');
  122. $c->configure(-scrollregion => [$c->bbox('all')]);
  123. } # end floor_display
  124. sub floor_room_changed {
  125. # Whenever the current_room variable changes, this procedure highlights
  126. # the current room and unhighlights any previous room.
  127. my($w, $floor_items, $cinfo) = @_;
  128. $w->delete('highlight');
  129. my $item = $floor_items->{$floor::current_room};
  130. return if not defined $item;
  131. my(@c) = $w->coords($item);
  132. if ($c[0]) {
  133. $w->raise(
  134. $w->create('polygon', @c,
  135. -fill => $cinfo->{active},
  136. -tags => 'highlight',
  137. ),
  138. 'marker');
  139. } # ifend we have coordinates
  140. } # end floor_room_changed
  141. # The following procedures are invoked to instantiate various portions of
  142. # the building floorplan. The bodies of these procedures were generated
  143. # automatically from database files describing the building.
  144. sub floor_bg1 {
  145. my ($w, $fill, $outline) = @_;
  146. $w->create('poly', qw(347 80 349 82 351 84 353 85 363 92 375 99 386 104 386 129 398 129 398 162 484 162 484 129 559 129 559
  147. 133 725 133 725 129 802 129 802 389 644 389 644 391 559 391 559 327 508 327 508 311 484 311 484 278 395 278 395 288 400
  148. 288 404 288 409 290 413 292 418 297 421 302 422 309 421 318 417 325 411 330 405 332 397 333 344 333 340 334 336 336 335
  149. 338 332 342 331 347 332 351 334 354 336 357 341 359 340 360 335 363 331 365 326 366 304 366 304 355 258 355 258 387 60
  150. 387 60 391 0 391 0 337 3 337 3 114 8 114 8 25 30 25 30 5 93 5 98 5 104 7 110 10 116 16 119 20 122 28 123 32 123 68 220
  151. 68 220 34 221 22 223 17 227 13 231 8 236 4 242 2 246 0 260 0 283 1 300 5 321 14 335 22 348 25 365 29 363 39 358 48 352
  152. 56 337 70 344 76 347 80), -tags => ['floor1', 'bg'], -fill => $fill);
  153. $w->create('line', qw(386 129 398 129), -fill => $outline, -tags => ['floor1', 'bg']);
  154. $w->create('line', qw(258 355 258 387), -fill => $outline, -tags => ['floor1', 'bg']);
  155. $w->create('line', qw(60 387 60 391), -fill => $outline, -tags => ['floor1', 'bg']);
  156. $w->create('line', qw(0 337 0 391), -fill => $outline, -tags => ['floor1', 'bg']);
  157. $w->create('line', qw(60 391 0 391), -fill => $outline, -tags => ['floor1', 'bg']);
  158. $w->create('line', qw(3 114 3 337), -fill => $outline, -tags => ['floor1', 'bg']);
  159. $w->create('line', qw(258 387 60 387), -fill => $outline, -tags => ['floor1', 'bg']);
  160. $w->create('line', qw(484 162 398 162), -fill => $outline, -tags => ['floor1', 'bg']);
  161. $w->create('line', qw(398 162 398 129), -fill => $outline, -tags => ['floor1', 'bg']);
  162. $w->create('line', qw(484 278 484 311), -fill => $outline, -tags => ['floor1', 'bg']);
  163. $w->create('line', qw(484 311 508 311), -fill => $outline, -tags => ['floor1', 'bg']);
  164. $w->create('line', qw(508 327 508 311), -fill => $outline, -tags => ['floor1', 'bg']);
  165. $w->create('line', qw(559 327 508 327), -fill => $outline, -tags => ['floor1', 'bg']);
  166. $w->create('line', qw(644 391 559 391), -fill => $outline, -tags => ['floor1', 'bg']);
  167. $w->create('line', qw(644 389 644 391), -fill => $outline, -tags => ['floor1', 'bg']);
  168. $w->create('line', qw(559 129 484 129), -fill => $outline, -tags => ['floor1', 'bg']);
  169. $w->create('line', qw(484 162 484 129), -fill => $outline, -tags => ['floor1', 'bg']);
  170. $w->create('line', qw(725 133 559 133), -fill => $outline, -tags => ['floor1', 'bg']);
  171. $w->create('line', qw(559 129 559 133), -fill => $outline, -tags => ['floor1', 'bg']);
  172. $w->create('line', qw(725 129 802 129), -fill => $outline, -tags => ['floor1', 'bg']);
  173. $w->create('line', qw(802 389 802 129), -fill => $outline, -tags => ['floor1', 'bg']);
  174. $w->create('line', qw(3 337 0 337), -fill => $outline, -tags => ['floor1', 'bg']);
  175. $w->create('line', qw(559 391 559 327), -fill => $outline, -tags => ['floor1', 'bg']);
  176. $w->create('line', qw(802 389 644 389), -fill => $outline, -tags => ['floor1', 'bg']);
  177. $w->create('line', qw(725 133 725 129), -fill => $outline, -tags => ['floor1', 'bg']);
  178. $w->create('line', qw(8 25 8 114), -fill => $outline, -tags => ['floor1', 'bg']);
  179. $w->create('line', qw(8 114 3 114), -fill => $outline, -tags => ['floor1', 'bg']);
  180. $w->create('line', qw(30 25 8 25), -fill => $outline, -tags => ['floor1', 'bg']);
  181. $w->create('line', qw(484 278 395 278), -fill => $outline, -tags => ['floor1', 'bg']);
  182. $w->create('line', qw(30 25 30 5), -fill => $outline, -tags => ['floor1', 'bg']);
  183. $w->create('line', qw(93 5 30 5), -fill => $outline, -tags => ['floor1', 'bg']);
  184. $w->create('line', qw(98 5 93 5), -fill => $outline, -tags => ['floor1', 'bg']);
  185. $w->create('line', qw(104 7 98 5), -fill => $outline, -tags => ['floor1', 'bg']);
  186. $w->create('line', qw(110 10 104 7), -fill => $outline, -tags => ['floor1', 'bg']);
  187. $w->create('line', qw(116 16 110 10), -fill => $outline, -tags => ['floor1', 'bg']);
  188. $w->create('line', qw(119 20 116 16), -fill => $outline, -tags => ['floor1', 'bg']);
  189. $w->create('line', qw(122 28 119 20), -fill => $outline, -tags => ['floor1', 'bg']);
  190. $w->create('line', qw(123 32 122 28), -fill => $outline, -tags => ['floor1', 'bg']);
  191. $w->create('line', qw(123 68 123 32), -fill => $outline, -tags => ['floor1', 'bg']);
  192. $w->create('line', qw(220 68 123 68), -fill => $outline, -tags => ['floor1', 'bg']);
  193. $w->create('line', qw(386 129 386 104), -fill => $outline, -tags => ['floor1', 'bg']);
  194. $w->create('line', qw(386 104 375 99), -fill => $outline, -tags => ['floor1', 'bg']);
  195. $w->create('line', qw(375 99 363 92), -fill => $outline, -tags => ['floor1', 'bg']);
  196. $w->create('line', qw(353 85 363 92), -fill => $outline, -tags => ['floor1', 'bg']);
  197. $w->create('line', qw(220 68 220 34), -fill => $outline, -tags => ['floor1', 'bg']);
  198. $w->create('line', qw(337 70 352 56), -fill => $outline, -tags => ['floor1', 'bg']);
  199. $w->create('line', qw(352 56 358 48), -fill => $outline, -tags => ['floor1', 'bg']);
  200. $w->create('line', qw(358 48 363 39), -fill => $outline, -tags => ['floor1', 'bg']);
  201. $w->create('line', qw(363 39 365 29), -fill => $outline, -tags => ['floor1', 'bg']);
  202. $w->create('line', qw(365 29 348 25), -fill => $outline, -tags => ['floor1', 'bg']);
  203. $w->create('line', qw(348 25 335 22), -fill => $outline, -tags => ['floor1', 'bg']);
  204. $w->create('line', qw(335 22 321 14), -fill => $outline, -tags => ['floor1', 'bg']);
  205. $w->create('line', qw(321 14 300 5), -fill => $outline, -tags => ['floor1', 'bg']);
  206. $w->create('line', qw(300 5 283 1), -fill => $outline, -tags => ['floor1', 'bg']);
  207. $w->create('line', qw(283 1 260 0), -fill => $outline, -tags => ['floor1', 'bg']);
  208. $w->create('line', qw(260 0 246 0), -fill => $outline, -tags => ['floor1', 'bg']);
  209. $w->create('line', qw(246 0 242 2), -fill => $outline, -tags => ['floor1', 'bg']);
  210. $w->create('line', qw(242 2 236 4), -fill => $outline, -tags => ['floor1', 'bg']);
  211. $w->create('line', qw(236 4 231 8), -fill => $outline, -tags => ['floor1', 'bg']);
  212. $w->create('line', qw(231 8 227 13), -fill => $outline, -tags => ['floor1', 'bg']);
  213. $w->create('line', qw(223 17 227 13), -fill => $outline, -tags => ['floor1', 'bg']);
  214. $w->create('line', qw(221 22 223 17), -fill => $outline, -tags => ['floor1', 'bg']);
  215. $w->create('line', qw(220 34 221 22), -fill => $outline, -tags => ['floor1', 'bg']);
  216. $w->create('line', qw(340 360 335 363), -fill => $outline, -tags => ['floor1', 'bg']);
  217. $w->create('line', qw(335 363 331 365), -fill => $outline, -tags => ['floor1', 'bg']);
  218. $w->create('line', qw(331 365 326 366), -fill => $outline, -tags => ['floor1', 'bg']);
  219. $w->create('line', qw(326 366 304 366), -fill => $outline, -tags => ['floor1', 'bg']);
  220. $w->create('line', qw(304 355 304 366), -fill => $outline, -tags => ['floor1', 'bg']);
  221. $w->create('line', qw(395 288 400 288), -fill => $outline, -tags => ['floor1', 'bg']);
  222. $w->create('line', qw(404 288 400 288), -fill => $outline, -tags => ['floor1', 'bg']);
  223. $w->create('line', qw(409 290 404 288), -fill => $outline, -tags => ['floor1', 'bg']);
  224. $w->create('line', qw(413 292 409 290), -fill => $outline, -tags => ['floor1', 'bg']);
  225. $w->create('line', qw(418 297 413 292), -fill => $outline, -tags => ['floor1', 'bg']);
  226. $w->create('line', qw(421 302 418 297), -fill => $outline, -tags => ['floor1', 'bg']);
  227. $w->create('line', qw(422 309 421 302), -fill => $outline, -tags => ['floor1', 'bg']);
  228. $w->create('line', qw(421 318 422 309), -fill => $outline, -tags => ['floor1', 'bg']);
  229. $w->create('line', qw(421 318 417 325), -fill => $outline, -tags => ['floor1', 'bg']);
  230. $w->create('line', qw(417 325 411 330), -fill => $outline, -tags => ['floor1', 'bg']);
  231. $w->create('line', qw(411 330 405 332), -fill => $outline, -tags => ['floor1', 'bg']);
  232. $w->create('line', qw(405 332 397 333), -fill => $outline, -tags => ['floor1', 'bg']);
  233. $w->create('line', qw(397 333 344 333), -fill => $outline, -tags => ['floor1', 'bg']);
  234. $w->create('line', qw(344 333 340 334), -fill => $outline, -tags => ['floor1', 'bg']);
  235. $w->create('line', qw(340 334 336 336), -fill => $outline, -tags => ['floor1', 'bg']);
  236. $w->create('line', qw(336 336 335 338), -fill => $outline, -tags => ['floor1', 'bg']);
  237. $w->create('line', qw(335 338 332 342), -fill => $outline, -tags => ['floor1', 'bg']);
  238. $w->create('line', qw(331 347 332 342), -fill => $outline, -tags => ['floor1', 'bg']);
  239. $w->create('line', qw(332 351 331 347), -fill => $outline, -tags => ['floor1', 'bg']);
  240. $w->create('line', qw(334 354 332 351), -fill => $outline, -tags => ['floor1', 'bg']);
  241. $w->create('line', qw(336 357 334 354), -fill => $outline, -tags => ['floor1', 'bg']);
  242. $w->create('line', qw(341 359 336 357), -fill => $outline, -tags => ['floor1', 'bg']);
  243. $w->create('line', qw(341 359 340 360), -fill => $outline, -tags => ['floor1', 'bg']);
  244. $w->create('line', qw(395 288 395 278), -fill => $outline, -tags => ['floor1', 'bg']);
  245. $w->create('line', qw(304 355 258 355), -fill => $outline, -tags => ['floor1', 'bg']);
  246. $w->create('line', qw(347 80 344 76), -fill => $outline, -tags => ['floor1', 'bg']);
  247. $w->create('line', qw(344 76 337 70), -fill => $outline, -tags => ['floor1', 'bg']);
  248. $w->create('line', qw(349 82 347 80), -fill => $outline, -tags => ['floor1', 'bg']);
  249. $w->create('line', qw(351 84 349 82), -fill => $outline, -tags => ['floor1', 'bg']);
  250. $w->create('line', qw(353 85 351 84), -fill => $outline, -tags => ['floor1', 'bg']);
  251. } # end floor_bg1
  252. sub floor_bg2 {
  253. my ($w, $fill, $outline) = @_;
  254. $w->create('poly', qw(559 129 484 129 484 162 398 162 398 129 315 129 315 133 176 133 176 129 96 129 96 133 3 133 3 339 0
  255. 339 0 391 60 391 60 387 258 387 258 329 350 329 350 311 395 311 395 280 484 280 484 311 508 311 508 327 558 327 558 391
  256. 644 391 644 367 802 367 802 129 725 129 725 133 559 133 559 129), -tags => ['floor2', 'bg'], -fill => $fill);
  257. $w->create('line', qw(350 311 350 329), -fill => $outline, -tags => ['floor2', 'bg']);
  258. $w->create('line', qw(398 129 398 162), -fill => $outline, -tags => ['floor2', 'bg']);
  259. $w->create('line', qw(802 367 802 129), -fill => $outline, -tags => ['floor2', 'bg']);
  260. $w->create('line', qw(802 129 725 129), -fill => $outline, -tags => ['floor2', 'bg']);
  261. $w->create('line', qw(725 133 725 129), -fill => $outline, -tags => ['floor2', 'bg']);
  262. $w->create('line', qw(559 129 559 133), -fill => $outline, -tags => ['floor2', 'bg']);
  263. $w->create('line', qw(559 133 725 133), -fill => $outline, -tags => ['floor2', 'bg']);
  264. $w->create('line', qw(484 162 484 129), -fill => $outline, -tags => ['floor2', 'bg']);
  265. $w->create('line', qw(559 129 484 129), -fill => $outline, -tags => ['floor2', 'bg']);
  266. $w->create('line', qw(802 367 644 367), -fill => $outline, -tags => ['floor2', 'bg']);
  267. $w->create('line', qw(644 367 644 391), -fill => $outline, -tags => ['floor2', 'bg']);
  268. $w->create('line', qw(644 391 558 391), -fill => $outline, -tags => ['floor2', 'bg']);
  269. $w->create('line', qw(558 327 558 391), -fill => $outline, -tags => ['floor2', 'bg']);
  270. $w->create('line', qw(558 327 508 327), -fill => $outline, -tags => ['floor2', 'bg']);
  271. $w->create('line', qw(508 327 508 311), -fill => $outline, -tags => ['floor2', 'bg']);
  272. $w->create('line', qw(484 311 508 311), -fill => $outline, -tags => ['floor2', 'bg']);
  273. $w->create('line', qw(484 280 484 311), -fill => $outline, -tags => ['floor2', 'bg']);
  274. $w->create('line', qw(398 162 484 162), -fill => $outline, -tags => ['floor2', 'bg']);
  275. $w->create('line', qw(484 280 395 280), -fill => $outline, -tags => ['floor2', 'bg']);
  276. $w->create('line', qw(395 280 395 311), -fill => $outline, -tags => ['floor2', 'bg']);
  277. $w->create('line', qw(258 387 60 387), -fill => $outline, -tags => ['floor2', 'bg']);
  278. $w->create('line', qw(3 133 3 339), -fill => $outline, -tags => ['floor2', 'bg']);
  279. $w->create('line', qw(3 339 0 339), -fill => $outline, -tags => ['floor2', 'bg']);
  280. $w->create('line', qw(60 391 0 391), -fill => $outline, -tags => ['floor2', 'bg']);
  281. $w->create('line', qw(0 339 0 391), -fill => $outline, -tags => ['floor2', 'bg']);
  282. $w->create('line', qw(60 387 60 391), -fill => $outline, -tags => ['floor2', 'bg']);
  283. $w->create('line', qw(258 329 258 387), -fill => $outline, -tags => ['floor2', 'bg']);
  284. $w->create('line', qw(350 329 258 329), -fill => $outline, -tags => ['floor2', 'bg']);
  285. $w->create('line', qw(395 311 350 311), -fill => $outline, -tags => ['floor2', 'bg']);
  286. $w->create('line', qw(398 129 315 129), -fill => $outline, -tags => ['floor2', 'bg']);
  287. $w->create('line', qw(176 133 315 133), -fill => $outline, -tags => ['floor2', 'bg']);
  288. $w->create('line', qw(176 129 96 129), -fill => $outline, -tags => ['floor2', 'bg']);
  289. $w->create('line', qw(3 133 96 133), -fill => $outline, -tags => ['floor2', 'bg']);
  290. $w->create('line', qw(315 133 315 129), -fill => $outline, -tags => ['floor2', 'bg']);
  291. $w->create('line', qw(176 133 176 129), -fill => $outline, -tags => ['floor2', 'bg']);
  292. $w->create('line', qw(96 133 96 129), -fill => $outline, -tags => ['floor2', 'bg']);
  293. } # end floor_bg2
  294. sub floor_bg3 {
  295. my ($w, $fill, $outline) = @_;
  296. $w->create('poly', qw(159 300 107 300 107 248 159 248 159 129 96 129 96 133 21 133 21 331 0 331 0 391 60 391 60 370 159 370
  297. 159 300), -tags => ['floor3', 'bg'], -fill => $fill);
  298. $w->create('poly', qw(258 370 258 329 350 329 350 311 399 311 399 129 315 129 315 133 176 133 176 129 159 129 159 370 258
  299. 370), -tags =>['floor3', 'bg'], -fill => $fill);
  300. $w->create('line', qw(96 133 96 129), -fill => $outline, -tags => ['floor3', 'bg']);
  301. $w->create('line', qw(176 129 96 129), -fill => $outline, -tags => ['floor3', 'bg']);
  302. $w->create('line', qw(176 129 176 133), -fill => $outline, -tags => ['floor3', 'bg']);
  303. $w->create('line', qw(315 133 176 133), -fill => $outline, -tags => ['floor3', 'bg']);
  304. $w->create('line', qw(315 133 315 129), -fill => $outline, -tags => ['floor3', 'bg']);
  305. $w->create('line', qw(399 129 315 129), -fill => $outline, -tags => ['floor3', 'bg']);
  306. $w->create('line', qw(399 311 399 129), -fill => $outline, -tags => ['floor3', 'bg']);
  307. $w->create('line', qw(399 311 350 311), -fill => $outline, -tags => ['floor3', 'bg']);
  308. $w->create('line', qw(350 329 350 311), -fill => $outline, -tags => ['floor3', 'bg']);
  309. $w->create('line', qw(350 329 258 329), -fill => $outline, -tags => ['floor3', 'bg']);
  310. $w->create('line', qw(258 370 258 329), -fill => $outline, -tags => ['floor3', 'bg']);
  311. $w->create('line', qw(60 370 258 370), -fill => $outline, -tags => ['floor3', 'bg']);
  312. $w->create('line', qw(60 370 60 391), -fill => $outline, -tags => ['floor3', 'bg']);
  313. $w->create('line', qw(60 391 0 391), -fill => $outline, -tags => ['floor3', 'bg']);
  314. $w->create('line', qw(0 391 0 331), -fill => $outline, -tags => ['floor3', 'bg']);
  315. $w->create('line', qw(21 331 0 331), -fill => $outline, -tags => ['floor3', 'bg']);
  316. $w->create('line', qw(21 331 21 133), -fill => $outline, -tags => ['floor3', 'bg']);
  317. $w->create('line', qw(96 133 21 133), -fill => $outline, -tags => ['floor3', 'bg']);
  318. $w->create('line', qw(107 300 159 300 159 248 107 248 107 300), -fill => $outline, -tags => ['floor3', 'bg']);
  319. } # end floor_bg3
  320. sub floor_fg1 {
  321. my($w, $color, $fl, $fi) = @_;
  322. my($i);
  323. $i = $w->create('polygon', qw(375 246 375 172 341 172 341 246), -fill => undef, -tags => ['floor1', 'room']);
  324. $fl->{$i} = 101;
  325. $fi->{101} = $i;
  326. $w->create('text', qw(358 209), -text => '101', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  327. $i = $w->create('polygon', qw(307 240 339 240 339 206 307 206), -fill => undef, -tags => ['floor1', 'room']);
  328. $fl->{$i} = 'Pub Lift1';
  329. $fi->{'Pub Lift1'} = $i;
  330. $w->create('text', qw(323 223), -text => 'Pub Lift1', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  331. $i = $w->create('polygon', qw(339 205 307 205 307 171 339 171), -fill => undef, -tags => ['floor1', 'room']);
  332. $fl->{$i} = 'Priv Lift1';
  333. $fi->{'Priv Lift1'} = $i;
  334. $w->create('text', qw(323 188), -text => 'Priv Lift1', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  335. $i = $w->create('polygon', qw(42 389 42 337 1 337 1 389), -fill => undef, -tags => ['floor1', 'room']);
  336. $fl->{$i} = 110;
  337. $fi->{110} = $i;
  338. $w->create('text', qw(21.5 363), -text => '110', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  339. $i = $w->create('polygon', qw(59 389 59 385 90 385 90 337 44 337 44 389), -fill => undef, -tags => ['floor1', 'room']);
  340. $fl->{$i} = 109;
  341. $fi->{109} = $i;
  342. $w->create('text', qw(67 363), -text => '109', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  343. $i = $w->create('polygon', qw(51 300 51 253 6 253 6 300), -fill => undef, -tags => ['floor1', 'room']);
  344. $fl->{$i} = 111;
  345. $fi->{111} = $i;
  346. $w->create('text', qw(28.5 276.5), -text => '111', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  347. $i = $w->create('polygon', qw(98 248 98 309 79 309 79 248), -fill => undef, -tags => ['floor1', 'room']);
  348. $fl->{$i} = '117B';
  349. $fi->{'117B'} = $i;
  350. $w->create('text', qw(88.5 278.5), -text => '117B', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  351. $i = $w->create('polygon', qw(51 251 51 204 6 204 6 251), -fill => undef, -tags => ['floor1', 'room']);
  352. $fl->{$i} = 112;
  353. $fi->{112} = $i;
  354. $w->create('text', qw(28.5 227.5), -text => '112', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  355. $i = $w->create('polygon', qw(6 156 51 156 51 203 6 203), -fill => undef, -tags => ['floor1', 'room']);
  356. $fl->{$i} = 113;
  357. $fi->{113} = $i;
  358. $w->create('text', qw(28.5 179.5), -text => '113', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  359. $i = $w->create('polygon', qw(85 169 79 169 79 192 85 192), -fill => undef, -tags => ['floor1', 'room']);
  360. $fl->{$i} = '117A';
  361. $fi->{'117A'} = $i;
  362. $w->create('text', qw(82 180.5), -text => '117A', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  363. $i = $w->create('polygon', qw(77 302 77 168 53 168 53 302), -fill => undef, -tags => ['floor1', 'room']);
  364. $fl->{$i} = 117;
  365. $fi->{117} = $i;
  366. $w->create('text', qw(65 235), -text => '117', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  367. $i = $w->create('polygon', qw(51 155 51 115 6 115 6 155), -fill => undef, -tags => ['floor1', 'room']);
  368. $fl->{$i} = 114;
  369. $fi->{114} = $i;
  370. $w->create('text', qw(28.5 135), -text => '114', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  371. $i = $w->create('polygon', qw(95 115 53 115 53 168 95 168), -fill => undef, -tags => ['floor1', 'room']);
  372. $fl->{$i} = 115;
  373. $fi->{115} = $i;
  374. $w->create('text', qw(74 141.5), -text => '115', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  375. $i = $w->create('polygon', qw(87 113 87 27 10 27 10 113), -fill => undef, -tags => ['floor1', 'room']);
  376. $fl->{$i} = 116;
  377. $fi->{116} = $i;
  378. $w->create('text', qw(48.5 70), -text => '116', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  379. $i = $w->create('polygon', qw(89 91 128 91 128 113 89 113), -fill => undef, -tags => ['floor1', 'room']);
  380. $fl->{$i} = 118;
  381. $fi->{118} = $i;
  382. $w->create('text', qw(108.5 102), -text => '118', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  383. $i = $w->create('polygon', qw(178 128 178 132 216 132 216 91 163 91 163 112 149 112 149 128), -fill => undef, -tags => ['floor1', 'room']);
  384. $fl->{$i} = 120;
  385. $fi->{120} = $i;
  386. $w->create('text', qw(189.5 111.5), -text => '120', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  387. $i = $w->create('polygon', qw(79 193 87 193 87 169 136 169 136 192 156 192 156 169 175 169 175 246 79 246), -fill => undef, -tags => ['floor1', 'room']);
  388. $fl->{$i} = 122;
  389. $fi->{122} = $i;
  390. $w->create('text', qw(131 207.5), -text => '122', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  391. $i = $w->create('polygon', qw(138 169 154 169 154 191 138 191), -fill => undef, -tags => ['floor1', 'room']);
  392. $fl->{$i} = 121;
  393. $fi->{121} = $i;
  394. $w->create('text', qw(146 180), -text => '121', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  395. $i = $w->create('polygon', qw(99 300 126 300 126 309 99 309), -fill => undef, -tags => ['floor1', 'room']);
  396. $fl->{$i} = '106A';
  397. $fi->{'106A'} = $i;
  398. $w->create('text', qw(112.5 304.5), -text => '106A', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  399. $i = $w->create('polygon', qw(128 299 128 309 150 309 150 248 99 248 99 299), -fill => undef, -tags => ['floor1', 'room']);
  400. $fl->{$i} = 105;
  401. $fi->{105} = $i;
  402. $w->create('text', qw(124.5 278.5), -text => '105', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  403. $i = $w->create('polygon', qw(174 309 174 300 152 300 152 309), -fill => undef, -tags => ['floor1', 'room']);
  404. $fl->{$i} = '106B';
  405. $fi->{'106B'} = $i;
  406. $w->create('text', qw(163 304.5), -text => '106B', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  407. $i = $w->create('polygon', qw(176 299 176 309 216 309 216 248 152 248 152 299), -fill => undef, -tags => ['floor1', 'room']);
  408. $fl->{$i} = 104;
  409. $fi->{104} = $i;
  410. $w->create('text', qw(184 278.5), -text => '104', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  411. $i = $w->create('polygon', qw(138 385 138 337 91 337 91 385), -fill => undef, -tags => ['floor1', 'room']);
  412. $fl->{$i} = 108;
  413. $fi->{108} = $i;
  414. $w->create('text', qw(114.5 361), -text => '108', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  415. $i = $w->create('polygon', qw(256 337 140 337 140 385 256 385), -fill => undef, -tags => ['floor1', 'room']);
  416. $fl->{$i} = 107;
  417. $fi->{107} = $i;
  418. $w->create('text', qw(198 361), -text => '107', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  419. $i = $w->create('polygon', qw(300 353 300 329 260 329 260 353), -fill => undef, -tags => ['floor1', 'room']);
  420. $fl->{$i} = 'Smoking';
  421. $fi->{Smoking} = $i;
  422. $w->create('text', qw(280 341), -text => 'Smoking', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  423. $i = $w->create('polygon', qw(314 135 314 170 306 170 306 246 177 246 177 135), -fill => undef, -tags => ['floor1', 'room']);
  424. $fl->{$i} = 123;
  425. $fi->{123} = $i;
  426. $w->create('text', qw(245.5 190.5), -text => '123', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  427. $i = $w->create('polygon', qw(217 248 301 248 301 326 257 326 257 310 217 310), -fill => undef, -tags => ['floor1', 'room']);
  428. $fl->{$i} = 103;
  429. $fi->{103} = $i;
  430. $w->create('text', qw(259 287), -text => '103', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  431. $i = $w->create('polygon', qw(396 188 377 188 377 169 316 169 316 131 396 131), -fill => undef, -tags => ['floor1', 'room']);
  432. $fl->{$i} = 124;
  433. $fi->{124} = $i;
  434. $w->create('text', qw(356 150), -text => '124', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  435. $i = $w->create('polygon', qw(397 226 407 226 407 189 377 189 377 246 397 246), -fill => undef, -tags => ['floor1', 'room']);
  436. $fl->{$i} = 125;
  437. $fi->{125} = $i;
  438. $w->create('text', qw(392 217.5), -text => '125', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  439. $i = $w->create('polygon', qw(399 187 409 187 409 207 474 207 474 164 399 164), -fill => undef, -tags => ['floor1', 'room']);
  440. $fl->{$i} = 126;
  441. $fi->{126} = $i;
  442. $w->create('text', qw(436.5 185.5), -text => '126', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  443. $i = $w->create('polygon', qw(409 209 409 229 399 229 399 253 486 253 486 239 474 239 474 209), -fill => undef, -tags => ['floor1', 'room']);
  444. $fl->{$i} = 127;
  445. $fi->{127} = $i;
  446. $w->create('text', qw(436.5 231), -text => '127', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  447. $i = $w->create('polygon', qw(501 164 501 174 495 174 495 188 490 188 490 204 476 204 476 164), -fill => undef, -tags => ['floor1', 'room']);
  448. $fl->{$i} = 'MShower';
  449. $fi->{MShower} = $i;
  450. $w->create('text', qw(488.5 184), -text => 'MShower', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  451. $i = $w->create('polygon', qw(497 176 513 176 513 204 492 204 492 190 497 190), -fill => undef, -tags => ['floor1', 'room']);
  452. $fl->{$i} = 'Closet';
  453. $fi->{Closet} = $i;
  454. $w->create('text', qw(502.5 190), -text => 'Closet', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  455. $i = $w->create('polygon', qw(476 237 476 206 513 206 513 254 488 254 488 237), -fill => undef, -tags => ['floor1', 'room']);
  456. $fl->{$i} = 'WShower';
  457. $fi->{WShower} = $i;
  458. $w->create('text', qw(494.5 230), -text => 'WShower', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  459. $i = $w->create('polygon', qw(486 131 558 131 558 135 724 135 724 166 697 166 697 275 553 275 531 254 515 254 515 174 503 174 503 161 486 161), -fill => undef, -tags => ['floor1', 'room']);
  460. $fl->{$i} = 130;
  461. $fi->{130} = $i;
  462. $w->create('text', qw(638.5 205), -text => '130', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  463. $i = $w->create('polygon', qw(308 242 339 242 339 248 342 248 342 246 397 246 397 276 393 276 393 309 300 309 300 248 308 248), -fill => undef, -tags => ['floor1', 'room']);
  464. $fl->{$i} = 102;
  465. $fi->{102} = $i;
  466. $w->create('text', qw(367.5 278.5), -text => '102', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  467. $i = $w->create('polygon', qw(397 255 486 255 486 276 397 276), -fill => undef, -tags => ['floor1', 'room']);
  468. $fl->{$i} = 128;
  469. $fi->{128} = $i;
  470. $w->create('text', qw(441.5 265.5), -text => '128', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  471. $i = $w->create('polygon', qw(510 309 486 309 486 255 530 255 552 277 561 277 561 325 510 325), -fill => undef, -tags => ['floor1', 'room']);
  472. $fl->{$i} = 129;
  473. $fi->{129} = $i;
  474. $w->create('text', qw(535.5 293), -text => '129', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  475. $i = $w->create('polygon', qw(696 281 740 281 740 387 642 387 642 389 561 389 561 277 696 277), -fill => undef, -tags => ['floor1', 'room']);
  476. $fl->{$i} = 133;
  477. $fi->{133} = $i;
  478. $w->create('text', qw(628.5 335), -text => '133', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  479. $i = $w->create('polygon', qw(742 387 742 281 800 281 800 387), -fill => undef, -tags => ['floor1', 'room']);
  480. $fl->{$i} = 132;
  481. $fi->{132} = $i;
  482. $w->create('text', qw(771 334), -text => '132', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  483. $i = $w->create('polygon', qw(800 168 800 280 699 280 699 168), -fill => undef, -tags => ['floor1', 'room']);
  484. $fl->{$i} = 134;
  485. $fi->{134} = $i;
  486. $w->create('text', qw(749.5 224), -text => '134', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  487. $i = $w->create('polygon', qw(726 131 726 166 800 166 800 131), -fill => undef, -tags => ['floor1', 'room']);
  488. $fl->{$i} = 135;
  489. $fi->{135} = $i;
  490. $w->create('text', qw(763 148.5), -text => '135', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  491. $i = $w->create('polygon', qw(340 360 335 363 331 365 326 366 304 366 304 312 396 312 396 288 400 288 404 288 409 290 413 292 418 297 421 302 422 309 421 318 417 325 411 330 405 332 397 333 344 333 340 334 336 336 335 338 332 342 331 347 332 351 334 354 336 357 341 359), -fill => undef, -tags => ['floor1', 'room']);
  492. $fl->{$i} = 'Ramona Stair';
  493. $fi->{'Ramona Stair'} = $i;
  494. $w->create('text', qw(368 323), -text => 'Ramona Stair', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  495. $i = $w->create('polygon', qw(30 23 30 5 93 5 98 5 104 7 110 10 116 16 119 20 122 28 123 32 123 68 220 68 220 87 90 87 90 23), -fill => undef, -tags => ['floor1', 'room']);
  496. $fl->{$i} = 'University Stair';
  497. $fi->{'University Stair'} = $i;
  498. $w->create('text', qw(155 77.5), -text => 'University Stair', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  499. $i = $w->create('polygon', qw(282 37 295 40 312 49 323 56 337 70 352 56 358 48 363 39 365 29 348 25 335 22 321 14 300 5 283 1 260 0 246 0 242 2 236 4 231 8 227 13 223 17 221 22 220 34 260 34), -fill => undef, -tags => ['floor1', 'room']);
  500. $fl->{$i} = 'Plaza Stair';
  501. $fi->{'Plaza Stair'} = $i;
  502. $w->create('text', qw(317.5 28.5), -text => 'Plaza Stair', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  503. $i = $w->create('polygon', qw(220 34 260 34 282 37 295 40 312 49 323 56 337 70 350 83 365 94 377 100 386 104 386 128 220 128), -fill => undef, -tags => ['floor1', 'room']);
  504. $fl->{$i} = 'Plaza Deck';
  505. $fi->{'Plaza Deck'} = $i;
  506. $w->create('text', qw(303 81), -text => 'Plaza Deck', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  507. $i = $w->create('polygon', qw(257 336 77 336 6 336 6 301 77 301 77 310 257 310), -fill => undef, -tags => ['floor1', 'room']);
  508. $fl->{$i} = 106;
  509. $fi->{106} = $i;
  510. $w->create('text', qw(131.5 318.5), -text => '106', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  511. $i = $w->create('polygon', qw(146 110 162 110 162 91 130 91 130 115 95 115 95 128 114 128 114 151 157 151 157 153 112 153 112 130 97 130 97 168 175 168 175 131 146 131), -fill => undef, -tags => ['floor1', 'room']);
  512. $fl->{$i} = 119;
  513. $fi->{119} = $i;
  514. $w->create('text', qw(143.5 133), -text => '119', -fill => $color, -anchor => 'c', -tags => ['floor1', 'label']);
  515. $w->create('line', qw(155 191 155 189), -fill => $color, -tags => ['floor1', 'wall']);
  516. $w->create('line', qw(155 177 155 169), -fill => $color, -tags => ['floor1', 'wall']);
  517. $w->create('line', qw(96 129 96 169), -fill => $color, -tags => ['floor1', 'wall']);
  518. $w->create('line', qw(78 169 176 169), -fill => $color, -tags => ['floor1', 'wall']);
  519. $w->create('line', qw(176 247 176 129), -fill => $color, -tags => ['floor1', 'wall']);
  520. $w->create('line', qw(340 206 307 206), -fill => $color, -tags => ['floor1', 'wall']);
  521. $w->create('line', qw(340 187 340 170), -fill => $color, -tags => ['floor1', 'wall']);
  522. $w->create('line', qw(340 210 340 201), -fill => $color, -tags => ['floor1', 'wall']);
  523. $w->create('line', qw(340 247 340 224), -fill => $color, -tags => ['floor1', 'wall']);
  524. $w->create('line', qw(340 241 307 241), -fill => $color, -tags => ['floor1', 'wall']);
  525. $w->create('line', qw(376 246 376 170), -fill => $color, -tags => ['floor1', 'wall']);
  526. $w->create('line', qw(307 247 307 170), -fill => $color, -tags => ['floor1', 'wall']);
  527. $w->create('line', qw(376 170 307 170), -fill => $color, -tags => ['floor1', 'wall']);
  528. $w->create('line', qw(315 129 315 170), -fill => $color, -tags => ['floor1', 'wall']);
  529. $w->create('line', qw(147 129 176 129), -fill => $color, -tags => ['floor1', 'wall']);
  530. $w->create('line', qw(202 133 176 133), -fill => $color, -tags => ['floor1', 'wall']);
  531. $w->create('line', qw(398 129 315 129), -fill => $color, -tags => ['floor1', 'wall']);
  532. $w->create('line', qw(258 352 258 387), -fill => $color, -tags => ['floor1', 'wall']);
  533. $w->create('line', qw(60 387 60 391), -fill => $color, -tags => ['floor1', 'wall']);
  534. $w->create('line', qw(0 337 0 391), -fill => $color, -tags => ['floor1', 'wall']);
  535. $w->create('line', qw(60 391 0 391), -fill => $color, -tags => ['floor1', 'wall']);
  536. $w->create('line', qw(3 114 3 337), -fill => $color, -tags => ['floor1', 'wall']);
  537. $w->create('line', qw(258 387 60 387), -fill => $color, -tags => ['floor1', 'wall']);
  538. $w->create('line', qw(52 237 52 273), -fill => $color, -tags => ['floor1', 'wall']);
  539. $w->create('line', qw(52 189 52 225), -fill => $color, -tags => ['floor1', 'wall']);
  540. $w->create('line', qw(52 140 52 177), -fill => $color, -tags => ['floor1', 'wall']);
  541. $w->create('line', qw(395 306 395 311), -fill => $color, -tags => ['floor1', 'wall']);
  542. $w->create('line', qw(531 254 398 254), -fill => $color, -tags => ['floor1', 'wall']);
  543. $w->create('line', qw(475 178 475 238), -fill => $color, -tags => ['floor1', 'wall']);
  544. $w->create('line', qw(502 162 398 162), -fill => $color, -tags => ['floor1', 'wall']);
  545. $w->create('line', qw(398 129 398 188), -fill => $color, -tags => ['floor1', 'wall']);
  546. $w->create('line', qw(383 188 376 188), -fill => $color, -tags => ['floor1', 'wall']);
  547. $w->create('line', qw(408 188 408 194), -fill => $color, -tags => ['floor1', 'wall']);
  548. $w->create('line', qw(398 227 398 254), -fill => $color, -tags => ['floor1', 'wall']);
  549. $w->create('line', qw(408 227 398 227), -fill => $color, -tags => ['floor1', 'wall']);
  550. $w->create('line', qw(408 222 408 227), -fill => $color, -tags => ['floor1', 'wall']);
  551. $w->create('line', qw(408 206 408 210), -fill => $color, -tags => ['floor1', 'wall']);
  552. $w->create('line', qw(408 208 475 208), -fill => $color, -tags => ['floor1', 'wall']);
  553. $w->create('line', qw(484 278 484 311), -fill => $color, -tags => ['floor1', 'wall']);
  554. $w->create('line', qw(484 311 508 311), -fill => $color, -tags => ['floor1', 'wall']);
  555. $w->create('line', qw(508 327 508 311), -fill => $color, -tags => ['floor1', 'wall']);
  556. $w->create('line', qw(559 327 508 327), -fill => $color, -tags => ['floor1', 'wall']);
  557. $w->create('line', qw(644 391 559 391), -fill => $color, -tags => ['floor1', 'wall']);
  558. $w->create('line', qw(644 389 644 391), -fill => $color, -tags => ['floor1', 'wall']);
  559. $w->create('line', qw(514 205 475 205), -fill => $color, -tags => ['floor1', 'wall']);
  560. $w->create('line', qw(496 189 496 187), -fill => $color, -tags => ['floor1', 'wall']);
  561. $w->create('line', qw(559 129 484 129), -fill => $color, -tags => ['floor1', 'wall']);
  562. $w->create('line', qw(484 162 484 129), -fill => $color, -tags => ['floor1', 'wall']);
  563. $w->create('line', qw(725 133 559 133), -fill => $color, -tags => ['floor1', 'wall']);
  564. $w->create('line', qw(559 129 559 133), -fill => $color, -tags => ['floor1', 'wall']);
  565. $w->create('line', qw(725 149 725 167), -fill => $color, -tags => ['floor1', 'wall']);
  566. $w->create('line', qw(725 129 802 129), -fill => $color, -tags => ['floor1', 'wall']);
  567. $w->create('line', qw(802 389 802 129), -fill => $color, -tags => ['floor1', 'wall']);
  568. $w->create('line', qw(739 167 802 167), -fill => $color, -tags => ['floor1', 'wall']);
  569. $w->create('line', qw(396 188 408 188), -fill => $color, -tags => ['floor1', 'wall']);
  570. $w->create('line', qw(0 337 9 337), -fill => $color, -tags => ['floor1', 'wall']);
  571. $w->create('line', qw(58 337 21 337), -fill => $color, -tags => ['floor1', 'wall']);
  572. $w->create('line', qw(43 391 43 337), -fill => $color, -tags => ['floor1', 'wall']);
  573. $w->create('line', qw(105 337 75 337), -fill => $color, -tags => ['floor1', 'wall']);
  574. $w->create('line', qw(91 387 91 337), -fill => $color, -tags => ['floor1', 'wall']);
  575. $w->create('line', qw(154 337 117 337), -fill => $color, -tags => ['floor1', 'wall']);
  576. $w->create('line', qw(139 387 139 337), -fill => $color, -tags => ['floor1', 'wall']);
  577. $w->create('line', qw(227 337 166 337), -fill => $color, -tags => ['floor1', 'wall']);
  578. $w->create('line', qw(258 337 251 337), -fill => $color, -tags => ['floor1', 'wall']);
  579. $w->create('line', qw(258 328 302 328), -fill => $color, -tags => ['floor1', 'wall']);
  580. $w->create('line', qw(302 355 302 311), -fill => $color, -tags => ['floor1', 'wall']);
  581. $w->create('line', qw(395 311 302 311), -fill => $color, -tags => ['floor1', 'wall']);
  582. $w->create('line', qw(484 278 395 278), -fill => $color, -tags => ['floor1', 'wall']);
  583. $w->create('line', qw(395 294 395 278), -fill => $color, -tags => ['floor1', 'wall']);
  584. $w->create('line', qw(473 278 473 275), -fill => $color, -tags => ['floor1', 'wall']);
  585. $w->create('line', qw(473 256 473 254), -fill => $color, -tags => ['floor1', 'wall']);
  586. $w->create('line', qw(533 257 531 254), -fill => $color, -tags => ['floor1', 'wall']);
  587. $w->create('line', qw(553 276 551 274), -fill => $color, -tags => ['floor1', 'wall']);
  588. $w->create('line', qw(698 276 553 276), -fill => $color, -tags => ['floor1', 'wall']);
  589. $w->create('line', qw(559 391 559 327), -fill => $color, -tags => ['floor1', 'wall']);
  590. $w->create('line', qw(802 389 644 389), -fill => $color, -tags => ['floor1', 'wall']);
  591. $w->create('line', qw(741 314 741 389), -fill => $color, -tags => ['floor1', 'wall']);
  592. $w->create('line', qw(698 280 698 167), -fill => $color, -tags => ['floor1', 'wall']);
  593. $w->create('line', qw(707 280 698 280), -fill => $color, -tags => ['floor1', 'wall']);
  594. $w->create('line', qw(802 280 731 280), -fill => $color, -tags => ['floor1', 'wall']);
  595. $w->create('line', qw(741 280 741 302), -fill => $color, -tags => ['floor1', 'wall']);
  596. $w->create('line', qw(698 167 727 167), -fill => $color, -tags => ['floor1', 'wall']);
  597. $w->create('line', qw(725 137 725 129), -fill => $color, -tags => ['floor1', 'wall']);
  598. $w->create('line', qw(514 254 514 175), -fill => $color, -tags => ['floor1', 'wall']);
  599. $w->create('line', qw(496 175 514 175), -fill => $color, -tags => ['floor1', 'wall']);
  600. $w->create('line', qw(502 175 502 162), -fill => $color, -tags => ['floor1', 'wall']);
  601. $w->create('line', qw(475 166 475 162), -fill => $color, -tags => ['floor1', 'wall']);
  602. $w->create('line', qw(496 176 496 175), -fill => $color, -tags => ['floor1', 'wall']);
  603. $w->create('line', qw(491 189 496 189), -fill => $color, -tags => ['floor1', 'wall']);
  604. $w->create('line', qw(491 205 491 189), -fill => $color, -tags => ['floor1', 'wall']);
  605. $w->create('line', qw(487 238 475 238), -fill => $color, -tags => ['floor1', 'wall']);
  606. $w->create('line', qw(487 240 487 238), -fill => $color, -tags => ['floor1', 'wall']);
  607. $w->create('line', qw(487 252 487 254), -fill => $color, -tags => ['floor1', 'wall']);
  608. $w->create('line', qw(315 133 304 133), -fill => $color, -tags => ['floor1', 'wall']);
  609. $w->create('line', qw(256 133 280 133), -fill => $color, -tags => ['floor1', 'wall']);
  610. $w->create('line', qw(78 247 270 247), -fill => $color, -tags => ['floor1', 'wall']);
  611. $w->create('line', qw(307 247 294 247), -fill => $color, -tags => ['floor1', 'wall']);
  612. $w->create('line', qw(214 133 232 133), -fill => $color, -tags => ['floor1', 'wall']);
  613. $w->create('line', qw(217 247 217 266), -fill => $color, -tags => ['floor1', 'wall']);
  614. $w->create('line', qw(217 309 217 291), -fill => $color, -tags => ['floor1', 'wall']);
  615. $w->create('line', qw(217 309 172 309), -fill => $color, -tags => ['floor1', 'wall']);
  616. $w->create('line', qw(154 309 148 309), -fill => $color, -tags => ['floor1', 'wall']);
  617. $w->create('line', qw(175 300 175 309), -fill => $color, -tags => ['floor1', 'wall']);
  618. $w->create('line', qw(151 300 175 300), -fill => $color, -tags => ['floor1', 'wall']);
  619. $w->create('line', qw(151 247 151 309), -fill => $color, -tags => ['floor1', 'wall']);
  620. $w->create('line', qw(78 237 78 265), -fill => $color, -tags => ['floor1', 'wall']);
  621. $w->create('line', qw(78 286 78 309), -fill => $color, -tags => ['floor1', 'wall']);
  622. $w->create('line', qw(106 309 78 309), -fill => $color, -tags => ['floor1', 'wall']);
  623. $w->create('line', qw(130 309 125 309), -fill => $color, -tags => ['floor1', 'wall']);
  624. $w->create('line', qw(99 309 99 247), -fill => $color, -tags => ['floor1', 'wall']);
  625. $w->create('line', qw(127 299 99 299), -fill => $color, -tags => ['floor1', 'wall']);
  626. $w->create('line', qw(127 309 127 299), -fill => $color, -tags => ['floor1', 'wall']);
  627. $w->create('line', qw(155 191 137 191), -fill => $color, -tags => ['floor1', 'wall']);
  628. $w->create('line', qw(137 169 137 191), -fill => $color, -tags => ['floor1', 'wall']);
  629. $w->create('line', qw(78 171 78 169), -fill => $color, -tags => ['floor1', 'wall']);
  630. $w->create('line', qw(78 190 78 218), -fill => $color, -tags => ['floor1', 'wall']);
  631. $w->create('line', qw(86 192 86 169), -fill => $color, -tags => ['floor1', 'wall']);
  632. $w->create('line', qw(86 192 78 192), -fill => $color, -tags => ['floor1', 'wall']);
  633. $w->create('line', qw(52 301 3 301), -fill => $color, -tags => ['floor1', 'wall']);
  634. $w->create('line', qw(52 286 52 301), -fill => $color, -tags => ['floor1', 'wall']);
  635. $w->create('line', qw(52 252 3 252), -fill => $color, -tags => ['floor1', 'wall']);
  636. $w->create('line', qw(52 203 3 203), -fill => $color, -tags => ['floor1', 'wall']);
  637. $w->create('line', qw(3 156 52 156), -fill => $color, -tags => ['floor1', 'wall']);
  638. $w->create('line', qw(8 25 8 114), -fill => $color, -tags => ['floor1', 'wall']);
  639. $w->create('line', qw(63 114 3 114), -fill => $color, -tags => ['floor1', 'wall']);
  640. $w->create('line', qw(75 114 97 114), -fill => $color, -tags => ['floor1', 'wall']);
  641. $w->create('line', qw(108 114 129 114), -fill => $color, -tags => ['floor1', 'wall']);
  642. $w->create('line', qw(129 114 129 89), -fill => $color, -tags => ['floor1', 'wall']);
  643. $w->create('line', qw(52 114 52 128), -fill => $color, -tags => ['floor1', 'wall']);
  644. $w->create('line', qw(132 89 88 89), -fill => $color, -tags => ['floor1', 'wall']);
  645. $w->create('line', qw(88 25 88 89), -fill => $color, -tags => ['floor1', 'wall']);
  646. $w->create('line', qw(88 114 88 89), -fill => $color, -tags => ['floor1', 'wall']);
  647. $w->create('line', qw(218 89 144 89), -fill => $color, -tags => ['floor1', 'wall']);
  648. $w->create('line', qw(147 111 147 129), -fill => $color, -tags => ['floor1', 'wall']);
  649. $w->create('line', qw(162 111 147 111), -fill => $color, -tags => ['floor1', 'wall']);
  650. $w->create('line', qw(162 109 162 111), -fill => $color, -tags => ['floor1', 'wall']);
  651. $w->create('line', qw(162 96 162 89), -fill => $color, -tags => ['floor1', 'wall']);
  652. $w->create('line', qw(218 89 218 94), -fill => $color, -tags => ['floor1', 'wall']);
  653. $w->create('line', qw(218 89 218 119), -fill => $color, -tags => ['floor1', 'wall']);
  654. $w->create('line', qw(8 25 88 25), -fill => $color, -tags => ['floor1', 'wall']);
  655. $w->create('line', qw(258 337 258 328), -fill => $color, -tags => ['floor1', 'wall']);
  656. $w->create('line', qw(113 129 96 129), -fill => $color, -tags => ['floor1', 'wall']);
  657. $w->create('line', qw(302 355 258 355), -fill => $color, -tags => ['floor1', 'wall']);
  658. $w->create('line', qw(386 104 386 129), -fill => $color, -tags => ['floor1', 'wall']);
  659. $w->create('line', qw(377 100 386 104), -fill => $color, -tags => ['floor1', 'wall']);
  660. $w->create('line', qw(365 94 377 100), -fill => $color, -tags => ['floor1', 'wall']);
  661. $w->create('line', qw(350 83 365 94), -fill => $color, -tags => ['floor1', 'wall']);
  662. $w->create('line', qw(337 70 350 83), -fill => $color, -tags => ['floor1', 'wall']);
  663. $w->create('line', qw(337 70 323 56), -fill => $color, -tags => ['floor1', 'wall']);
  664. $w->create('line', qw(312 49 323 56), -fill => $color, -tags => ['floor1', 'wall']);
  665. $w->create('line', qw(295 40 312 49), -fill => $color, -tags => ['floor1', 'wall']);
  666. $w->create('line', qw(282 37 295 40), -fill => $color, -tags => ['floor1', 'wall']);
  667. $w->create('line', qw(260 34 282 37), -fill => $color, -tags => ['floor1', 'wall']);
  668. $w->create('line', qw(253 34 260 34), -fill => $color, -tags => ['floor1', 'wall']);
  669. $w->create('line', qw(386 128 386 104), -fill => $color, -tags => ['floor1', 'wall']);
  670. $w->create('line', qw(113 152 156 152), -fill => $color, -tags => ['f