mirror of
https://github.com/cjcliffe/CubicSDR.git
synced 2024-11-22 03:36:24 -05:00
Updated LodePNG to 20160501 version
This commit is contained in:
parent
ca0102b3aa
commit
ceeb8e25f7
771
external/lodepng/lodepng.cpp
vendored
771
external/lodepng/lodepng.cpp
vendored
File diff suppressed because it is too large
Load Diff
135
external/lodepng/lodepng.h
vendored
135
external/lodepng/lodepng.h
vendored
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
LodePNG version 20141130
|
LodePNG version 20160501
|
||||||
|
|
||||||
Copyright (c) 2005-2014 Lode Vandevenne
|
Copyright (c) 2005-2016 Lode Vandevenne
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
This software is provided 'as-is', without any express or implied
|
||||||
warranty. In no event will the authors be held liable for any damages
|
warranty. In no event will the authors be held liable for any damages
|
||||||
@ -28,12 +28,7 @@ freely, subject to the following restrictions:
|
|||||||
|
|
||||||
#include <string.h> /*for size_t*/
|
#include <string.h> /*for size_t*/
|
||||||
|
|
||||||
#ifdef __cplusplus
|
extern const char* LODEPNG_VERSION_STRING;
|
||||||
#include <vector>
|
|
||||||
#include <string>
|
|
||||||
#endif /*__cplusplus*/
|
|
||||||
|
|
||||||
#define LODEPNG_VERSION_STRING "20141130"
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
The following #defines are used to create code sections. They can be disabled
|
The following #defines are used to create code sections. They can be disabled
|
||||||
@ -41,6 +36,8 @@ to disable code sections, which can give faster compile time and smaller binary.
|
|||||||
The "NO_COMPILE" defines are designed to be used to pass as defines to the
|
The "NO_COMPILE" defines are designed to be used to pass as defines to the
|
||||||
compiler command to disable them without modifying this header, e.g.
|
compiler command to disable them without modifying this header, e.g.
|
||||||
-DLODEPNG_NO_COMPILE_ZLIB for gcc.
|
-DLODEPNG_NO_COMPILE_ZLIB for gcc.
|
||||||
|
In addition to those below, you can also define LODEPNG_NO_COMPILE_CRC to
|
||||||
|
allow implementing a custom lodepng_crc32.
|
||||||
*/
|
*/
|
||||||
/*deflate & zlib. If disabled, you must specify alternative zlib functions in
|
/*deflate & zlib. If disabled, you must specify alternative zlib functions in
|
||||||
the custom_zlib field of the compress and decompress settings*/
|
the custom_zlib field of the compress and decompress settings*/
|
||||||
@ -84,6 +81,11 @@ source files with custom allocators.*/
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef LODEPNG_COMPILE_CPP
|
||||||
|
#include <vector>
|
||||||
|
#include <string>
|
||||||
|
#endif /*LODEPNG_COMPILE_CPP*/
|
||||||
|
|
||||||
#ifdef LODEPNG_COMPILE_PNG
|
#ifdef LODEPNG_COMPILE_PNG
|
||||||
/*The PNG color types (also used for raw).*/
|
/*The PNG color types (also used for raw).*/
|
||||||
typedef enum LodePNGColorType
|
typedef enum LodePNGColorType
|
||||||
@ -213,8 +215,8 @@ Same as the other decode functions, but instead takes a filename as input.
|
|||||||
unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h,
|
unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h,
|
||||||
const std::string& filename,
|
const std::string& filename,
|
||||||
LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8);
|
LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8);
|
||||||
#endif //LODEPNG_COMPILE_DISK
|
#endif /* LODEPNG_COMPILE_DISK */
|
||||||
#endif //LODEPNG_COMPILE_DECODER
|
#endif /* LODEPNG_COMPILE_DECODER */
|
||||||
|
|
||||||
#ifdef LODEPNG_COMPILE_ENCODER
|
#ifdef LODEPNG_COMPILE_ENCODER
|
||||||
/*Same as lodepng_encode_memory, but encodes to an std::vector. colortype
|
/*Same as lodepng_encode_memory, but encodes to an std::vector. colortype
|
||||||
@ -237,9 +239,9 @@ unsigned encode(const std::string& filename,
|
|||||||
unsigned encode(const std::string& filename,
|
unsigned encode(const std::string& filename,
|
||||||
const std::vector<unsigned char>& in, unsigned w, unsigned h,
|
const std::vector<unsigned char>& in, unsigned w, unsigned h,
|
||||||
LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8);
|
LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8);
|
||||||
#endif //LODEPNG_COMPILE_DISK
|
#endif /* LODEPNG_COMPILE_DISK */
|
||||||
#endif //LODEPNG_COMPILE_ENCODER
|
#endif /* LODEPNG_COMPILE_ENCODER */
|
||||||
} //namespace lodepng
|
} /* namespace lodepng */
|
||||||
#endif /*LODEPNG_COMPILE_CPP*/
|
#endif /*LODEPNG_COMPILE_CPP*/
|
||||||
#endif /*LODEPNG_COMPILE_PNG*/
|
#endif /*LODEPNG_COMPILE_PNG*/
|
||||||
|
|
||||||
@ -506,7 +508,7 @@ For 16-bit per channel colors, uses big endian format like PNG does.
|
|||||||
Return value is LodePNG error code
|
Return value is LodePNG error code
|
||||||
*/
|
*/
|
||||||
unsigned lodepng_convert(unsigned char* out, const unsigned char* in,
|
unsigned lodepng_convert(unsigned char* out, const unsigned char* in,
|
||||||
LodePNGColorMode* mode_out, const LodePNGColorMode* mode_in,
|
const LodePNGColorMode* mode_out, const LodePNGColorMode* mode_in,
|
||||||
unsigned w, unsigned h);
|
unsigned w, unsigned h);
|
||||||
|
|
||||||
#ifdef LODEPNG_COMPILE_DECODER
|
#ifdef LODEPNG_COMPILE_DECODER
|
||||||
@ -538,7 +540,7 @@ typedef enum LodePNGFilterStrategy
|
|||||||
{
|
{
|
||||||
/*every filter at zero*/
|
/*every filter at zero*/
|
||||||
LFS_ZERO,
|
LFS_ZERO,
|
||||||
/*Use filter that gives minumum sum, as described in the official PNG filter heuristic.*/
|
/*Use filter that gives minimum sum, as described in the official PNG filter heuristic.*/
|
||||||
LFS_MINSUM,
|
LFS_MINSUM,
|
||||||
/*Use the filter type that gives smallest Shannon entropy for this scanline. Depending
|
/*Use the filter type that gives smallest Shannon entropy for this scanline. Depending
|
||||||
on the image, this is better or worse than minsum.*/
|
on the image, this is better or worse than minsum.*/
|
||||||
@ -629,7 +631,7 @@ typedef struct LodePNGState
|
|||||||
LodePNGInfo info_png; /*info of the PNG image obtained after decoding*/
|
LodePNGInfo info_png; /*info of the PNG image obtained after decoding*/
|
||||||
unsigned error;
|
unsigned error;
|
||||||
#ifdef LODEPNG_COMPILE_CPP
|
#ifdef LODEPNG_COMPILE_CPP
|
||||||
//For the lodepng::State subclass.
|
/* For the lodepng::State subclass. */
|
||||||
virtual ~LodePNGState(){}
|
virtual ~LodePNGState(){}
|
||||||
#endif
|
#endif
|
||||||
} LodePNGState;
|
} LodePNGState;
|
||||||
@ -811,7 +813,7 @@ unsigned lodepng_save_file(const unsigned char* buffer, size_t buffersize, const
|
|||||||
#endif /*LODEPNG_COMPILE_DISK*/
|
#endif /*LODEPNG_COMPILE_DISK*/
|
||||||
|
|
||||||
#ifdef LODEPNG_COMPILE_CPP
|
#ifdef LODEPNG_COMPILE_CPP
|
||||||
//The LodePNG C++ wrapper uses std::vectors instead of manually allocated memory buffers.
|
/* The LodePNG C++ wrapper uses std::vectors instead of manually allocated memory buffers. */
|
||||||
namespace lodepng
|
namespace lodepng
|
||||||
{
|
{
|
||||||
#ifdef LODEPNG_COMPILE_PNG
|
#ifdef LODEPNG_COMPILE_PNG
|
||||||
@ -825,7 +827,7 @@ class State : public LodePNGState
|
|||||||
};
|
};
|
||||||
|
|
||||||
#ifdef LODEPNG_COMPILE_DECODER
|
#ifdef LODEPNG_COMPILE_DECODER
|
||||||
//Same as other lodepng::decode, but using a State for more settings and information.
|
/* Same as other lodepng::decode, but using a State for more settings and information. */
|
||||||
unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h,
|
unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h,
|
||||||
State& state,
|
State& state,
|
||||||
const unsigned char* in, size_t insize);
|
const unsigned char* in, size_t insize);
|
||||||
@ -835,7 +837,7 @@ unsigned decode(std::vector<unsigned char>& out, unsigned& w, unsigned& h,
|
|||||||
#endif /*LODEPNG_COMPILE_DECODER*/
|
#endif /*LODEPNG_COMPILE_DECODER*/
|
||||||
|
|
||||||
#ifdef LODEPNG_COMPILE_ENCODER
|
#ifdef LODEPNG_COMPILE_ENCODER
|
||||||
//Same as other lodepng::encode, but using a State for more settings and information.
|
/* Same as other lodepng::encode, but using a State for more settings and information. */
|
||||||
unsigned encode(std::vector<unsigned char>& out,
|
unsigned encode(std::vector<unsigned char>& out,
|
||||||
const unsigned char* in, unsigned w, unsigned h,
|
const unsigned char* in, unsigned w, unsigned h,
|
||||||
State& state);
|
State& state);
|
||||||
@ -846,47 +848,47 @@ unsigned encode(std::vector<unsigned char>& out,
|
|||||||
|
|
||||||
#ifdef LODEPNG_COMPILE_DISK
|
#ifdef LODEPNG_COMPILE_DISK
|
||||||
/*
|
/*
|
||||||
Load a file from disk into an std::vector. If the vector is empty, then either
|
Load a file from disk into an std::vector.
|
||||||
the file doesn't exist or is an empty file.
|
return value: error code (0 means ok)
|
||||||
*/
|
*/
|
||||||
void load_file(std::vector<unsigned char>& buffer, const std::string& filename);
|
unsigned load_file(std::vector<unsigned char>& buffer, const std::string& filename);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Save the binary data in an std::vector to a file on disk. The file is overwritten
|
Save the binary data in an std::vector to a file on disk. The file is overwritten
|
||||||
without warning.
|
without warning.
|
||||||
*/
|
*/
|
||||||
void save_file(const std::vector<unsigned char>& buffer, const std::string& filename);
|
unsigned save_file(const std::vector<unsigned char>& buffer, const std::string& filename);
|
||||||
#endif //LODEPNG_COMPILE_DISK
|
#endif /* LODEPNG_COMPILE_DISK */
|
||||||
#endif //LODEPNG_COMPILE_PNG
|
#endif /* LODEPNG_COMPILE_PNG */
|
||||||
|
|
||||||
#ifdef LODEPNG_COMPILE_ZLIB
|
#ifdef LODEPNG_COMPILE_ZLIB
|
||||||
#ifdef LODEPNG_COMPILE_DECODER
|
#ifdef LODEPNG_COMPILE_DECODER
|
||||||
//Zlib-decompress an unsigned char buffer
|
/* Zlib-decompress an unsigned char buffer */
|
||||||
unsigned decompress(std::vector<unsigned char>& out, const unsigned char* in, size_t insize,
|
unsigned decompress(std::vector<unsigned char>& out, const unsigned char* in, size_t insize,
|
||||||
const LodePNGDecompressSettings& settings = lodepng_default_decompress_settings);
|
const LodePNGDecompressSettings& settings = lodepng_default_decompress_settings);
|
||||||
|
|
||||||
//Zlib-decompress an std::vector
|
/* Zlib-decompress an std::vector */
|
||||||
unsigned decompress(std::vector<unsigned char>& out, const std::vector<unsigned char>& in,
|
unsigned decompress(std::vector<unsigned char>& out, const std::vector<unsigned char>& in,
|
||||||
const LodePNGDecompressSettings& settings = lodepng_default_decompress_settings);
|
const LodePNGDecompressSettings& settings = lodepng_default_decompress_settings);
|
||||||
#endif //LODEPNG_COMPILE_DECODER
|
#endif /* LODEPNG_COMPILE_DECODER */
|
||||||
|
|
||||||
#ifdef LODEPNG_COMPILE_ENCODER
|
#ifdef LODEPNG_COMPILE_ENCODER
|
||||||
//Zlib-compress an unsigned char buffer
|
/* Zlib-compress an unsigned char buffer */
|
||||||
unsigned compress(std::vector<unsigned char>& out, const unsigned char* in, size_t insize,
|
unsigned compress(std::vector<unsigned char>& out, const unsigned char* in, size_t insize,
|
||||||
const LodePNGCompressSettings& settings = lodepng_default_compress_settings);
|
const LodePNGCompressSettings& settings = lodepng_default_compress_settings);
|
||||||
|
|
||||||
//Zlib-compress an std::vector
|
/* Zlib-compress an std::vector */
|
||||||
unsigned compress(std::vector<unsigned char>& out, const std::vector<unsigned char>& in,
|
unsigned compress(std::vector<unsigned char>& out, const std::vector<unsigned char>& in,
|
||||||
const LodePNGCompressSettings& settings = lodepng_default_compress_settings);
|
const LodePNGCompressSettings& settings = lodepng_default_compress_settings);
|
||||||
#endif //LODEPNG_COMPILE_ENCODER
|
#endif /* LODEPNG_COMPILE_ENCODER */
|
||||||
#endif //LODEPNG_COMPILE_ZLIB
|
#endif /* LODEPNG_COMPILE_ZLIB */
|
||||||
} //namespace lodepng
|
} /* namespace lodepng */
|
||||||
#endif /*LODEPNG_COMPILE_CPP*/
|
#endif /*LODEPNG_COMPILE_CPP*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
TODO:
|
TODO:
|
||||||
[.] test if there are no memory leaks or security exploits - done a lot but needs to be checked often
|
[.] test if there are no memory leaks or security exploits - done a lot but needs to be checked often
|
||||||
[.] check compatibility with vareous compilers - done but needs to be redone for every newer version
|
[.] check compatibility with various compilers - done but needs to be redone for every newer version
|
||||||
[X] converting color to 16-bit per channel types
|
[X] converting color to 16-bit per channel types
|
||||||
[ ] read all public PNG chunk types (but never let the color profile and gamma ones touch RGB values)
|
[ ] read all public PNG chunk types (but never let the color profile and gamma ones touch RGB values)
|
||||||
[ ] make sure encoder generates no chunks with size > (2^31)-1
|
[ ] make sure encoder generates no chunks with size > (2^31)-1
|
||||||
@ -894,8 +896,9 @@ TODO:
|
|||||||
[X] let the "isFullyOpaque" function check color keys and transparent palettes too
|
[X] let the "isFullyOpaque" function check color keys and transparent palettes too
|
||||||
[X] better name for the variables "codes", "codesD", "codelengthcodes", "clcl" and "lldl"
|
[X] better name for the variables "codes", "codesD", "codelengthcodes", "clcl" and "lldl"
|
||||||
[ ] don't stop decoding on errors like 69, 57, 58 (make warnings)
|
[ ] don't stop decoding on errors like 69, 57, 58 (make warnings)
|
||||||
[ ] make option to choose if the raw image with non multiple of 8 bits per scanline should have padding bits or not
|
|
||||||
[ ] let the C++ wrapper catch exceptions coming from the standard library and return LodePNG error codes
|
[ ] let the C++ wrapper catch exceptions coming from the standard library and return LodePNG error codes
|
||||||
|
[ ] allow user to provide custom color conversion functions, e.g. for premultiplied alpha, padding bits or not, ...
|
||||||
|
[ ] allow user to give data (void*) to custom allocator
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#endif /*LODEPNG_H inclusion guard*/
|
#endif /*LODEPNG_H inclusion guard*/
|
||||||
@ -925,8 +928,9 @@ LodePNG Documentation
|
|||||||
10. examples
|
10. examples
|
||||||
10.1. decoder C++ example
|
10.1. decoder C++ example
|
||||||
10.2. decoder C example
|
10.2. decoder C example
|
||||||
11. changes
|
11. state settings reference
|
||||||
12. contact information
|
12. changes
|
||||||
|
13. contact information
|
||||||
|
|
||||||
|
|
||||||
1. about
|
1. about
|
||||||
@ -1552,8 +1556,49 @@ int main(int argc, char *argv[])
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
11. state settings reference
|
||||||
|
----------------------------
|
||||||
|
|
||||||
11. changes
|
A quick reference of some settings to set on the LodePNGState
|
||||||
|
|
||||||
|
For decoding:
|
||||||
|
|
||||||
|
state.decoder.zlibsettings.ignore_adler32: ignore ADLER32 checksums
|
||||||
|
state.decoder.zlibsettings.custom_...: use custom inflate function
|
||||||
|
state.decoder.ignore_crc: ignore CRC checksums
|
||||||
|
state.decoder.color_convert: convert internal PNG color to chosen one
|
||||||
|
state.decoder.read_text_chunks: whether to read in text metadata chunks
|
||||||
|
state.decoder.remember_unknown_chunks: whether to read in unknown chunks
|
||||||
|
state.info_raw.colortype: desired color type for decoded image
|
||||||
|
state.info_raw.bitdepth: desired bit depth for decoded image
|
||||||
|
state.info_raw....: more color settings, see struct LodePNGColorMode
|
||||||
|
state.info_png....: no settings for decoder but ouput, see struct LodePNGInfo
|
||||||
|
|
||||||
|
For encoding:
|
||||||
|
|
||||||
|
state.encoder.zlibsettings.btype: disable compression by setting it to 0
|
||||||
|
state.encoder.zlibsettings.use_lz77: use LZ77 in compression
|
||||||
|
state.encoder.zlibsettings.windowsize: tweak LZ77 windowsize
|
||||||
|
state.encoder.zlibsettings.minmatch: tweak min LZ77 length to match
|
||||||
|
state.encoder.zlibsettings.nicematch: tweak LZ77 match where to stop searching
|
||||||
|
state.encoder.zlibsettings.lazymatching: try one more LZ77 matching
|
||||||
|
state.encoder.zlibsettings.custom_...: use custom deflate function
|
||||||
|
state.encoder.auto_convert: choose optimal PNG color type, if 0 uses info_png
|
||||||
|
state.encoder.filter_palette_zero: PNG filter strategy for palette
|
||||||
|
state.encoder.filter_strategy: PNG filter strategy to encode with
|
||||||
|
state.encoder.force_palette: add palette even if not encoding to one
|
||||||
|
state.encoder.add_id: add LodePNG identifier and version as a text chunk
|
||||||
|
state.encoder.text_compression: use compressed text chunks for metadata
|
||||||
|
state.info_raw.colortype: color type of raw input image you provide
|
||||||
|
state.info_raw.bitdepth: bit depth of raw input image you provide
|
||||||
|
state.info_raw: more color settings, see struct LodePNGColorMode
|
||||||
|
state.info_png.color.colortype: desired color type if auto_convert is false
|
||||||
|
state.info_png.color.bitdepth: desired bit depth if auto_convert is false
|
||||||
|
state.info_png.color....: more color settings, see struct LodePNGColorMode
|
||||||
|
state.info_png....: more PNG related settings, see struct LodePNGInfo
|
||||||
|
|
||||||
|
|
||||||
|
12. changes
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
The version number of LodePNG is the date of the change given in the format
|
The version number of LodePNG is the date of the change given in the format
|
||||||
@ -1562,6 +1607,12 @@ yyyymmdd.
|
|||||||
Some changes aren't backwards compatible. Those are indicated with a (!)
|
Some changes aren't backwards compatible. Those are indicated with a (!)
|
||||||
symbol.
|
symbol.
|
||||||
|
|
||||||
|
*) 18 apr 2016: Changed qsort to custom stable sort (for platforms w/o qsort).
|
||||||
|
*) 09 apr 2016: Fixed colorkey usage detection, and better file loading (within
|
||||||
|
the limits of pure C90).
|
||||||
|
*) 08 dec 2015: Made load_file function return error if file can't be opened.
|
||||||
|
*) 24 okt 2015: Bugfix with decoding to palette output.
|
||||||
|
*) 18 apr 2015: Boundary PM instead of just package-merge for faster encoding.
|
||||||
*) 23 aug 2014: Reduced needless memory usage of decoder.
|
*) 23 aug 2014: Reduced needless memory usage of decoder.
|
||||||
*) 28 jun 2014: Removed fix_png setting, always support palette OOB for
|
*) 28 jun 2014: Removed fix_png setting, always support palette OOB for
|
||||||
simplicity. Made ColorProfile public.
|
simplicity. Made ColorProfile public.
|
||||||
@ -1586,7 +1637,7 @@ symbol.
|
|||||||
*) 22 apr 2012 (!): Made interface more consistent, renaming a lot. Removed
|
*) 22 apr 2012 (!): Made interface more consistent, renaming a lot. Removed
|
||||||
redundant C++ codec classes. Reduced amount of structs. Everything changed,
|
redundant C++ codec classes. Reduced amount of structs. Everything changed,
|
||||||
but it is cleaner now imho and functionality remains the same. Also fixed
|
but it is cleaner now imho and functionality remains the same. Also fixed
|
||||||
several bugs and shrinked the implementation code. Made new samples.
|
several bugs and shrunk the implementation code. Made new samples.
|
||||||
*) 6 nov 2011 (!): By default, the encoder now automatically chooses the best
|
*) 6 nov 2011 (!): By default, the encoder now automatically chooses the best
|
||||||
PNG color model and bit depth, based on the amount and type of colors of the
|
PNG color model and bit depth, based on the amount and type of colors of the
|
||||||
raw image. For this, autoLeaveOutAlphaChannel replaced by auto_choose_color.
|
raw image. For this, autoLeaveOutAlphaChannel replaced by auto_choose_color.
|
||||||
@ -1621,7 +1672,7 @@ symbol.
|
|||||||
*) 20 jan 2008: support for unknown chunks allowing using LodePNG for an editor.
|
*) 20 jan 2008: support for unknown chunks allowing using LodePNG for an editor.
|
||||||
*) 18 jan 2008: support for tIME and pHYs chunks added to encoder and decoder.
|
*) 18 jan 2008: support for tIME and pHYs chunks added to encoder and decoder.
|
||||||
*) 17 jan 2008: ability to encode and decode compressed zTXt chunks added
|
*) 17 jan 2008: ability to encode and decode compressed zTXt chunks added
|
||||||
Also vareous fixes, such as in the deflate and the padding bits code.
|
Also various fixes, such as in the deflate and the padding bits code.
|
||||||
*) 13 jan 2008: Added ability to encode Adam7-interlaced images. Improved
|
*) 13 jan 2008: Added ability to encode Adam7-interlaced images. Improved
|
||||||
filtering code of encoder.
|
filtering code of encoder.
|
||||||
*) 07 jan 2008: (!) changed LodePNG to use ISO C90 instead of C++. A
|
*) 07 jan 2008: (!) changed LodePNG to use ISO C90 instead of C++. A
|
||||||
@ -1692,7 +1743,7 @@ symbol.
|
|||||||
*) 12 aug 2005: Initial release (C++, decoder only)
|
*) 12 aug 2005: Initial release (C++, decoder only)
|
||||||
|
|
||||||
|
|
||||||
12. contact information
|
13. contact information
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
Feel free to contact me with suggestions, problems, comments, ... concerning
|
Feel free to contact me with suggestions, problems, comments, ... concerning
|
||||||
@ -1704,5 +1755,5 @@ Domain: gmail dot com.
|
|||||||
Account: lode dot vandevenne.
|
Account: lode dot vandevenne.
|
||||||
|
|
||||||
|
|
||||||
Copyright (c) 2005-2014 Lode Vandevenne
|
Copyright (c) 2005-2016 Lode Vandevenne
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user