# $xpmdata{$style}{$namerhs}{Y}{Max}
# $xpmdata{$style}{$namerhs}{Pixels}{$y}{$x}
# $xpmdata{$style}{$namerhs}{Holey}
-# $xpmdata{$style}{$namerhs}{Partial}
# $xpminstance{$instancename}{Data}= $xpmname
-sub xpmdata_setup ($$$$) {
- my ($style, $namerhs, $holey, $partial)=@_;
+sub xpmdata_setup ($$$) {
+ my ($style, $namerhs, $holey)=@_;
my ($xp,$xy);
die if $xpmdata{$style}{$namerhs};
$xp= $xpmdata{$style}{$namerhs}= {
Holey => $holey,
- Partial => $partial
};
}
# $movfeat_prefix{$xpmname}
# $movfeat_configbits{$xpmname}
-xpmdata_setup('background','',1,0);
+xpmdata_setup('background','',1);
for (;;) {
$!=0; defined($_=<>) or die $!;
$datum_basebit{$1}= $3;
} elsif (m/^S ([0-9A-Z]+) (0x[0-9a-f]+)$/) {
seteq(\$segnum_name[hex $2], $1, "segnum $2");
- xpmdata_setup("bitmap","m_$1",1,1);
- xpmdata_setup("on","_$1",1,1);
- xpmdata_setup("bitmap","e_$1",1,1);
+ xpmdata_setup("bitmap","m_$1",1);
+ xpmdata_setup("on","_$1",1);
+ xpmdata_setup("bitmap","e_$1",1);
} elsif (m/^F ([0-9A-Z]+) (0x[0-9a-f]+) ([A-Z]+) (0x[0-9a-f]+) (\d+)$/) {
my ($xpmname,$bitno,$namerhs);
seteq(\$segnum_name[hex $2], $1, "segnum $2 F $3");
$xpmname= $1.'_'.$3;
$movfeat_prefix{$xpmname}= hex $4;
$movfeat_configbits{$xpmname}= $5;
- xpmdata_setup("on","u_$xpmname",1,1);
- xpmdata_setup("bitmap","m_$xpmname",1,1);
+ xpmdata_setup("on","u_$xpmname",1);
+ xpmdata_setup("bitmap","m_$xpmname",1);
for ($bitno=0; $bitno<$movfeat_configbits{$xpmname}; $bitno++) {
$namerhs= "${xpmname}_${bitno}";
- xpmdata_setup("on","_$namerhs",1,1);
- xpmdata_setup("bitmap","e_$namerhs",1,1);
+ xpmdata_setup("on","_$namerhs",1);
+ xpmdata_setup("bitmap","e_$namerhs",1);
}
}
}
foreach $rr (values %xpmdata) {
foreach $xp (values %$rr) {
foreach $xy (qw(X Y)) {
- if ($xp->{Partial}) {
- $xp->{$xy}{Min}= $sz{$xy}-1;
- $xp->{$xy}{Max}= 0;
- } else {
- $xp->{$xy}{Min}= 0;
- $xp->{$xy}{Max}= $sz{$xy}-1;
- }
+ $xp->{$xy}{Min}= $sz{$xy}-1;
+ $xp->{$xy}{Max}= 0;
}
}
}
#print STDERR " set\n";
}
-sub in_pixel () {
- my ($pbytes, $namerhs);
- $!=0; read(ARGV, $pbytes, 3) == 3 or die $!;
- return if $pbytes eq "\xff\xff\xff";
- my ($movfeat,%t,$xpmname,$segname,$datum,$k,$angstr,$bitno,$me);
+sub in_pixel ($) {
+ my ($pbytes) = @_;
+ my ($namerhs,$movfeat,%t,$xpmname,$segname,$datum,$k,$angstr,$bitno,$me);
$pp= "$ARGV $p{X} $p{Y}";
$datum= unpack 'V', $pbytes."\0";
foreach $k (keys %datum_numbits) {
read_pixmap_header();
$ARGV =~ m/.*\.p([0-9a-f]+)\b/ or die "$ARGV ?";
$p{Movpos}= $1 eq 'f' ? '' : hex($1);
+ my ($pbytes,$x,$xsz);
+ $xsz= $sz{X};
for ($p{Y}=0; $p{Y}<$sz{Y}; $p{Y}++) {
printf STDERR "%s %d\r",$ARGV,$p{Y}
unless $p{Y} % 100;
- for ($p{X}=0; $p{X}<$sz{X}; $p{X}++) {
- in_pixel();
+ for ($x=0; $x<$xsz; $x++) {
+ $!=0; read(ARGV, $pbytes, 3) == 3 or die $!;
+ next if $pbytes eq "\xff\xff\xff";
+ $p{X}= $x;
+ in_pixel($pbytes);
}
}
}
sub xpm_cmap_rgbpermil($@) {
my ($cmapname, @l) = @_;
my ($pixchars, @rgb);
- die "$cmapname @l" if @l % 4;
+ die "$cmapname @l ?" if @l % 4;
while (@l) {
($pixchars, @rgb)= @l[0..3]; @l = @l[4..$#l];
xpm_cmap_entry($cmapname, $pixchars,
sub cmaps_define () {
my ($style,$inv,$ondet);
- my (@background, @off, @otherposn);
+ my (@background, @projected, @off, @otherposn);
@background= qw(100 100 100);
@off= qw(0 0 0);
@otherposn= qw(50 50 50);
+ @projected= qw(75 75 75);
xpm_cmap("background","background");
- xpm_cmap_rgbpermil('', 'off',@off);
xpm_cmap_rgbpermil("background",
' ', @background,
- qw(! 999 0 980
- = 75 75 75));
+ '=', @projected,
+ '!', @off);
+
xpm_cmap("bitmap","bitmap");
xpm_cmap_fixedbitmap("bitmap",'*');
sub ppdr ($$$) {
my ($style,$cmap,$namerhs) = @_;
- my ($xpmd);
+ my ($xpmd, $backgd);
$xpmd= $xpmdata{$style}{$namerhs};
+ $backgd= $xpmdata{'background'}{''};
defined $xpmd or die "$style $cmap $namerhs ?";
- return sprintf("{ %d,%d, p_%s_%s }",
- $xpmd->{X}{Min}, $xpmd->{Y}{Min},
+ return sprintf("{ %d-%d,%d-%d, p_%s_%s }",
+ (map { $xpmd->{$_}{Min}, $backgd->{$_}{Min} } qw(X Y)),
$cmap, $namerhs);
}