1package SWF::BinStream::Codec::Zlib; 2 3use strict; 4 5$SWF::BinStream::Codec::Zlib::VERSION = "0.01"; 6 7package SWF::BinStream::Codec::Zlib::Read; 8 9use Compress::Zlib; 10use Carp; 11 12sub new { 13 my $z = inflateInit() or croak "Can't create zlib stream"; 14 bless \$z, shift; 15} 16 17 18sub decode { 19 my ($self, $data) = @_; 20 21 my ($out, $status) = $$self->inflate(\$data); 22 defined $out or croak "Zlib raised an error $status"; 23 $out; 24} 25 26sub close { 27} 28 29package SWF::BinStream::Codec::Zlib::Write; 30 31use Compress::Zlib; 32use Carp; 33 34sub new { 35 my $z = deflateInit() or croak "Can't create zlib stream "; 36 bless \$z, shift; 37} 38 39 40sub encode { 41 my ($self, $data) = @_; 42 43 my ($out, $status) = $$self->deflate(\$data); 44 defined $out or croak "Zlib raised an error $status (wm)"; 45 $out; 46} 47 48sub close { 49 my ($self, $data) = @_; 50 my $z = $$self; 51 my ($out, $out1, $status); 52 53 if ($data ne '') { 54 ($out, $status) = $z->deflate(\$data); 55 defined $out or croak "Zlib raised an error $status (wc1)"; 56 } 57 ($out1, $status) = $z->flush; 58 defined $out1 or croak "Zlib raised an error $status (wc2)"; 59 $out .= $out1; 60} 61 621; 63__END__ 64 65=head1 NAME 66 67SWF::BinStream::Codec::Zlib - SWF::BinStream codec to add zlib-compression/decompression. 68 69=head1 SYNOPSIS 70 71 use SWF::BinStream; 72 .. 73 $stream->add_codec('Zlib'); 74 75=head1 DESCRIPTION 76 77This is a module for SWF::BinStream to add zlib-compression/decompression. 78 79=head1 COPYRIGHT 80 81Copyright 2002 Yasuhiro Sasama (ySas), <ysas@nmt.ne.jp> 82 83This library is free software; you can redistribute it 84and/or modify it under the same terms as Perl itself. 85 86=head1 SEE ALSO 87 88L<SWF::BinStream>, L<SWF::BinStream::Codec> 89 90=cut 91 92 93