1 package Imager::File::ICO;
4 use vars qw($VERSION @ISA);
10 XSLoader::load('Imager::File::ICO', $VERSION);
13 Imager->register_reader
18 my ($im, $io, %hsh) = @_;
20 exists $hsh{ico_masked} ? $hsh{ico_masked} : 1;
21 $im->{IMG} = i_readico_single($io, $hsh{page} || 0, $masked);
24 $im->_set_error(Imager->_error_as_msg);
34 exists $hsh{ico_masked} ? $hsh{ico_masked} : 1;
35 my @imgs = i_readico_multi($io, $masked);
37 Imager->_set_error(Imager->_error_as_msg);
41 bless { IMG => $_, DEBUG => $Imager::DEBUG, ERRSTR => undef }, 'Imager'
46 # the readers can read CUR files too
47 Imager->register_reader
52 my ($im, $io, %hsh) = @_;
54 exists $hsh{ico_masked} ? $hsh{ico_masked} : 1;
55 $im->{IMG} = i_readico_single($io, $hsh{page} || 0, $masked);
58 $im->_set_error(Imager->_error_as_msg);
68 exists $hsh{ico_masked} ? $hsh{ico_masked} : 1;
69 my @imgs = i_readico_multi($io, $masked);
71 Imager->_set_error(Imager->_error_as_msg);
75 bless { IMG => $_, DEBUG => $Imager::DEBUG, ERRSTR => undef }, 'Imager'
80 Imager->register_writer
85 my ($im, $io, %hsh) = @_;
87 unless (i_writeico_wiol($io, $im->{IMG})) {
88 $im->_set_error(Imager->_error_as_msg);
95 my ($class, $io, $opts, @images) = @_;
97 if (!i_writeico_multi_wiol($io, map $_->{IMG}, @images)) {
98 Imager->_set_error(Imager->_error_as_msg);
106 Imager->register_writer
111 my ($im, $io, %hsh) = @_;
113 unless (i_writecur_wiol($io, $im->{IMG})) {
114 $im->_set_error(Imager->_error_as_msg);
121 my ($class, $io, $opts, @images) = @_;
123 if (!i_writecur_multi_wiol($io, map $_->{IMG}, @images)) {
124 Imager->_set_error(Imager->_error_as_msg);
138 Imager::File::ICO - read MS Icon files
144 my $img = Imager->new;
145 $img->read(file=>"foo.ico")
148 my @imgs = Imager->read_multi(file => "foo.ico")
149 or die Imager->errstr;
151 $img->write(file => "foo.ico")
154 Imager->write_multi({ file => "foo.ico" }, @imgs)
155 or die Imager->errstr;
159 Imager's MS Icon support is documented in L<Imager::Files>.
163 Tony Cook <tonyc@cpan.org>
167 Imager, Imager::Files.