Skip to content

Commit

Permalink
Merge pull request #1091 from HeroicKatora/next
Browse files Browse the repository at this point in the history
Update release and notes for 0.23 preview
  • Loading branch information
HeroicKatora committed Dec 6, 2019
2 parents 6946691 + a247ba9 commit f23f53a
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 1 deletion.
49 changes: 49 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,55 @@ Rust image aims to be a pure-Rust implementation of various popular image format

## Changes

### Version 0.23.0-preview.0

This major release intends to improve the interface with regards to handling of
color format data for both decoding and encoding. This necessitated many
breaking changes anyways so it was used to improve the compliance to the
interface guidelines such as outstanding renaming.

WIP: This preview version is intended to allow an evaluation and feedback on
the new interface. It is not yet perfect with regards to color spaces but it
was designed mainly as an improvement over the current interface with regards
to in-memory color formats, first. We'll get to color spaces in a later major
version.

- Heavily reworked `ColorType`:
- This type is now used for denoting formats for which we support operations
on buffers in these memory representations. Particularly, all channels in
pixel types are assumed to be an integer number of bytes (In terms of the
Rust type system, these are `Sized` and one can crate slices of channel
values).
- An `ExtendedColorType` (WIP: do You have better name?) is used to express
more generic color formats for which the library has limited support but
can be converted/scaled/mapped into a `ColorType` buffer. This operation
might be fallible but, for example, includes sources with 1/2/4-bit
components.
- Both types are non-exhaustive to add more formats in a minor release.
- A work-in-progress (#1085) will further separate the color model from the
specific channel instantiation, e.g. both `8-bit RGB` and `16-bit BGR`
are instantiations of `RGB` color model.
- Reworked the `ImageDecoder` trait:
- `read_image` takes an output buffer argument instead of allocating all
memory on its own.
- The return type of `dimensions` now aligns with `GenericImage` sizes.
- The `colortype` method was renamed to `color_type` for conformity.
- The result of `encode` operations is now uniformly an `ImageResult<()>`.
- Removed public converters from some `tiff` and `png` types. This allows
upgrading the dependency across major versions without a major release in
`image` itself.
- The enums `ColorType`, `DynamicImage`, `imageops::FilterType`, `ImageFormat`
no longer re-export all of their variants in the top-level of the crate. This
removes the growing pollution in the documentation and usage.
- The capitalization of types such as `HDRDecoder` etc. has been adjusted to
adhere to the API guidelines. These are now spelled `HdrDecoder` etc. The
same change has been made on `ImageFormat` and other enum variants.
- The `Progress` type has finally received public access functions. Strange
that no one reported them missing.
- Introduced `PixelDensity` and `PixelDensityUnit` to store DPI information in
formats that support encoding this form of metadata (e.g. in `jpeg`).


### Version 0.22.3

- Added a new module `io` containing a configurable `Reader`. It can replace
Expand Down
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "image"
version = "0.22.3"
version = "0.23.0-preview.0"
license = "MIT"
description = "Imaging library written in Rust. Provides basic filters and decoders for the most common image formats."
authors = [
Expand Down

0 comments on commit f23f53a

Please sign in to comment.