2008-03-08 13:52:38 +00:00
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// Name: zstream.h
|
2008-03-10 15:24:38 +00:00
|
|
|
// Purpose: interface of wxZlibOutputStream
|
2008-03-08 13:52:38 +00:00
|
|
|
// Author: wxWidgets team
|
|
|
|
// RCS-ID: $Id$
|
|
|
|
// Licence: wxWindows license
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
/**
|
|
|
|
@class wxZlibOutputStream
|
|
|
|
@wxheader{zstream.h}
|
2008-03-08 14:43:31 +00:00
|
|
|
|
2008-03-08 13:52:38 +00:00
|
|
|
This stream compresses all data written to it. The compressed output can be
|
|
|
|
in zlib or gzip format.
|
|
|
|
Note that writing the gzip format requires zlib version 1.2.1 or greater
|
|
|
|
(the builtin version does support gzip format).
|
2008-03-08 14:43:31 +00:00
|
|
|
|
2008-03-08 13:52:38 +00:00
|
|
|
The stream is not seekable, wxOutputStream::SeekO returns
|
|
|
|
@e wxInvalidOffset.
|
2008-03-08 14:43:31 +00:00
|
|
|
|
2008-03-08 13:52:38 +00:00
|
|
|
@library{wxbase}
|
|
|
|
@category{streams}
|
2008-03-08 14:43:31 +00:00
|
|
|
|
2008-03-10 15:24:38 +00:00
|
|
|
@see wxOutputStream, wxZlibInputStream
|
2008-03-08 13:52:38 +00:00
|
|
|
*/
|
|
|
|
class wxZlibOutputStream : public wxFilterOutputStream
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
//@{
|
|
|
|
/**
|
2008-03-09 12:33:59 +00:00
|
|
|
Creates a new write-only compressed stream. @a level means level of
|
2008-03-08 13:52:38 +00:00
|
|
|
compression. It is number between 0 and 9 (including these values) where
|
|
|
|
0 means no compression and 9 best but slowest compression. -1 is default
|
|
|
|
value (currently equivalent to 6).
|
|
|
|
If the parent stream is passed as a pointer then the new filter stream
|
|
|
|
takes ownership of it. If it is passed by reference then it does not.
|
2008-03-09 12:33:59 +00:00
|
|
|
The @a flags wxZLIB_ZLIB and wxZLIB_GZIP specify whether the output data
|
2008-03-08 13:52:38 +00:00
|
|
|
will be in zlib or gzip format. wxZLIB_ZLIB is the default.
|
2008-03-09 12:33:59 +00:00
|
|
|
If @a flags is wxZLIB_NO_HEADER, then a raw deflate stream is output
|
2008-03-08 13:52:38 +00:00
|
|
|
without either zlib or gzip headers. This is a lower level
|
|
|
|
mode, which is not usually used directly. It can be used to embed a raw
|
|
|
|
deflate stream in a higher level protocol.
|
|
|
|
The following symbols can be use for the compression level and flags:
|
|
|
|
*/
|
|
|
|
wxZlibOutputStream(wxOutputStream& stream, int level = -1,
|
|
|
|
int flags = wxZLIB_ZLIB);
|
2008-03-08 14:43:31 +00:00
|
|
|
wxZlibOutputStream(wxOutputStream* stream, int level = -1,
|
|
|
|
int flags = wxZLIB_ZLIB);
|
2008-03-08 13:52:38 +00:00
|
|
|
//@}
|
|
|
|
|
|
|
|
/**
|
|
|
|
Returns @true if zlib library in use can handle gzip compressed data.
|
|
|
|
*/
|
|
|
|
static bool CanHandleGZip();
|
|
|
|
};
|
|
|
|
|
|
|
|
|
2008-03-10 15:24:38 +00:00
|
|
|
|
2008-03-08 13:52:38 +00:00
|
|
|
/**
|
|
|
|
@class wxZlibInputStream
|
|
|
|
@wxheader{zstream.h}
|
2008-03-08 14:43:31 +00:00
|
|
|
|
2008-03-08 13:52:38 +00:00
|
|
|
This filter stream decompresses a stream that is in zlib or gzip format.
|
|
|
|
Note that reading the gzip format requires zlib version 1.2.1 or greater,
|
|
|
|
(the builtin version does support gzip format).
|
2008-03-08 14:43:31 +00:00
|
|
|
|
2008-03-08 13:52:38 +00:00
|
|
|
The stream is not seekable, wxInputStream::SeekI returns
|
|
|
|
@e wxInvalidOffset. Also wxStreamBase::GetSize is
|
|
|
|
not supported, it always returns 0.
|
2008-03-08 14:43:31 +00:00
|
|
|
|
2008-03-08 13:52:38 +00:00
|
|
|
@library{wxbase}
|
|
|
|
@category{streams}
|
2008-03-08 14:43:31 +00:00
|
|
|
|
2008-03-10 15:24:38 +00:00
|
|
|
@see wxInputStream, wxZlibOutputStream.
|
2008-03-08 13:52:38 +00:00
|
|
|
*/
|
|
|
|
class wxZlibInputStream : public wxFilterInputStream
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
//@{
|
|
|
|
/**
|
|
|
|
If the parent stream is passed as a pointer then the new filter stream
|
|
|
|
takes ownership of it. If it is passed by reference then it does not.
|
2008-03-09 12:33:59 +00:00
|
|
|
The @a flags wxZLIB_ZLIB and wxZLIB_GZIP specify whether the input data
|
2008-03-08 13:52:38 +00:00
|
|
|
is in zlib or gzip format. If wxZLIB_AUTO is used, then zlib will
|
|
|
|
autodetect the stream type, this is the default.
|
2008-03-09 12:33:59 +00:00
|
|
|
If @a flags is wxZLIB_NO_HEADER, then the data is assumed to be a raw
|
2008-03-08 13:52:38 +00:00
|
|
|
deflate stream without either zlib or gzip headers. This is a lower level
|
|
|
|
mode, which is not usually used directly. It can be used to read a raw
|
|
|
|
deflate stream embedded in a higher level protocol.
|
|
|
|
This version is not by default compatible with the output produced by
|
|
|
|
the version of @e wxZlibOutputStream in wxWidgets 2.4.x. However,
|
|
|
|
there is a compatibility mode, which is switched on by passing
|
|
|
|
wxZLIB_24COMPATIBLE for flags. Note that in when operating in compatibility
|
|
|
|
mode error checking is very much reduced.
|
|
|
|
The following symbols can be use for the flags:
|
|
|
|
*/
|
|
|
|
wxZlibInputStream(wxInputStream& stream, int flags = wxZLIB_AUTO);
|
2008-03-08 14:43:31 +00:00
|
|
|
wxZlibInputStream(wxInputStream* stream,
|
|
|
|
int flags = wxZLIB_AUTO);
|
2008-03-08 13:52:38 +00:00
|
|
|
//@}
|
|
|
|
|
|
|
|
/**
|
|
|
|
Returns @true if zlib library in use can handle gzip compressed data.
|
|
|
|
*/
|
|
|
|
static bool CanHandleGZip();
|
|
|
|
};
|
2008-03-10 15:24:38 +00:00
|
|
|
|