[ VIGRA Homepage | Function Index | Class Index | Namespaces | File List | Main Page ]

compression.hxx
1/************************************************************************/
2/* */
3/* Copyright 2013-2014 by Ullrich Koethe */
4/* */
5/* This file is part of the VIGRA computer vision library. */
6/* The VIGRA Website is */
7/* http://hci.iwr.uni-heidelberg.de/vigra/ */
8/* Please direct questions, bug reports, and contributions to */
9/* ullrich.koethe@iwr.uni-heidelberg.de or */
10/* vigra@informatik.uni-hamburg.de */
11/* */
12/* Permission is hereby granted, free of charge, to any person */
13/* obtaining a copy of this software and associated documentation */
14/* files (the "Software"), to deal in the Software without */
15/* restriction, including without limitation the rights to use, */
16/* copy, modify, merge, publish, distribute, sublicense, and/or */
17/* sell copies of the Software, and to permit persons to whom the */
18/* Software is furnished to do so, subject to the following */
19/* conditions: */
20/* */
21/* The above copyright notice and this permission notice shall be */
22/* included in all copies or substantial portions of the */
23/* Software. */
24/* */
25/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND */
26/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES */
27/* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND */
28/* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT */
29/* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, */
30/* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING */
31/* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR */
32/* OTHER DEALINGS IN THE SOFTWARE. */
33/* */
34/************************************************************************/
35
36
37#ifndef VIGRA_COMPRESSION_HXX
38#define VIGRA_COMPRESSION_HXX
39
40#include "config.hxx"
41#include "error.hxx"
42#include "array_vector.hxx"
43#include <vector>
44
45namespace vigra {
46
47enum CompressionMethod { DEFAULT_COMPRESSION=-2, // use default method (depending on context)
48 NO_COMPRESSION=-1, // don't compress
49 ZLIB_NONE=0, // no compression using zlib
50 ZLIB_FAST=1, // fastest compression using zlib
51 ZLIB=6, // zlib default compression level
52 ZLIB_BEST=9, // highest compression using zlib
53 LZ4 // very fast LZ4 algorithm
54 };
55
56/** Compress the source buffer.
57
58 The destination array will be resized as required.
59*/
60VIGRA_EXPORT void compress(char const * source, std::size_t size, ArrayVector<char> & dest, CompressionMethod method);
61VIGRA_EXPORT void compress(char const * source, std::size_t size, std::vector<char> & dest, CompressionMethod method);
62
63/** Uncompress the source buffer when the uncompressed size is known.
64
65 The destination buffer must be allocated to the correct size.
66*/
67VIGRA_EXPORT void uncompress(char const * source, std::size_t srcSize,
68 char * dest, std::size_t destSize, CompressionMethod method);
69
70
71} // namespace vigra
72
73#endif // VIGRA_COMPRESSION_HXX
Class for a single RGB value.
Definition rgbvalue.hxx:128
void uncompress(char const *source, std::size_t srcSize, char *dest, std::size_t destSize, CompressionMethod method)
void compress(char const *source, std::size_t size, ArrayVector< char > &dest, CompressionMethod method)

© Ullrich Köthe (ullrich.koethe@iwr.uni-heidelberg.de)
Heidelberg Collaboratory for Image Processing, University of Heidelberg, Germany

html generated using doxygen and Python
vigra 1.11.2