Tags: image-rs/canvas
Tags
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.
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.
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.
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`.
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.
Release 0.4.1 New features: - Added `Color::Yuv` (or rather exposed) and `Differencing` to support YUV color spaces. - Added `SampleParts::{UInt4x2,UInt4x6}`.
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`.
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.
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.
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).
PreviousNext