X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/12f5e1e78fe906050ff2fee9529476db332633f0..92c0fc34c104c8d7c12d6a3b78ea232690fc23f4:/interface/wx/zstream.h diff --git a/interface/wx/zstream.h b/interface/wx/zstream.h index f3b2cf144d..8319f3ae7d 100644 --- a/interface/wx/zstream.h +++ b/interface/wx/zstream.h @@ -2,23 +2,41 @@ // Name: zstream.h // Purpose: interface of wxZlibOutputStream // Author: wxWidgets team -// RCS-ID: $Id$ -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// + +/// Compression level +enum wxZlibCompressionLevels { + wxZ_DEFAULT_COMPRESSION = -1, + wxZ_NO_COMPRESSION = 0, + wxZ_BEST_SPEED = 1, + wxZ_BEST_COMPRESSION = 9 +}; + +/// Flags +enum wxZLibFlags { + wxZLIB_NO_HEADER = 0, //!< raw deflate stream, no header or checksum + wxZLIB_ZLIB = 1, //!< zlib header and checksum + wxZLIB_GZIP = 2, //!< gzip header and checksum, requires zlib 1.2.1+ + wxZLIB_AUTO = 3 //!< autodetect header zlib or gzip +}; + + /** @class wxZlibOutputStream - This stream compresses all data written to it. The compressed output can be - in zlib or gzip format. + 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). - The stream is not seekable, wxOutputStream::SeekO returns - @e wxInvalidOffset. + The stream is not seekable, wxOutputStream::SeekO() returns + ::wxInvalidOffset. @library{wxbase} - @category{streams} + @category{archive,streams} @see wxOutputStream, wxZlibInputStream */ @@ -27,19 +45,25 @@ class wxZlibOutputStream : public wxFilterOutputStream public: //@{ /** - Creates a new write-only compressed stream. @a level means level of - 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). + Creates a new write-only compressed stream. + + @a level means level of 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. + The @a flags wxZLIB_ZLIB and wxZLIB_GZIP specify whether the output data will be in zlib or gzip format. wxZLIB_ZLIB is the default. + If @a flags is wxZLIB_NO_HEADER, then a raw deflate stream is output - 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: + 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 values of the ::wxZlibCompressionLevels and ::wxZLibFlags + enumerations can be used. */ wxZlibOutputStream(wxOutputStream& stream, int level = -1, int flags = wxZLIB_ZLIB); @@ -51,6 +75,19 @@ public: Returns @true if zlib library in use can handle gzip compressed data. */ static bool CanHandleGZip(); + + //@{ + /** + Sets the dictionary to the specified chunk of data. This can improve + compression rate but note that the dictionary has to be the same when + you deflate the data as when you inflate the data, otherwise you + will inflate corrupted data. + + Returns @true if the dictionary was successfully set. + */ + bool SetDictionary(const char *data, const size_t datalen); + bool SetDictionary(const wxMemoryBuffer &buf); + //@} }; @@ -62,12 +99,11 @@ public: Note that reading the gzip format requires zlib version 1.2.1 or greater, (the builtin version does support gzip format). - The stream is not seekable, wxInputStream::SeekI returns - @e wxInvalidOffset. Also wxStreamBase::GetSize is - not supported, it always returns 0. + The stream is not seekable, wxInputStream::SeekI returns ::wxInvalidOffset. + Also wxStreamBase::GetSize() is not supported, it always returns 0. @library{wxbase} - @category{streams} + @category{archive,streams} @see wxInputStream, wxZlibOutputStream. */ @@ -78,28 +114,38 @@ 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. + The @a flags wxZLIB_ZLIB and wxZLIB_GZIP specify whether the input data is in zlib or gzip format. If wxZLIB_AUTO is used, then zlib will autodetect the stream type, this is the default. + If @a flags is wxZLIB_NO_HEADER, then the data is assumed to be a raw 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: + + The values of the ::wxZLibFlags enumeration can be used. */ wxZlibInputStream(wxInputStream& stream, int flags = wxZLIB_AUTO); - wxZlibInputStream(wxInputStream* stream, - int flags = wxZLIB_AUTO); + wxZlibInputStream(wxInputStream* stream, int flags = wxZLIB_AUTO); //@} /** Returns @true if zlib library in use can handle gzip compressed data. */ static bool CanHandleGZip(); + + //@{ + /** + Sets the dictionary to the specified chunk of data. This can improve + compression rate but note that the dictionary has to be the same when + you deflate the data as when you inflate the data, otherwise you + will inflate corrupted data. + + Returns @true if the dictionary was successfully set. + */ + bool SetDictionary(const char *data, const size_t datalen); + bool SetDictionary(const wxMemoryBuffer &buf); + //@} };