- implement reading MS Windows icon files
[imager.git] / ICO / ICO.pm
1 package Imager::File::ICO;
2 use strict;
3 use Imager;
4 use vars qw($VERSION @ISA);
5
6 BEGIN {
7   $VERSION = "0.01";
8   
9   eval {
10     require XSLoader;
11     XSLoader::load('Imager::File::ICO', $VERSION);
12     1;
13   } or do {
14     require DynaLoader;
15     push @ISA, 'DynaLoader';
16     bootstrap Imager::File::ICO $VERSION;
17   };
18 }
19
20 Imager->register_reader
21   (
22    type=>'ico',
23    single => 
24    sub { 
25      my ($im, $io, %hsh) = @_;
26      $im->{IMG} = i_readico_single($io, $hsh{page} || 0);
27
28      unless ($im->{IMG}) {
29        $im->_set_error(Imager->_error_as_msg);
30        return;
31      }
32      return $im;
33    },
34    multiple =>
35    sub {
36      my ($io, %hsh) = @_;
37      
38      my @imgs = i_readico_multi($io);
39      unless (@imgs) {
40        Imager->_set_error(Imager->_error_as_msg);
41        return;
42      }
43      return map { 
44        bless { IMG => $_, DEBUG => $Imager::DEBUG, ERRSTR => undef }, 'Imager'
45      } @imgs;
46    },
47   );
48
49 1;
50
51 __END__
52
53 =head1 NAME
54
55 Imager::File::ICO - read MS Icon files
56
57 =head1 SYNOPSIS
58
59   use Imager;
60
61   my $img = Imager->new;
62   $img->read(file=>"foo.ico")
63     or die $img->errstr;
64
65   my @imgs = Imager->read_multi(file => "foo.ico")
66     or die Imager->errstr;
67
68 =head1 DESCRIPTION
69
70
71
72 =head1 AUTHOR
73
74 =head1 SEE ALSO
75
76 Imager, Imager::Files.
77
78 =cut