3rdParty/boost/1.78.0/libs/gil/RELEASES.md
All notable changes to Boost.GIL project will be documented in this file. The format is based on Keep a Changelog.
any_image from r-value reference to any image (PR #486)kernel_2d (PR #489)image constructor from other image (PR #477)plane_view_t is not a class or namespace name (PR #481)interleaved_view factory using point<std::ptrdiff_t> for dimension (PR #487)numeric/kernel.hpp to make it self-contained (PR #502)Samuel Debionne, Pranam Lashkari, Mateusz Loskot, Debabrata Mandal
image class (PR #457).size() in any_image_view class (PR #456).test/extension/io/ sub-tree and targets in related Jamfile-s.BOOST_GIL_ prefix (PR #411).BOOST_GIL_ prefix (PR #419).extension/dynamic_image/reduce.hpp as unused and possibly unfinished (PR #466). An implementation attempt of techniques described in the paper Efficient Run-Time Dispatching in Generic Programming with Minimal Code Bloat by Lubomir Bourdev, Jaakko Jarvi.BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES and BOOST_GIL_IO_TEST_ALLOW_WRITING_IMAGES. Instead, if a test target is built, it builds all its test cases unconditionally.longjmp interaction during destruction of I/O extension objects (PR #433).image class (PR #429).Samuel Debionne, Thiago Henrique Hüpner, Pranam Lashkari, Mateusz Loskot, Debabrata Mandal, Olzhas Zhumabek
kernel_2d and kernel_2d_fixed, in Numeric extension (PR #361).convolve_2d (PR #367).cached_location_t (PR #287).convolve_1d in Numeric extension for convenient use of convolve_rows and convolve_cols (PR #347 and PR #367).extend_boundary in Numeric extension to perform image boundary extension (PR #386).RELEASES.md (PR #404).test/ directory (PR #302).include/boost/gil/version.hpp file as unused (PR #403).std::is_trivially_default_constructible specializations (PR #284).Samuel Debionne, Tyler Deuty, Jean-David Gadina, Jan Houska, Pranam Lashkari, Mateusz Loskot, Stefan Seefeld, Miral Shah, Olzhas Zhumabek
boost/gil/concepts.hpp into multiple boost/gil/concepts/*.hpp headers (PR #169).boost::enable_if with std::enable_if (PR #215).any_image with Boost.Variant (PR #231).test/legacy/ (PR #239).std::unary_function and std::binary_function (PR #191).BOOST_STATIC_CONSTANT (PR #211).::value convention (PR #262).Samuel Debionne, Mateusz Loskot, Nikita Kniazev, Stefan Seefeld
#include <boost/gil/...> structure (PR #145).include/boost/gil_all.hpp file as deprecated (PR #145).include/boost/gil_concepts.hpp file as deprecated (PR #145).include/boost/gil_config.hpp file as unnecessary (PR #144).point<T> divide and multiply to not to hardcode result as point<double> (PR #157).std::fill_n and boost::range::fill_n (PR #152).for_each_pixel (PR #139).axis_iterator (PR #129).Mateusz Loskot, Marcel Metz, Stefan Seefeld
include/boost/gil.hpp header.Niklas Angare, Jan Beich, Edward Diener, Peter Dimov, Daniela Engert, Bill Gallafent, Christian Henning, Daniel James, Nikita Kniazev, Mateusz Loskot, Marcel Metz, Martin Osborne, Antony Polukhin, Stefan Seefeld
Lubomir Bourdev, Marshall Clow, Beman Dawes, Daniela Engert, Bill Gallafent, Doug Gregor, Boris Gubenko, Christian Henning, Michael Jackson, Daniel James, Hailin Jin, Nikita Kniazev, Mateusz Loskot, John Maddock, Marcel Metz, Antony Polukhin, Stefan Seefeld
Lubomir Bourdev, Beman Dawes, Hailin Jin, John Maddock and all the reviewers of the library.
The log of changes prior the first release of GIL as part of Boost was collected from https://stlab.adobe.com/gil/news.html site and linked PDF documents with detailed changes.
color_element_type, color_element_reference_type and color_element_const_reference_type to take ColorBase first for consistency with the other similar metafunctions.interleaved_view_get_raw_data or planar_view_get_raw_data.byte_addressible_step_iterator, byte_addressible_2d_locator, etc.)
except that now they operate on memory units instead of bytes.
A memory unit can currently be either a byte or a bit.byte_to_memunit function required by the MemoryBasedIteratorConcept, which specifies the number of bits per memory unit (either 1 or 8).bit_aligned_pixel_reference, bit_aligned_pixel_iterator.
The memory unit of bit aligned pixel iterators is a bit, i.e. byte_to_unit<bit_aligned_pixel_iterator<T> >::value == 8.value_type of a bit-aligned image is a packed_pixel (new name, see below).
A packed pixel is a pixel that is byte-aligned but whose channels may not be byte aligned.
There is a strong analogy with the way interleaved and planar images are implemented, with packed_pixel corresponding
to pixel, bit_aligned_pixel_reference corresponding to planar_pixel_reference
and bit_aligned_pixel_iterator corresponding to planar_pixel_iterator.bit_aligned_image_type for constructing bit-aligned images.
A bit-aligned image is an image whose pixels may not be byte-aligned (such as an RGB222 image).pixel_value_type for constructing homogenous pixel value from elements.packed_pixel_type for constructing homogenous packed pixel from elements.packed_image_type for constructing packed images with packed pixel as its value_type.heterogeneous_packed_pixel to packed_pixel.ByteAdvancableIteratorConcept to MemoryBasedIteratorConcept.byte_addressable_{step_iterator,2d_locator} to memory_based_{step_iterator,2d_locator}.byte_{advance,advanced,distance,step} to memunit_{advance,advanced,distance,step},locator::row_bytes() to locator::row_size() and locator::pix_bytestep() to locator::pixel_size().packed_channel_reference and packed_dynamic_channel_reference by removing the BitField parameter (it is now computed automatically).channel_convert - it is faster by switching to floating-point math only if necessary.deprecated.hpp - a file that maps many of the deprecated names to current ones.
Including it will help porting your code to GIL 2.0. After porting to GIL 2.0, however,
make sure that your code works when this file is not included.swap function required for reference proxies, since the std::swap default does not do the right thing.iterator_type_from_pixel and view_type_from_pixel to allow creating standard iterators and views associated with a pixel type.scoped_channel_value, a channel adaptor that changes the operational range of a channel. bits32f is defined as a float with range 0.0 to 1.0.packed_channel_value, packed_channel_reference and packed_dynamic_channel_reference which model channels operating on bit ranges.heterogeneous_packed_pixel, a model of a pixel whose channels are bit ranges (e.g. 16-bit RGB pixel in the 565 format).kth_semantic_element_type, kth_semantic_element_reference_type, kth_semantic_element_const_reference_type.const_iterator_type, iterator_is_mutable, is_iterator_adaptor.uninitialized_fill_pixels, uninitialized_copy_pixels and method is_1d_traversable.image, image_view, any_image, any_image_view:get_width(), get_height(), get_dimensions(), num_channels().
Use methods width(), height(), dimensions() instead.PixelBasedConcept, which means they provide the following metafunctions: color_space_type, channel_mapping_type, is_planar, num_channels
and for homogeneous constructs we also have: channel_type.
To get the pixel type or pixel reference/const reference type of an image, image view, locator
and pixel, use member typedefs value_type, reference and const_reference.locator, image, image_view, any_image and any_image_view:dynamic_x_step_t, dynamic_y_step_t, dynamic_xy_step_t and dynamic_xy_step_transposed_t
as member typedefs of locators and image views.
Instead, there are separate concepts HasDynamicXStepTypeConcept, HasDynamicYStepTypeConcept,
HasTransposedTypeConcept which all GIL-provided locators, views and images model.
Those concepts require a metafunction to get the corresponding type.
Analogously, all GIL pixel iterators model HasDynamicXStepTypeConcept.std::numeric_traits<T>::max()).channel_convert support to convert between any of the GIL-provided channel types.
The operation is also consistent - conversion is done as a linear mapping that maps the min/max to the min/max.color_base to homogeneous_color_base and defined it once, not for each color space.
The color base is a first-class concept and allows to model any bundle of color elements.
Work needed to define a new color space has been simplified a lot.
All former pixel-level algorithms and accessors now operate on color bases.
The elements of a color base can be accessed by physical or semantic index or by name (channel names
can no longer be accessed as members of the pixel e.g. my_pixel.gray = 0), use get_color instead).color_convert can operate on heterogeneous pixels with the exception of to/from RGBA.image is no longer templated over the image view. It is now templated over pixel value.cross_vector_image_types and cross_vector_image_view_types, create MPL vector to enumerate types.{copy,equal,fill,for_each,generate,max,min,transform}_channels to static_{copy,equal,fill,for_each,generate,max,min,transform}.channel to at_c, semantic_channel to semantic_at_c, get_nth_channel to dynamic_at_c.planar_{ptr,ref} to planar_pixel_{iterator,reference}.PixelConcept to HomogeneousPixelConcept.HeterogeneousPixelConcept to PixelConcept.pixel_image_iterator to iterator_from_2d.is_contiguous to is_1d_traversable.membased_2d_locator to byte_addressable_2d_locator.resize_clobber_image to image::recreate.core directory as part of Boost integration.pixel_traits. Use nested typedefs value_type, reference and const_reference or metafunctions implementing PixelBasedConcept.pixel_iterator_traits. Use std::iterator_traits, PixelBasedConcept metafunctions or the new metafunctions for pixel iterators.GIL accepted to Boost.
GIL's Boost review was successful and GIL will be part of the Boost libraries. It will most likely first appear in the 1.35 version of Boost. In the future our web page will continue to provide you with the latest improvements to GIL, as we have the flexibility to release more frequently than Boost.