Skip to content

Tags: image-rs/canvas

Tags

image-canvas-v0.5.1

Toggle image-canvas-v0.5.1's commit message
Release 0.5.1

Improved color fidelity options
- Added `Color::Luma` which is a pure luminance space based on a (transferred)
  CIE-Y. The in-exact version used in TVs of old times, calculated within the
  non-linear signal, will be provided at a later point. It's justification is
  decreased computational effort which will have to be implemented.
- Fixed coefficients in transfer functions `SMPTE ST 2048` and `BT470`.
- Fixed `BT601` transfer function having its EOTF and inverse swapped.
- Several color spaces are now compared against Python's `colour-science`
  package as a reference to generate test vectors.

image-canvas-v0.5.0

Toggle image-canvas-v0.5.0's commit message
Release image-canvas 0.5.0

Add support for shared canvases, both `!Sync` and `Sync`.
- Added `canvas::RcCanvas` and `canvas::ArcCanvas`.
- Both can be constructed with the same layouts as an owned `Canvas` and
  converted between owned and shared.
  with multi-planar layouts.
- More modifications to shared canvas (planes) are planned and will be released
  with `0.5.1`.

The conversion interface is now explicitly available:
- Expose `Converter` and `ConverterRun` to fill any canvas' plane with color
  data from another canvas. The interface is intended to be forward compatible

image-texel-v0.5.0

Toggle image-texel-v0.5.0's commit message
Release 0.5.0

For the primitive buffers:
- `cell_buf` can be indexed by a `TexelRange<P>` for `&Cell<P>`.
- `cell_buf` can now be compared against `[u8]`.
- `atomic_buf` can be indexed by a `TexelRange<P>` for `AtomicSliceRef<P>`.
- `AtomicRef` gained `store` and `load`, mirroring methods on `Cell`.
- `AtomicSliceRef<P>` can be efficiently loaded into an owned `Vec<P>` or an
  aligned `TexelBuffer<P>`.

For images:
- `Decay` is now presumed to result in a layout that is at most the size of the
  previous layout, as documented. The signature of functions no longer return
  an `Option`, panicking instead on a violation. A new set of `checked_decay`
  makes it consistently opt-in to verify this property.
- `as_{capacity_,}{,cell_,atomic_}buf` are now consistently available on images
  and their reference equivalents.
- Shared and reference image types gained `into_owned` to convert them into an
  owned `Image<L>` buffer with the same layout.
- `CellImage` now exposes `as_cell_buf` and `as_capacity_cell_buf`.
- `AtomicImage` now exposes `as_atomic_buf`

The `image::data` module:
- Added this module to interface between aligned image buffers and unaligned
  external byte buffers. You can wrap `&[u8]`, `&mut [u8]` and `&[Cell<u8>]` to
  transfer data between them.
- Images have an `assign` method for transferring data _and_ layout. These are
  fallible on all images other than `Image`, which can always reallocate its
  buffers instead.
- All images have `as_source` and `as_target` to treat them as unaligned slices
  for the sake of interfaces specified as such. Copying relies on dynamic
  dispatch, so these share the exact type of unaligned data buffers.

Documentation:
- received a major overhaul and a preface overview of the library.

image-texel-v0.4.0

Toggle image-texel-v0.4.0's commit message

Verified

This tag was signed with the committer’s verified signature.
197g Aurelia Molzer
Release image-texel v0.4.0

- Add `AtomicImage`, `CellImage` and several supporting types and interfaces.
  These replicate large parts of the `Image` and `ImageMut` types but allow for
  operations on a shared buffer, wrapping `Arc` and `Rc` respectively.
- Added `PlaneOf` trait, a relationship between a layout, and index, and a
  subcomponent of the layout. All image reference types implement a form of
  `into_planes` that splits them apart by those components.
- Added a `Relocate` trait for layouts that can be move to another location
  in a buffer.

image-texel-v0.3.1

