- Enum constants of type
Vector
now can be assigned to variables. - Naming of functions in
dlib.geometry.bezier
is changed.bezier
function is nowbezierCubic
,bezierCurveFunc2D
isbezierVector2
,bezierCurveFunc3D
isbezierVector3
. There are aliases with old names for backward compatibility.
- Fixed loading 16-bit PNG images
- Corrected Bézier function.
No changes since dlib 0.12.0 beta1.
- dlib.core
- New module
dlib.core.ownership
- a Delphi-like object ownership system. Objects are registered to parent object, which automatically deletes them when gets deleted itself. In many cases this can be a convenient trade-off between fully automatic and fully manual memory management. - New module
dlib.core.fiber
- initial fibers implementation (Linux-only for now).
- New module
- dlib.container
- Containers now use Phobos-conforming method names. Old names are still supported via aliases.
DynamicArray
now supports inserting and removing values by arbitrary indices (insertKey
andremoveKey
).~=
operator support forLinkedList
.- Full unittest coverage of
dlib.container.array
. - More unittests for
dlib.container.dict
.
- dlib.image
- New class
UnmanagedAnimatedImage
- GC-free counterpart ofAnimatedImage
. - Breaking change:
dlib.image.tone.contrast
is nowdlib.image.filters.contrast
. dlib.image.fthread
is now based ondlib.core.thread
.
- New class
- dlib.filesystem
- File access rights in
FileStat
. - Nanosecond modification time precision support in
stat
under Posix.
- File access rights in
- dlib.math
- New direct solver (
solve
) indlib.math.linsolve
based on LUP decomposition.
- New direct solver (
- dlib.geometry
- Frustum-sphere intersection test (
intersectsSphere
) fordlib.geometry.frustum
.
- Frustum-sphere intersection test (
- dlib.coding
- Breaking change:
dlib.coding.huffman
is merged withdlib.image.io.jpeg
.
- Breaking change:
- Misc
- Added latest DMD (2.075.1, 2.076.0) and LDC (1.3.0, 1.4.0) to Travis CI config.
- Added
alphaOver
indlib.image.color
- Fixed memory leak in
dlib.image.io.png
- Deprecation fix: use
dlib.math.transformation
everywhere instead ofdlib.math.affine
.
Changes from beta:
- Merged
idct.d
withjpeg.d
, usedlib.math.transformation
indlib.image.transform
- Added
hdrTonemapAverageLuminance
todlib.image.hdri
- Fixed memory leak in HDR decoder
- dlib.core
New
andDelete
indlib.core.memory
are now based on allocators fromdlib.memory
. By defaultMallocator
is used. It is possible to switch global allocator.
- dlib.memory
- Added
GCallocator
, an allocator based on on D's built-in garbage collector.
- Added
- dlib.image
- Full-featured APNG support in
dlib.image.io.png
with dispose and blend operations. Saving animations to APNG is also supported.
- Full-featured APNG support in
- dlib.filesystem
- Added
traverseDir
, GC-free recursive directory scanner.
- Added
- dlib.math
distance
anddistancesqr
overloads for 2D vectors.dlib.math.affine
is now deprecated.dlib.math.transformation
should be used instead.
- dlib.async
- Fixed segfault in event loop.
- Misc
- Removed deprecated
dlib.xml
package.dlib.serialization.xml
should be used instead. - Added latest DMD (2.074.0) and LDC (1.2.0) to Travis CI config.
- A new logo and homepage for the project: https://gecko0307.github.io/dlib.
- Removed deprecated
- Animated images and basic APNG support (unfinished, without dispose and blend operations, saving to APNG is also missing)
- Fixed some bugs in
dlib.text.slicelexer
anddlib.serialization.xml
.dlib.text.lexer.Lexer
is now an alias todlib.text.slicelexer.SliceLexer
- Added latest DMD (2.073.2) and LDC (1.1.0) to Travis CI config.
Changes from beta:
- 64-bit fix in
dlib.network.socket
under Windows - Unittest fix in
dlib.filesystem.local
- Code cleanup, use consistent line endings and indentations everywhere
- EditorConfig support
- dlib now compiles with DMD 2.073.0 and LDC 1.1.0-beta6.
- dlib.async - this new package provides a cross-platform event loop and asynchronous programming capabilities. It can be used to implement asynchronous servers. Under the hood the package is based on different multiplexing APIs: Epoll on Linux, IOCP on Windows, and Kqueue on BSD / OSX
- dlib.memory - new tools and interfaces to generalize memory allocation. There is
Allocator
interface, similar to Phobos'IAllocator
, but simpler. There are also several implementations of this interface:Mallocator
(malloc based allocator) andMmapPool
(block based allocator for Posix systems with mmap/munmap support). - dlib.serialization - a new home for XML (and, hopefully, other markup languages in future).
dlib.xml
is deprecated, but left with public imports for compatibility purpose- XML parser (
dlib.serialization.xml
) is now fully GC-free
- XML parser (
- dlib.network
dlib.network.socket
, a cross-platform socket API. Supports Windows and Posix
- dlib.image
- Breaking change: redesign of
dlib.image.hdri
module. Now it supports manual memory allocation and has its own image factories. Also implemented simple tone mapping tool based on gamma compression to convert HDR images to LDR - Radiance HDR/RGBE format support (only loading for now)
- Breaking change: redesign of
- dlib.container
- New module -
dlib.container.buffer
, an interface for input/output buffers - Fixed some issues in
dlib.container.array
- New module -
- dlib.text
- Improved
SliceLexer
(fixed bug with multicharacter delimiters) - Added
dlib.text.utils.immutableCopy
- Improved
- dlib.math
dlib.math.vector.normal
is nowdlib.math.vector.planeNormal
- Other improvements
- Added latest DMD (2.072.2) to Travis CI config.
Many thanks to Eugene Wissner for implementing dlib.async
, dlib.memory
and dlib.network
.
- Fixed building with DMD 2.071.1
- Added
SliceLexer
indlib.text
- Fixed wrong
opApply
inDynamicArray
andTrie
Changes from beta:
- Bugfix and unittests for
ArrayStream
- Fixed loading of 32-bit BMP with bitfield masks.
- dlib.network
- A new package for networking. So far it contains only one module,
dlib.network.url
- an URL parser
- A new package for networking. So far it contains only one module,
- dlib.image
- 2-dimensional iteration for images. Also there are now
ImageRegion
andImageWindowRange
that simplify writing kernel filters dlib.image.transform
module implements affine transformations for images: translation, rotation and scaling. Transformation with arbitrary 3x3 matrix is also possible- Improved BMP and TGA support: new color modes and RLE8 for BMP, saving BMP and TGA
- Improved
boxBlur
getPixel
andsetPixe
inImage
class are now public
- 2-dimensional iteration for images. Also there are now
- dlib.math
- New
dlib.math.tensor
module implements generic multidimensional array, both with static and dynamic memory allocation
- New
- dlib.container
- Improved
LinkedList
, added range interface. Added unittests forLinkedList
andDynamicArray
- Improved
- dlib.text
UTF8Decoder
andLexer
now support range interface. Added unittests for both
- Other improvements
- Added latest DMD (2.071.0) to Travis CI config, added DUB service files to .gitignore.
Minor bugfix release: saveWav
in dlib.audio.io.wav
now uses Sound
interface instead of GenericSound
class.
Changes from beta:
- Fixed #87
- dlib.audio
dlib.audio
is a new package for audio processing. Supports 8 and 16 bits per sample, arbitrary sample rate and number of channels. Includes generic sound interfaces (in-memory and streamed) and their implementations. Read more here.dlib.audio.synth
implements some basic sound synthesizers (sine wave and white noise)dlib.audio.io.wav
- uncompressed RIFF/WAV encoder and decoder
- dlib.image
- All image filters, arithmetic operations, etc. now support manual memory management
- New chroma key filter based on Euclidean distance (
dlib.image.filters.chromakey.chromaKeyEuclidean
) - New edge detection filter based on morphological gradient (
dlib.image.filters.edgedetect.edgeDetectGradient
) - Several important bugfixes (image convolution, lanczos and bicubic resampling, wrong deallocation of empty JPEGImage)
- dlib.core
- Fixed erroneous deleting uninitialized thread in
dlib.core.thread
- Fixed erroneous deleting uninitialized thread in
- dlib.filesystem
- Implemented missing methods in
dlib.filesystem.stdfs.StdFileSystem
:openForIO
,openDir
,createDir
,remove
. There is a known issue withremove
: it doesn't delete directories under Windows
- Implemented missing methods in
- Other improvements
- Added HTML documentation generator.
Mostly bugfix release.
- Fixed wrong iteration of
dlib.container.dict.Trie
_allocatedMemory
indlib.core.memory
is now marked as__gshared
, thus working correctly withdlib.core.thread
- Fixed wrong behaviour of
nextPowerOfTwo
indlib.math.utils
- Ambiguous
rotation
functions indlib.math.affine
anddlib.math.quaternion
are renamed intorotation2D
androtationQuaternion
, respectively - Added
flatten
method for matrices.
Changes from beta:
- Fixed 64-bit issues
- dlib now compiles with latest LDC
- Continuous integration using Travis-CI: https://travis-ci.org/gecko0307/dlib
- dlib.core
- Added GC-free, Phobos-independent thread module -
dlib.core.thread
- Added GC-free, Phobos-independent thread module -
- dlib.text
- A new package for GC-free text processing. Includes UTF-8 decoder (
dlib.text.utf8
) and general-purpose lexical analyzer (dlib.text.lexer
)
- A new package for GC-free text processing. Includes UTF-8 decoder (
- dlib.xml
- XML parser is now GC-free and based on
dlib.text.lexer
- XML parser is now GC-free and based on
- dlib.container
- Added GC-free LinkedList (
dlib.container.linkedlist
), Stack (dlib.container.stack
), Queue (dlib.container.queue
)
- Added GC-free LinkedList (
- dlib.image
- Fixed segfault with non-transparent indexed PNG loading
- dlib.math
- Fixed error with instancing of vectors with size larger than 4
- Other improvements
- Added Travis-CI support
- Trie-based GC-free dictionary class (
std.container.dict
) - Several performance optimizations in
dlib.math
: vector element access and multiplication for 3x3 and 4x4 matrices are now faster - Fixed some 64-bit issues.
- Fixed
dlib.filesystem.stdfs
compilation under 64-bit systems - Fixed PNG exporter bug with encoding non-compressible images
- Added basic drawing functions (
dlib.image.render.shapes
)
Bugfix release.
- Removed coordinates clamping on pixel write in dlib.image
- Fixed bug with PNG vertical flipping
- Added memory profiler
- Fixed
dlib.math.sse
compilation on 64-bit systems
- dlib.core
- Got rid of ManuallyAllocatable interface in manual memory management for classes. Added support for deleting via interface or parent class. Deleting can be abstractized with Freeable interface
- dlib.filesystem
- Added GC-free implementations for FileSystem and file streams
- dlib.image
- dlib.image.unmanaged provides generalized GC-free Image class with corresponding factory function
- JPEG decoder had been greatly improved, added more subsampling modes support, COM and APPn markers detection. Decoder now understands virtually any imaginable baseline JPEGs, including those from digital cameras
- dlib.math
- New module dlib.math.combinatorics with factorial, hyperfactorial, permutation, combinations, lucas number and other functions
- dlib.math.sse brings x86 SSE-based optimizations for some commonly used vector and matrix operations, namely, 4-vector arythmetics, dot and cross product, 4x4 matrix multiplication.
- dlib.container
- DynamicArray now supports indexing (as a syntactic sugar).
- Added Protobuf-style varint implementation (dlib.coding.varint)
- Streams are now ManuallyAllocatable
- Triangle struct in dlib.geometry.triangle now has tangent vectors
- Fixed unittest build failure (#59)
- Automated vector type conversion (#57), modulo operator for vectors (#58)
- Fixed warning in dlib.image.io.bmp (#56)
Small bugfix release:
- Fixed wrong module name in dlib.geometry.frustum
- Updated license information
- dlib.core
- Added manual memory management support. dlib.core.memory provide memory allocators based on standard C malloc/free. They can allocate arrays, classes and structs
- Added prototype-based OOP system for structs (dlib.core.oop) with support for multiple inheritance and parametric polymorphism
- dlib.image
- Image loaders are now GC-free
- dlib.image.io.zlib and dlib.image.io.huffman modules are moved to new package dlib.coding. dlib.image.io.bitio moved to dlib.core.
- Image allocation is based on a factory interface that abstracts over GC or MMM
- Improved support for indexed PNGs - added alpha channel support
- dlib.container
- Added GC-free dynamic array implementation (dlib.container.array)
- BST and AArray now use manual memory management
- dlib.math
- Quaternion is now based on and interchangeable with Vector via incapsulation
- Dual quaternion support (dlib.math.dualquaternion)
- Fixed incorrect dual number
pow
implementation
- dlib.geometry
- Breaking change: Frustum plane normals are now pointing outside frustum. Also Frustum-AABB intersection API is changed
- Fixed bugs in AABB and Plane
- dlib.image
- Baseline JPEG decoder (dlib.image.io.jpeg)
- dlib.math
- New matrix printer with proper alignment (a la Matlab)
- dlib.filesystem
- Platform-specific modules are now grouped by corresponding packages (dlib.filesystem.windows, dlib.filesystem.posix)
findFiles
is now a free function and can be used with anyReadOnlyFileSystem
- dlib.math
- Implemented LU decomposition for matrices (dlib.math.decomposition)
dlib.math.linear
is nowdlib.math.linsolve
. AddedsolveLU
, a new LU-based direct solver- Matrix inversion now uses LU decomposition by default (4x performance boost compared to old analytic method). 4x4 affine matrices use an optimized inversion, which is about 6 times faster
dlib.math.utils
now usesclamp
from latest Phobos if available- Removed deprecated functionality
- dlib.core:
- Moved container modules (bst, linkedlist, etc) from dlib.core to separate package dlib.container. Removed useless dlib.core.method
- Overall: improved compatibility with DMD 2.067.
Mainly bugfix release. Changes:
- Fixed compilation with DMD 2.066
- Added dlib.geometry.frustum
- Improved dlib.math.quaternion
Bugfix release. The main improvement is fixed compilation with some versions of LDC.
Bugfix release. Changes:
- Improved dlib.image, added interpolated pixel reading
- Added matrix addition and subtraction, tensorProduct now works with any matrix sizes
- Addressed many bugs in dlib.image and dlib.math.
- dlib.core
- Added simple yet robust I/O streams (dlib.core.stream), which are completely Phobos-independent
- dlib.filesystem
- Abstract FS interface and it's implementations for Windows and POSIX filesystems
- dlib.image
- Breaking change: all pixel I/O is now floating-point (via
Color4f
). This gives an opportunity to define image classes of arbitrary floating-point pixel formats and enables straightforward HDRI: sample 32-bit implementation provided in dlib.image.hdri - Pixel iteration now can be done with
row
andcol
ranges - Parallel filtering is now easy with dlib.image.parallel. You can add multithreading to your existing filter code with just a few changes
- Added support for TGA and BMP formats (only loading for now)
- All image format I/O is now stream-based
- Breaking change: all pixel I/O is now floating-point (via
- dlib.math
- Breaking change: matrices in dlib.math.matrix are now column-major
- Imporved constness support in dlib.math.vector, as well as added unittest to the module. Using new string constructor, vectors now can be parsed from strings (e.g.,
"[0, 1, 2]"
)
- Overall improvements & bugfixes
- Much saner DUB support, addressed some serious problems with building, added configuration for pre-compiling as a static library
Bugfix release + added support for DMD 2.064 package modules.
Bugfix release. Fixed issues with compiling on 64-bit systems.
Bugfix release.
- Added XML parser (alpha quality);
- Massive refactoring of the matrix implementation. All matrix types (Matrix2x2f, Matrix3x3f, Matrix4x4f) are now specializations of generic Matrix!(T,N) struct in dlib.math.matrix;
- Updated dlib.math.dual. Vectors of dual numbers can now be created;
- Added support for Hermite curves (dlib.geometry.hermite).
- Renamed ColorRGBA and ColorRGBAf into Color4 and Color4f;
- Added support for image convolution. There are several built-in kernels (Identity, BoxBlur, GaussianBlur, Sharpen, Emboss, EdgeEmboss, EdgeDetect, Laplace);
- Added support for HSV color space;
- Added Chroma Keying and Color Pass filters.
Bugfix release.
Initial release.
Project moved to GitHub.
Early development on code.google.com.
Project started.