Stefan Schuermans
initial commit
Stefan Schuermans commited 8c1680e at 2012-10-03 10:15:25
pcb_text2lines.pl
#! /usr/bin/perl
use strict;
my $mode = '';
my $symbol;
my $symbols = {};
my $layer = 0;
while( my $line = <STDIN> ) {
chomp( $line );
chomp( $line );
if( $line =~ /^Symbol\('(.)' ([0-9]+)\)$/ ) {
$mode = 'symbol';
$symbol = {};
$symbol->{CHAR} = $1;
$symbol->{WIDTH} = $2;
$symbol->{LINES};
} elsif( $mode eq 'symbol' && $line =~ /^\($/ ) {
$mode = 'symbol(';
} elsif( $mode eq 'symbol' && $line =~ /^[A-Za-z]/ ) {
$mode = '';
$symbol = undef;
} elsif( $mode eq 'symbol(' && $line =~ /^\)$/ ) {
$mode = '';
$symbols->{$symbol->{CHAR}} = $symbol;
$symbol = undef;
} elsif( $mode eq 'symbol(' && $line =~ /\tSymbolLine\(([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+)\)$/ ) {
my $s_line = {};
$s_line->{X1} = $1;
$s_line->{Y1} = $2;
$s_line->{X2} = $3;
$s_line->{Y2} = $4;
$s_line->{WIDTH} = $5;
push( @{$symbol->{LINES}}, $s_line );
} elsif( $line =~ /^Layer\(([0-9]+) "(.*)"\)$/ ) {
$layer = $1;
} elsif( $line =~ /^\tText\[([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+) "(.*)" "(.*)"\]$/ ) {
my $x = $1;
my $y = $2;
my $angle = $3;
my $size = $4;
my $text = $5;
my $flags = $6;
for( my $i = 0; $i < length( $text ); $i++ ) {
my $chr = substr( $text, $i, 1 );
my $char = $symbols->{$chr};
if( $char ) {
my $width = $char->{WIDTH};
my $x_min = 0;
my $y_min = 0;
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX