]>
Commit | Line | Data |
---|---|---|
92f5a8d4 TL |
1 | # Release Notes |
2 | ||
3 | All notable changes to [Boost.GIL](https://github.com/boostorg/gil/) project will be documented in this file. | |
4 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). | |
5 | ||
6 | ## [Unreleased] | |
7 | ||
8 | ## [1.72.0] - 2019-12-11 | |
9 | ||
10 | ### Added | |
11 | - GSoC 2019: Lanczos resampling for image down scaling ([PR #309](https://github.com/boostorg/gil/pull/309)). | |
12 | - GSoC 2019: Methods for binary thresholding, inverted binary thresholding and truncation thresholding ([PR #313](https://github.com/boostorg/gil/pull/313)). | |
13 | - GSoC 2019: Otsu thresholding method ([PR #314](https://github.com/boostorg/gil/pull/314)). | |
14 | - GSoC 2019: Adaptive thresholding using mean or gaussian-weighted sum of the neighbourhood area ([PR #315](https://github.com/boostorg/gil/pull/315)). | |
15 | - GSoC 2019: Harris response calculation (corner detector without non-maximum filtering) ([PR #350](https://github.com/boostorg/gil/pull/350)). | |
16 | - GSoC 2019: Hessian corner detector ([PR #364](https://github.com/boostorg/gil/pull/364)). | |
17 | - GSoC 2019: Types for defining 2D kernel, `kernel_2d` and `kernel_2d_fixed`, in Numeric extension ([PR #361](https://github.com/boostorg/gil/pull/361)). | |
18 | - GSoC 2019: Implementation of 2D convolution as new function `convolve_2d` ([PR #367](https://github.com/boostorg/gil/pull/367)). | |
19 | - GSoC 2019: Box filtering using the average filter ([PR #383](https://github.com/boostorg/gil/pull/383)). | |
20 | - GSoC 2019: Blur function based on normalized mean filter ([PR #383](https://github.com/boostorg/gil/pull/383)). | |
21 | - GSoC 2019: Sobel and Scharr operators ([PR #392](https://github.com/boostorg/gil/pull/392)). | |
22 | - GSoC 2019: Median filter to remove noise from image ([PR #393](https://github.com/boostorg/gil/pull/393)). | |
23 | - Continued adding new test cases and significantly improved overall test coverage. | |
24 | - Documented purpose of `cached_location_t` ([PR #287](https://github.com/boostorg/gil/pull/287)). | |
25 | - Function `convolve_1d` in Numeric extension for convenient use of `convolve_rows` and `convolve_cols` ([PR #347](https://github.com/boostorg/gil/pull/347) and [PR #367](https://github.com/boostorg/gil/pull/367)). | |
26 | - Function `extend_boundary` in Numeric extension to perform image boundary extension ([PR #386](https://github.com/boostorg/gil/pull/386)). | |
27 | - Project release notes maintained in Markdown file `RELEASES.md` ([PR #404](https://github.com/boostorg/gil/pull/404)). | |
28 | ||
29 | ### Changed | |
30 | - Move all tests, core features and extensions, inside `test/` directory ([PR #302](https://github.com/boostorg/gil/pull/302)). | |
31 | ||
32 | ### Removed | |
33 | - Replace Boost.MPL with Boost.MP11 ([PR #274](https://github.com/boostorg/gil/pull/274)). | |
34 | - Removed use of Boost.TypeTraits ([PR #274](https://github.com/boostorg/gil/pull/274)). | |
35 | - Dropped support for GCC <= 4.8 ([PR #296](https://github.com/boostorg/gil/pull/296)). | |
36 | - Remove `include/boost/gil/version.hpp` file as unused ([PR #403](https://github.com/boostorg/gil/pull/403)). | |
37 | ||
38 | ### Fixed | |
39 | - Undetermined value of default-initialized channel and pixel objects ([PR #273](https://github.com/boostorg/gil/pull/273)). | |
40 | - Undefined behaviour due to `std::is_trivially_default_constructible` specializations ([PR #284](https://github.com/boostorg/gil/pull/284)). | |
41 | - Crash when reading PNG files with an invalid header ([PR #385](https://github.com/boostorg/gil/pull/385)). | |
42 | - Applied the [Rule of Three](https://en.wikipedia.org/wiki/Rule_of_three_(C%2B%2B_programming)) for numerous types. | |
43 | - Removed uses of deprecated implicit definition of defaulted copy assignment operator or copy constructor. | |
44 | ||
45 | ## [1.68.0] - 2018-08-09 | |
46 | ||
47 | ### Added | |
48 | - The library now requires a C++11-compliant compiler. | |
49 | - Added Toolbox extension following the [review and acceptance into Boost](https://lists.boost.org/boost-announce/2011/01/0281.php). | |
50 | ||
51 | ### Changed | |
52 | - The I/O extensions have been entirely rewritten as I/O v2, [reviewed and accepted into Boost](https://lists.boost.org/boost-announce/2011/01/0281.php). | |
53 | - Documentation has been reformatted and updated. | |
54 | ||
55 | ### Removed | |
56 | - The existing I/O v1 extension has been replaced with I/O v2. | |
57 | ||
58 | ## [1.53.0] - 2013-02-04 | |
59 | ||
60 | ### Fixed | |
61 | - Fixed self-assignment warnings (Trac [#4919](https://svn.boost.org/trac10/ticket/4919)). | |
62 | ||
63 | ## [1.35.0] - 2008-03-29 | |
64 | ||
65 | ### Added | |
66 | - First Boost release of Generic Image Library developed by Lubomir Bourdev and Hailin Jin following the [review and acceptance into Boost](https://lists.boost.org/Archives/boost/2006/11/112896.php). | |
67 | ||
68 | --------------------------------------------------------------------- | |
69 | ||
70 | ## Pre-Boost History of the Generic Image Library (GIL) by Adobe | |
71 | ||
72 | The log of changes prior the first release of GIL as part of Boost | |
73 | was collected from https://stlab.adobe.com/gil/news.html site and | |
74 | linked PDF documents with detailed changes. | |
75 | ||
76 | --------------------------------------------------------------------- | |
77 | ||
78 | ## [2.1.1] - 2007-09-15 | |
79 | ||
80 | ### Changed | |
81 | - Swapped template arguments for `color_element_type`, `color_element_reference_type` and `color_element_const_reference_type` to take `ColorBase` first for consistency with the other similar metafunctions. | |
82 | ||
83 | ### Fixed | |
84 | - Minor bugs fixed. | |
85 | ||
86 | ## [2.1.0] - 2007-06-17 | |
87 | ||
88 | ### Added | |
89 | - Added support for accessing raw memory from image views by getting raw pointer to the beginning of the memory | |
90 | associated with a homogeneous image view using new functions `interleaved_view_get_raw_data` or `planar_view_get_raw_data`. | |
91 | - Support for non-byte-aligned images (e.g. 6-bit RGB222, or 1-bit grayscale). | |
92 | To support bit distance, we are using the same classes that were providing byte distance (`byte_addressible_step_iterator`, `byte_addressible_2d_locator`, etc.) | |
93 | except that now they operate on memory units instead of bytes. | |
94 | A memory unit can currently be either a byte or a bit. | |
95 | - New `byte_to_memunit` function required by the `MemoryBasedIteratorConcept`, which specifies the number of bits per memory unit (either 1 or 8). | |
96 | - New classes for references and iterators over bit-aligned pixels: `bit_aligned_pixel_reference`, `bit_aligned_pixel_iterator`. | |
97 | The memory unit of bit aligned pixel iterators is a bit, i.e. `byte_to_unit<bit_aligned_pixel_iterator<T> >::value == 8`. | |
98 | - The `value_type` of a bit-aligned image is a `packed_pixel` (new name, see below). | |
99 | A packed pixel is a pixel that is byte-aligned but whose channels may not be byte aligned. | |
100 | There is a strong analogy with the way interleaved and planar images are implemented, with `packed_pixel` corresponding | |
101 | to `pixel`, `bit_aligned_pixel_reference` corresponding to `planar_pixel_reference` | |
102 | and `bit_aligned_pixel_iterator` corresponding to `planar_pixel_iterator`. | |
103 | - New metafunction `bit_aligned_image_type` for constructing bit-aligned images. | |
104 | A bit-aligned image is an image whose pixels may not be byte-aligned (such as an RGB222 image). | |
105 | - New metafunction `pixel_value_type` for constructing homogenous pixel value from elements. | |
106 | - New metafunction `packed_pixel_type` for constructing homogenous packed pixel from elements. | |
107 | - New metafunction `packed_image_type` for constructing packed images with packed pixel as its `value_type`. | |
108 | ||
109 | ### Changed | |
110 | - Renamed `heterogeneous_packed_pixel` to `packed_pixel`. | |
111 | - Renamed `ByteAdvancableIteratorConcept` to `MemoryBasedIteratorConcept`. | |
112 | - Renamed `byte_addressable_{step_iterator,2d_locator}` to `memory_based_{step_iterator,2d_locator}`. | |
113 | - Renamed `byte_{advance,advanced,distance,step}` to `memunit_{advance,advanced,distance,step}`, | |
114 | - Renamed `locator::row_bytes()` to `locator::row_size()` and `locator::pix_bytestep()` to `locator::pixel_size()`. | |
115 | - Simplified `packed_channel_reference` and `packed_dynamic_channel_reference` by removing the `BitField` parameter (it is now computed automatically). | |
116 | - Improved `channel_convert` - it is faster by switching to floating-point math only if necessary. | |
117 | ||
118 | ### Fixed | |
119 | - Fixed a roundoff bug in the conversion (related to floating-point math switching). | |
120 | - Fixed histogram regression tests. | |
121 | ||
122 | ## [2.0.x] - 2007-03-27 | |
123 | ||
124 | ### Changed | |
125 | - Minor bug fixes. | |
126 | - Regression test improvements. | |
127 | ||
128 | ### Removed | |
129 | - Removed any external dependencies from the regression tests. | |
130 | ||
131 | ## [2.0.0] - 2007-03-08 | |
132 | ||
133 | ### Added | |
134 | - Further Boost integration: | |
135 | - Directories follow the Boost convention. | |
136 | - Different models are usually now split in separate files. | |
137 | - Renamed some files for better consistency. | |
138 | - Renamed classes, functions and template arguments with longer but clearer and more consistent names. | |
139 | - New `deprecated.hpp` - a file that maps many of the deprecated names to current ones. | |
140 | Including it will help porting your code to GIL 2.0. After porting to GIL 2.0, however, | |
141 | make sure that your code works when this file is not included. | |
142 | - New `swap` function required for reference proxies, since the `std::swap` default does not do the right thing. | |
143 | - Metafunctions `iterator_type_from_pixel` and `view_type_from_pixel` to allow creating standard iterators and views associated with a pixel type. | |
144 | - New `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`. | |
145 | - New `packed_channel_value`, `packed_channel_reference` and `packed_dynamic_channel_reference` which model channels operating on bit ranges. | |
146 | - New `heterogeneous_packed_pixel`, a model of a pixel whose channels are bit ranges (e.g. 16-bit RGB pixel in the 565 format). | |
147 | - Metafunctions to get the k-th element of a color base (or its reference): `kth_semantic_element_type`, `kth_semantic_element_reference_type`, `kth_semantic_element_const_reference_type`. | |
148 | - Metafunctions to operate on pixel iterator: `const_iterator_type`, `iterator_is_mutable`, `is_iterator_adaptor`. | |
149 | - New image view algorithms `uninitialized_fill_pixels`, `uninitialized_copy_pixels` and method `is_1d_traversable`. | |
150 | - Added support for creating images with a new value to fill. | |
151 | ||
152 | ### Changed | |
153 | - Updated the design guide and tutorial, updated syntax of concepts to the latest concepts proposal. | |
154 | - In `image`, `image_view`, `any_image`, `any_image_view`: | |
155 | There are no longer global functions `get_width()`, `get_height()`, `get_dimensions()`, `num_channels()`. | |
156 | Use methods `width()`, `height()`, `dimensions()` instead. | |
157 | - In models of pixel, pixel iterator, pixel locator, image view and image: | |
158 | There used to be different ways of getting to a pixel, channel, color space, etc. of an image view, | |
159 | pixel, locator, iterator and image (e.g. traits, member typedefs). | |
160 | Now all pixel-based GIL constructs (pixels, pixel iterators, locators, image views and images) model | |
161 | `PixelBasedConcept`, which means they provide the following metafunctions: `color_space_type`, `channel_mapping_type`, `is_planar`, `num_channels` | |
162 | and for homogeneous constructs we also have: `channel_type`. | |
163 | To get the pixel type or pixel reference/const reference type of an image, image view, locator | |
164 | and pixel, use member typedefs `value_type`, `reference` and `const_reference`. | |
165 | - In `locator`, `image`, `image_view`, `any_image` and `any_image_view`: | |
166 | Removed `dynamic_x_step_t`, `dynamic_y_step_t`, `dynamic_xy_step_t` and `dynamic_xy_step_transposed_t` | |
167 | as member typedefs of locators and image views. | |
168 | Instead, there are separate concepts `HasDynamicXStepTypeConcept`, `HasDynamicYStepTypeConcept`, | |
169 | `HasTransposedTypeConcept` which all GIL-provided locators, views and images model. | |
170 | Those concepts require a metafunction to get the corresponding type. | |
171 | Analogously, all GIL pixel iterators model `HasDynamicXStepTypeConcept`. | |
172 | - In channel, the min and max value is now part of the channel traits. | |
173 | For all built-in types the channel range equals the physical range (as determined by `std::numeric_traits<T>::max()`). | |
174 | - Provide `channel_convert` support to convert between any of the GIL-provided channel types. | |
175 | The operation is also consistent - conversion is done as a linear mapping that maps the min/max to the min/max. | |
176 | - In pixel, major redesign of pixel-level constructs. | |
177 | Renamed `color_base` to `homogeneous_color_base` and defined it once, not for each color space. | |
178 | The color base is a first-class concept and allows to model any bundle of color elements. | |
179 | Work needed to define a new color space has been simplified a lot. | |
180 | All former pixel-level algorithms and accessors now operate on color bases. | |
181 | The elements of a color base can be accessed by physical or semantic index or by name (channel names | |
182 | can no longer be accessed as members of the pixel e.g. `my_pixel.gray = 0`), use `get_color` instead). | |
183 | - In color base, algorithms now can take heterogeneous pixels (i.e. pixels each channel of which may have a different type). | |
184 | The `color_convert` can operate on heterogeneous pixels with the exception of to/from RGBA. | |
185 | - In image, the class `image` is no longer templated over the image view. It is now templated over pixel value. | |
186 | - In dynamic image, instead of removed `cross_vector_image_types` and `cross_vector_image_view_types`, create MPL vector to enumerate types. | |
187 | - Renamed algorithms `{copy,equal,fill,for_each,generate,max,min,transform}_channels` to `static_{copy,equal,fill,for_each,generate,max,min,transform}`. | |
188 | - Rename metafunctions `channel` to `at_c`, `semantic_channel` to `semantic_at_c`, `get_nth_channel` to `dynamic_at_c`. | |
189 | - Renamed `planar_{ptr,ref}` to `planar_pixel_{iterator,reference}`. | |
190 | - Renamed `PixelConcept` to `HomogeneousPixelConcept`. | |
191 | - Renamed `HeterogeneousPixelConcept` to `PixelConcept`. | |
192 | - Renamed `pixel_image_iterator` to `iterator_from_2d`. | |
193 | - Renamed `is_contiguous` to `is_1d_traversable`. | |
194 | - Renamed `membased_2d_locator` to `byte_addressable_2d_locator`. | |
195 | - Renamed `resize_clobber_image` to `image::recreate`. | |
196 | ||
197 | ### Fixed | |
198 | - Now compiles with GCC 4.1.1. | |
199 | - Fixed some bugs in defining reference proxies. | |
200 | ||
201 | ### Removed | |
202 | - Flattened the `core` directory as part of Boost integration. | |
203 | - Got rid of channel accessors from pixel types. | |
204 | - Got rid of `pixel_traits`. Use nested typedefs `value_type`, `reference` and `const_reference` or metafunctions implementing `PixelBasedConcept`. | |
205 | - Got rid of `pixel_iterator_traits`. Use `std::iterator_traits`, `PixelBasedConcept` metafunctions or the new metafunctions for pixel iterators. | |
206 | - Got rid of the ability to directly access pixels through image, only through views. The image no longer models STL's random access container concept. | |
207 | - No more LAB and HSB color space, because there is no color conversion support implemented for these. New color spaces can be added with just a few lines of code. | |
208 | ||
209 | ## [1.x] - 2007-01-03 | |
210 | ||
211 | ### Added | |
212 | - Restored back the ability to assign a channel to a grayscale pixel. | |
213 | ||
214 | ### Changed | |
215 | - Fixed some minor issues with color converted views of dynamic images. | |
216 | ||
217 | ## [1.x] - 2006-11-07 | |
218 | ||
219 | GIL accepted to Boost. | |
220 | ||
221 | GIL's Boost review was successful and GIL will be part of the Boost libraries. | |
222 | It will most likely first appear in the 1.35 version of Boost. | |
223 | In the future our web page will continue to provide you with the latest | |
224 | improvements to GIL, as we have the flexibility to release more frequently than Boost. | |
225 | ||
226 | ## [1.x] - 2006-10-20 | |
227 | ||
228 | ### Added | |
229 | - New regression tests. | |
230 | - Source code of usage examples is available to download from the website. | |
231 | ||
232 | ### Changed | |
233 | - Minor changes to GIL core. | |
234 | ||
235 | ## [1.x] - 2006-10-02 | |
236 | ||
237 | ### Added | |
238 | - First version of the Numeric extension. | |
239 | The extension provides some basic image processing algorithms, such as convolution and resampling. | |
240 | - Introduction of pixel traits. | |
241 | ||
242 | ### Changed | |
243 | - Improved consistent use of MPL predicates and standardized template parameter names. | |
244 | ||
245 | ## [1.x] - 2006-09-20 | |
246 | ||
247 | ### Added | |
248 | - GIL now allows users to overload the default color conversion with one of their own. | |
249 | - Section in the design guide describes how to overload default color conversion. | |
250 | ||
251 | ### Changed | |
252 | - Color conversion improvements. | |
253 | ||
254 | ## [1.0] - 2006-08-29 | |
255 | ||
256 | ### Added | |
257 | - Pixel dereference adaptors are introduced. | |
258 | - Locator concepts/models are made more generic. | |
259 | - Example of creating the Mandelbrot set is described in the tutorial. | |
260 | ||
261 | ### Changed | |
262 | - It is now easier to construct virtual image views. | |
263 | ||
264 | ## [] - 2006-06-27 | |
265 | ||
266 | ### Added | |
267 | - A GIL Flash presentation is posted (aka video lecture). | |
268 | ||
269 | ## [] - 2006-06-14 | |
270 | ||
271 | ### Added | |
272 | - GIL homepage goes live |