Releases: linebender/peniko
v0.5.0
This release has an MSRV of 1.82.
Added
Stylenow implementsPartialEq. (#114 by @liferooter)- Add
Bgra8variant toImageFormat. (#120 by @sagudev) - Provide
ImageAlphaTypewithImageData. (#121 by @sagudev) - Breaking change: Add
InterpolationAlphaSpacetoGradientto chose how color channels should be handled when interpolating between transparent colors. (#115 by @sagudev)
Changed
- Breaking change: Each
GradientKindnow contains a corresponding internal struct, from struct variants.
GradientKind::Linear { ... }is now written asLinearGradientPosition { ... }.into()(or, more explicitly, asGradientKind::Linear(LinearGradientPosition { ... })).
The equivalent transform applies forGradientKind::Sweep { ... }andGradientKind::Radial { ... }. (#119 by @nicoburns) - Breaking change:
Imagehas been renamed toImageBrush, which now consists of anImageDataand anImageSampler. (#117, #123 by @nicoburns, @DJMcNab)
To create anImageBrusheasily, you can useImageData {...}.into(). - Breaking change:
Fonthas been renamed toFontDatato matchImageData. (#126 by @nicoburns) - Breaking change: The angle directions of
SweepGradientPositionare now described to be clockwise in a Y-down coordinate system, as is common in computer graphics.
This is reversed from the most likely reading of the previous wording.
More generally, the angle directions are now described numerically to be unambiguous across coordinate systems.
The angle unit is also now specified to be in radians. (#130 by @tomcur) - Breaking change: Update to Kurbo v0.12.0. (#127 by @nicoburns)
Mix::Clipis now deprecated. To access the same functionality of optimised clips in Vello, you should now usepush_clip_layer. (#144 by @DJMcNab)
New Contributors
- @tomcur made their first contribution in #106
- @liferooter made their first contribution in #114
- @nicoburns made their first contribution in #119
- @sagudev made their first contribution in #120
Full Changelog: v0.4.0...v0.5.0
v0.4.1
This release has an MSRV of 1.82.
Changed
- Use Linebender Resource Handle for
Font,Blob, andWeakBlob. (#129 by @DJMcNab, @nicoburns)
Linebender Resource Handle
Peniko's Font (and therefore also Blob) are used as vocabulary types for font resources between crates.
However, this means that when Peniko made semver-incompatible releases, those crates could no longer (easily) interoperate.
To resolve this, Font, Blob, and WeakBlob are now re-exports from a new crate called Linebender Resource Handle.
These types have identical API as in previous releases, but will now be the same type across Peniko versions.
Full Changelog: v0.4.0...v0.4.1
v0.3.2
0.3.2 (2025-05-02)
This release has an MSRV of 1.82.
This change is a semver trick release, following the pattern documented at https://github.com/dtolnay/semver-trick.
Blob, WeakBlob and Font are now the types from Peniko's 0.4.0, which have the same public API as in the 0.3.0 series.
This enables compatibility between Vello 0.5.0 and Parley 0.3.0.
Full Changelog: v0.3.1...v0.3.2
v0.4.0
0.4.0 (2025-04-30)
This release has an MSRV of 1.82.
Added
ImageQualityandImageFormatnow optionally implbytemucktraits (#104 by @waywardmonkeys)
Changed
- Update to
color0.3.0. (#103 by @waywardmonkeys)
Full Changelog: v0.3.1...v0.4.0
v0.3.1
This release has an MSRV of 1.82.
Changed
- Update to
color0.2.3. (#95 by @waywardmonkeys)
Full Changelog: v0.3.0...v0.3.1
v0.3.0
This release has an MSRV of 1.82.
Added
Gradient,Image,Brushnow havewith_alphaandGradientalso gets amultiply_alpha(#67 by @waywardmonkeys)Gradientnow tracks a hue direction and interpolation color space (#71 by @waywardmonkeys)Compose,Extend,Fill, andMixnow optionally implbytemucktraits (#72 by @waywardmonkeys)- Add x/y extend modes and quality hint to images, rename
FormattoImageFormat(#77 by @dfrg)
Changed
Imagenow stores the alpha as anf32(#65 by @waywardmonkeys)- Use
colorcrate. See below for details (#63 by @waywardmonkeys) ColorStopsSource::collect_stopsnow consumesself(#87 by @waywardmonkeys)
Removed
- Removed the deprecated
Gradient::with_alpha_factorin favor ofGradient::multiply_alpha(#82 by @waywardmonkeys)
Color Changes
The old code behind peniko::Color has been removed and color functionality is now provided by the [color] crate.
This leads to a number of breaking changes:
peniko::Coloris now a type alias forAlphaColor<Srgb>from thecolorcrate.AlphaColordoes not, at this time, implDefault,PartialOrd, orHash.ColorStopno longer implsDefaultorPartialOrd.Brush,BrushRef, andColorStopcan be constructed from a variety of color types, although, for now,BrushandBrushRefconvert this internally into an unclippedAlphaColor<Srgb>.ColorStopsis now a newtype wrapper, rather than a type alias forSmallVec.
This allows it to be used withCacheKeyfrom Color.- The
colorcrate is re-exported aspeniko::color, so access to functionality from there is easy. - The various pre-defined color constants like
peniko::Color::YELLOWare no longer available.
Instead, use the CSS palette provided withincolor:peniko::color::palette::css::YELLOW. - Similarly, parsing a color string is now provided by the
colorcrate.
This is the first step towards providing better support for richer color functionality throughout the Linebender stack.
New Contributors
- @PoignardAzur made their first contribution in #56
Full Changelog: v0.2.0...v0.3.0
v0.2.0
This release has an MSRV of 1.70.
Added
- Breaking: An
alphamultiplier toImage(#40 by @DJMcNab) mintfeature to enablemintsupport in kurbo (#46 by @waywardmonkeys)
Changed
- Breaking: Mark
Formatas#[non_exhaustive](#47 by @DJMcNab) - Rename
with_alpha_factortomultiply_alpha(#52 by @DJMcNab)
Full Changelog: v0.1.1...v0.2.0