Skip to content

Tags: image-rs/canvas

Tags

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.
HeroicKatora 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.
HeroicKatora 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.
HeroicKatora 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.
HeroicKatora 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.
HeroicKatora 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.
HeroicKatora 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.
HeroicKatora 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.

image-texel-v0.2.1

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

Verified

This tag was signed with the committer’s verified signature.
HeroicKatora Aurelia Molzer
Release 0.2.1

- Added `Image{Ref,Mut}::split_layout` to re-use excess storage with a
  different layout, enabling splitting an image into separated planes. This
  enforces splitting at a maximum alignment boundary.

image-canvas-v0.3.1

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

Verified

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

This release is complete enough to provide all relevant RGB-Lab interaction.

Bug fixes:
- Fixed having default values for missing color channels. Converting `Rgb` to
  `Rgba` now assigns a value corresponding to `1.0` to the alpha channel,
  instead of `NaN`.

New features:
- Added `Canvas::planes_mut` as an interface to split it into multiple planes.
- Added `{BytePlaneRef, BytePlaneMut}::{to_owned, to_canvas}` to get owning
  representations of singular color planes.
- Export containers related to `Canvas` in a new public `canvas` module.
- Added `{Canvas, *}::layout` for container types, returning references to
  their respective layout types.
- Exposed `Channels{Ref,Mut}` as a strongly typed reference to arrays of
  uniform color channels. These offer `{as,mut,into}_slice` methods for direct
  access to individual channel values.
- Added `From<Plane>` for `Canvas`.
- Added `SampleParts::has_alpha` to check for any alpha channel.
- Added `color` and `texel` getter for `CanvasLayout`.
- The `BytePlane` type is now `BytePlaneRef` (hidden alias keeps this from
  being a breaking change).