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