#! /usr/bin/perl

$faktor = @ARGV[0];

if(!defined($faktor)) {
  print STDERR "Usage: scale_fig.pl <scaling_factor>\n";
  exit 1;
}

if( !( $faktor =~ /^[0-9]*(?:\.[0-9]*)?$/ ) ) {
  print STDERR "Error: '$faktor' is no valid scaling factor.\n";
  exit 1;
}

print STDERR "Using scaling factor $faktor.\n";

while(defined($i = <STDIN>)) { 
  if ($i =~ /^2 /) {
#2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 1 2
    # skaliere die Koordinaten der Punkte einer Polyline
    print $i;
    # Enthält die Polyline Pfeile, dann müssen die definierenden Zeilen
    # überlesen werden
    if ($i =~ /1 [0-9]+ *$/) {
      $dummy = <STDIN>;
      print $dummy;
    }
    if ($i =~ /1 [01] [0-9]+ *$/) {
      $dummy = <STDIN>;
      print $dummy;
    }
    # Lies nun die Zeile mit den Koordinaten der Punkte ein
    $i = <STDIN>;
#    print $i;
    $i =~ s/[0-9]+/int($&*$faktor+.5)/eg;
    print $i;
  }
  elsif ($i =~ /^4 /) {
    # skaliere die Koordinaten eines Textes
#    print $i;
    $i =~ s/^((?:[0-9\.\-]+ *){11}) ([0-9]+) ([0-9]+)/"$1 ".int($2*$faktor+.5)." ".int($3*$faktor+.5)/e;
    print $i; 
  }
  elsif ($i =~ /^1 /) {
    # skaliere die Koordinaten einer Ellipse (falls der Radius == 18 ist, d.h.
    # die Ellipse ist in Wahrheit ein "Punkt", dann wird er nicht skaliert)
#    print $i;
    $i =~ s/^((?:[0-9\.\-]+ *){12}) ([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+)/"$1 ".int($2*$faktor+.5)." ".int($3*$faktor+.5)." ".($4==18?18:int($4*$faktor+.5))." ".($5==18?18:int($5*$faktor+.5))." ".int($6*$faktor+.5)." ".int($7*$faktor+.5)." ".int($8*$faktor+.5)." ".int($9*$faktor+.5)/e;
    print $i; 
  }
  elsif ($i =~ /^5 /) {
    # skaliere die Koordinaten eines Bogens
#    print $i;
    $i =~ s/^((?:[0-9\.\-]+ *){14}) ([0-9\.]+) ([0-9\.]+) ([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+)/"$1 ".($2*$faktor)." ".($3*$faktor)." ".int($4*$faktor+.5)." ".int($5*$faktor+.5)." ".int($6*$faktor+.5)." ".int($7*$faktor+.5)." ".int($8*$faktor+.5)." ".int($9*$faktor+.5)/e;
    print $i;
  }
  elsif ($i =~ /^6 /) {
    # skaliere die Koordinaten eines Verbundobjekts
#    print $i;
    $i =~ s/^6 ([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+)/"6 ".int($1*$faktor+.5)." ".int($2*$faktor+.5)." ".int($3*$faktor+.5)." ".int($4*$faktor+.5)/e;
    print $i; 
  }
  elsif ($i =~ /^3 /) {
    # skaliere die Koordinaten der Punkte eines Splines
    print $i;
    $i = <STDIN>;
#    print $i;
    $i =~ s/[0-9]+/int($&*$faktor+.5)/eg;
    print $i;
    $i = <STDIN>;
    print $i;
  }
  else {
    print $i;
  }
}
