From 0cc3ebb92220a34cda5915e4b4bfa59eae54307a Mon Sep 17 00:00:00 2001 From: ian Date: Tue, 14 Jun 2005 19:43:07 +0000 Subject: [PATCH] read binary --- layout/plan-to-gui-data | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/layout/plan-to-gui-data b/layout/plan-to-gui-data index 734a44f..31fd5ee 100755 --- a/layout/plan-to-gui-data +++ b/layout/plan-to-gui-data @@ -21,17 +21,18 @@ sub seteq ($$$) { #---------- word-reading (for pbm) ---------- +our ($txtrdbuf); + sub w () { - our ($lb); - $lb='' if !defined $lb; + $txtrdbuf='' if !defined $txtrdbuf; for (;;) { - if ($lb =~ s/^\s*(\S+)\s*//) { + if ($txtrdbuf =~ s/^\s*(\S+)\s?//) { #print STDERR "w>$1<\n"; return $1; } - $!=0; $lb=<>; - die $! unless length $lb; - $lb='' if $lb =~ m/^\s*\#/; + $!=0; $txtrdbuf=<>; + die $! unless length $txtrdbuf; + $txtrdbuf='' if $txtrdbuf =~ m/^\s*\#/; } } @@ -142,10 +143,12 @@ sub xpm_sizes () { } } -w() eq 'P3' or die; +w() eq 'P6' or die; ($sz{X},$sz{Y})=wns(1,32767,2); wn(1,65535)==255 or die; +die if length $txtrdbuf; + xpm_sizes(); #---------- read input pixels ---------- @@ -169,17 +172,22 @@ die "$pp ?" if $xp->{X}{Max} >= 642; } sub in_pixel () { - my ($movfeat,%t,$xpmname,$segname,$datum,$k); - my ($datum_r,$datum_g,$datum_b, $angstr,$bitno); + my ($pbytes); + $!=0; read(ARGV, $pbytes, 3) == 3 or die $!; + if ($pbytes eq "\xff\xff\xff") { + xpmdata_pixel('background','','-'); + return; + } + my ($movfeat,%t,$xpmname,$segname,$datum,$k,$angstr,$bitno); $pp= "$p{X} $p{Y}"; - ($datum_r,$datum_g,$datum_b)= wns(0,255,3); - $datum= $datum_r + ($datum_g<<8) + ($datum_b<<16); + $datum= unpack 'V', $pbytes."\0"; foreach $k (keys %datum_numbits) { $t{$k}= ($datum >> $datum_basebit{$k}) & ((1 << $datum_numbits{$k}) - 1); } - if ($datum == 0xffffffff or $t{Edge}) { - xpmdata_pixel('background','','-'); +#printf STDERR "%s 0x%08lx 0x%x\n",$pp,$datum,$t{Segnum}; + if ($t{Edge}) { + xpmdata_pixel('background','','+'); return; } elsif (!$t{Segnum}) { xpmdata_pixel('background','','?'); -- 2.30.2