Toggle image-texel-v0.3.1's commit message

Verified

This tag was signed with the committer’s verified signature.
197g Aurelia Molzer
Release 0.3.1

- Fix compilation on non-explicit targets, where the maximum alignment will
  default to a standard of `8`. This affects the Tier 1 targets: `mips`,
  `powerpc`, `s390x` and others.

image-canvas-v0.4.3

Toggle image-canvas-v0.4.3's commit message

Verified

This tag was signed with the committer’s verified signature.
197g Aurelia Molzer
Release 0.4.3

Bug fixes:
- Conversion between packed and unpacked texel layouts behaves correctly in
  many cases for large images.

New feature:
- Derive `Hash`, `Eq` on many additional types in `color` and `layout`.

image-canvas-v0.4.2

Toggle image-canvas-v0.4.2's commit message

Verified

This tag was signed with the committer’s verified signature.
197g Aurelia Molzer
Release 0.4.2

Bug fixes:
- Layout calculation no longer ignores custom strides
- Layout calculation for subsampled texels now yields the proper amount of
  texels across its width, previously allocated too much memory

New feature:
- Added `Clone`-impls for `Canvas` and `Plane`.
- Added `Whitepoint::to_xyz` for XYZ weights of a whitepoint.
- Added `Primaries::{from,to}_xyz_row_matrix` to calculate the transfer matrix
  for conversion to and from CIE XYZ space.
- Added `Color::BT709_RGB` for the main RGB-like color space. Note that the
  sole difference to sRGB is its transfer function.
- Added `SampleParts::with_channel` to extract a single channel from a
  multi-channel texel.
- It's now possible to successfully call `Texel::channel_texel` with sample
  parts of any integral array form.
- Added `SampleParts::contains` as a utility.
- Added `SampleParts::color_channels` to retrieve the set of channels that had
  been used during construction.

image-canvas-v0.4.1

Toggle image-canvas-v0.4.1's commit message

Verified

This tag was signed with the committer’s verified signature.
197g Aurelia Molzer
Release 0.4.1

New features:
- Added `Color::Yuv` (or rather exposed) and `Differencing` to support YUV color spaces.
- Added `SampleParts::{UInt4x2,UInt4x6}`.

image-texel-v0.3.0

Toggle image-texel-v0.3.0's commit message

Verified

This tag was signed with the committer’s verified signature.
197g Aurelia Molzer
Release 0.3.0

- UB: Fix `Texel::{try_to_slice_mut,cast_mut_bytes}` casting a non-mutable
  pointer to a mutable slice. This is a local error, the input parameter was
  properly mutable. Commit: 67b5bc9
  No LLVM analysis *can* make use of this UB / unsoundness as of LLVM 13.
- `{Image,ImageRef,ImageMut,TexelBuffer}::{as_texels,as_mut_texels}` now return
  a slice truncated to the portion covering the logical size of the respective
  buffers. This is breaking as it required their layouts to be `Layout`.

image-canvas-v0.4.0

Toggle image-canvas-v0.4.0's commit message

Verified

This tag was signed with the committer’s verified signature.
197g Aurelia Molzer
Release 0.4.0

This adds support for packed blocks and incomplete YUV color support.

Bug fixes:
- Fixed a buf where bitfield sample parts referred to the wrong bits.

New features:
- Added `Block::Pack1x{2,4,8}` which refer to texel containing multiple pixels
  by bit-packing their sample parts in sequence.
- Added `Block::Yuv422,Yuy2,Yuv411` which refer to texels containing multiple
  pixels by subsampling some of their sample parts. Their implementation with
  regards to bit packing and unpacking is not yet final.
- Added `SampleParts::{UInt1x8,UInt2x4}` to complement bit packing blocks with
  more low-depth channels in a single texel.
- More information in `LayoutError` for debugging.
- Added a hidden `Color::Yuv`, not part of the official SemVer interface yet.