diff options
Diffstat (limited to 'tools/make-switch-placements.pl')
-rwxr-xr-x | tools/make-switch-placements.pl | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/tools/make-switch-placements.pl b/tools/make-switch-placements.pl new file mode 100755 index 0000000..58538e2 --- /dev/null +++ b/tools/make-switch-placements.pl @@ -0,0 +1,88 @@ +#! /usr/bin/perl +use strict; +use warnings; + +my $switchtype = "dlink3100"; + +print "begin;\n"; +print "delete from placements where switch in (select switch from switches where switchtype = '$switchtype');\n"; + +my %ip; +my $i = 1; +while (<STDIN>) { + chomp; + my @info = split(/ /); + + if (scalar @info < 5) { + die "Unknown line: $_"; + } + my ($x, $y, $xx, $yy); + + my $name = $info[0]; + if ($name =~ /^e\d+-\d+$/) { + $name =~ /e(\d+)-(\d+)/; + my ($e, $s) = ($1, $2); + + $x = int(220 + (($e-1)/2) * 21.5); + $y = undef; + + $x += 10 if ($e >= 11); + $x += 10 if ($e >= 27); + $x += 10 if ($e >= 43); + $x += 10 if ($e >= 59); + + if ($s > 2) { + $y = 310 - 84 * ($s-2); + } else { + $y = 507 - 84 * ($s); + } + + $xx = $x + 14; + $yy = $y + 84; + + # Justeringer + $y += 42 if $name eq "e1-4"; + $y += 28 if $name eq "e3-4"; + $y += 14 if $name eq "e5-4"; + + $yy -= 14 if $name eq "e77-1"; + $yy -= 28 if $name eq "e79-1"; + $yy -= 42 if $name eq "e81-1"; + $yy -= 56 if $name eq "e83-1"; + } elsif ($name =~ /^creative(\d+)$/) { + my $s = $1; + if ($s < 3) { + if ($s == 1) { + $x = 1190; + $y = 278; + } else { + $x = 1180; + $y = 230; + } + $xx = $x+35; + $yy = $y+19; + $yy += 6; + } else { + $x = 1056; + $y = 296 - 22 * ($s-3); + if ($s <= 4) { + $xx = $x+100; + } elsif ($s <= 7) { + $xx = $x+70; + } elsif ($s <= 8) { + $xx = $x+55; + } else { + $xx = $x+35; + } + $yy = $y+19; + $yy -= 5 if $s == 3; + } + } else { + die "Unknown switch: $name"; + } + + print "insert into placements select switch, box '(($x,$y),($xx,$yy))' from switches where sysname = '$name';\n"; + $i++; +} + +print "end;\n"; |