mirror of
https://github.com/amiwm/amiwm.git
synced 2026-04-14 11:04:18 +00:00
Initial commit!
This commit is contained in:
66
iconinfo.pl
Executable file
66
iconinfo.pl
Executable file
@@ -0,0 +1,66 @@
|
||||
#!/usr/local/bin/perl
|
||||
|
||||
sub chompstring {
|
||||
my ($len, $rest)=unpack("Na*", $_[0]);
|
||||
return unpack("a".$len."a*", $rest);
|
||||
}
|
||||
|
||||
sub imginfo {
|
||||
my ($left, $top, $width, $height, $depth, $pp, $poo, $rest) =
|
||||
unpack("n5x4CCx4a*", $_[0]);
|
||||
|
||||
print "Image: ${width}x${height}+$left+$top $depth bit\n";
|
||||
|
||||
my $bpr=2*(($width+15)>>4);
|
||||
my $imgsz=$bpr*$height*$depth;
|
||||
|
||||
return substr($rest, $imgsz);
|
||||
}
|
||||
|
||||
|
||||
%itypes=( 1=>disk, 2=>drawer, 3=>tool, 4=>project, 5=>garbage, 6=>device,
|
||||
7=>kick, 8=>appicon );
|
||||
undef $/; $i=<>;
|
||||
|
||||
($magic, $version, $gad, $ty, $deftool, $tts, $x, $y, $drwdata, $toolwin, $stacksize, $rest) =
|
||||
unpack("nna44CxNNNNNNNa*", $i);
|
||||
|
||||
($left, $top, $width, $height, $flags, $activ, $gty, $gid, $gud) =
|
||||
unpack("x4n7x20nN", $gad);
|
||||
|
||||
if($x==0x80000000) { $x="no position"; }
|
||||
if($y==0x80000000) { $y="no position"; }
|
||||
|
||||
printf "Magic: %04x Version: %d Revision: %d Type: $itypes{$ty}\n", $magic, $version, $gud&0xff;
|
||||
print "X=$x, Y=$y, stacksize=$stacksize\n";
|
||||
printf "Gadget: ${width}x${height}+$left+$top flags=%04x, activ=%04x\n", $flags, $activ;
|
||||
|
||||
if($drwdata!=0) {
|
||||
($left, $top, $width, $height, $panx, $pany, $rest) =
|
||||
unpack("n4x40N2a*", $rest);
|
||||
printf "Window: ${width}x${height}+$left+$top(+$panx+$pany)\n";
|
||||
}
|
||||
|
||||
$rest=imginfo($rest);
|
||||
if($flags&2) { $rest=imginfo($rest); }
|
||||
|
||||
if($deftool!=0) {
|
||||
($deftool, $rest)=chompstring($rest);
|
||||
printf "Default tool: $deftool\n";
|
||||
}
|
||||
if($tts) {
|
||||
($arraybytes, $rest)=unpack("Na*", $rest);
|
||||
for(2..$arraybytes>>2) {
|
||||
($tooltype, $rest)=chompstring($rest);
|
||||
print "ToolType: $tooltype\n";
|
||||
}
|
||||
}
|
||||
if($toolwin) {
|
||||
($toolwin, $rest)=chompstring($rest);
|
||||
print "ToolWin: $toolwin\n";
|
||||
}
|
||||
if($drwdata!=0 and $version>0) {
|
||||
($wflags, $vmodes, $rest)=unpack("Nna*", $rest);
|
||||
printf "Window: flags=%08x viewmodes=%04x\n",$wflags,$vmodes;
|
||||
}
|
||||
printf "%d bytes remaining.\n", length($rest);
|
||||
Reference in New Issue
Block a user