Quickie perl script to scale a symbol or schematic.  Lightly tested,
probably not as robust as it could be, tossed out in case anyone needs
it.  Me, I need to scale a title-C to 40% or so bigger (no, a title-D
is a different aspect ratio, a problem you don't have with metric page
sizes).

#!/usr/bin/perl
# -*- perl -*-
# Copyright 2006 DJ Delorie, licenced under GPL v2

$scale = shift;
exit 1 if $scale <= 0;

@syntax = ("L 1 1 1 1 0 1 0 0 1 1",
           "G 1 1 1 1 0 0 0 0",
           "B 1 1 1 1 0 1 0 0 1 1 0 1 0 1 0 1",
           "V 1 1 1 0 1 0 0 1 1 0 1 0 1 0 1",
           "A 1 1 1 0 0 0 1 0 0 1 1",
           "T 1 1 0 1 0 0 0 0 0",
           "N 1 1 1 1 0",
           "U 1 1 1 1 0 0",
           "P 1 1 1 1 0 0 0",
           "C 1 1 0 0 0 0",
           "F 0 1 0",
           );

for $s (@syntax) {
    ($type, @args) = split(' ', $s);
    for ($a=0; $a<@args; $a++) {
        $syntax{$type}[$a] = $args[$a];
    }
}

@in = <>;

for ($i=0; $i<@in; $i++) {
    $in[$i] =~ s/[\r\n]+$//;
    ($type, @args) = split(' ', $in[$i]);

    if ($syntax{$type}) {
        for ($a=0; $a<@args; $a++) {
            if ($syntax{$type}[$a]) {
                $args[$a] = int($args[$a] * $scale);
            }
        }
        print join(' ', $type, @args), "\n";
    } else {
        print $in[$i], "\n";
    }

    if ($type eq "T") {
        $text = $args[8];
        for ($t=0; $t<$text; $t++) {
            $i ++;
            print $in[$i];
        }
    }
}

Reply via email to