All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
0.11.4 - 2024-02-04
Path::compute_tight_bounds
calculation. Thanks to @qbcbyb
0.11.3 - 2023-12-03
Path::compute_tight_bounds
0.11.2 - 2023-10-01
- MSRV bumped to stable, because of the
flate2
crate.
Transform::is_valid
was treating 1/4096 as zero. We need a higher precision.- Build failure on AVX2 with
--no-default-features
. Thanks to @linkmauve
0.11.1 - 2023-06-17
- MSRV bumped to 1.60, because of the
log
crate.
LineJoin::MiterClip
handling with smallmiter_limit
. Thanks to @torokati44
0.11.0 - 2023-06-08
LineJoin::MiterClip
. Thanks to @torokati44
Rect::inset
andRect::outset
are no longer require a mutableself
. Thanks to @wezm
0.10.0 - 2023-05-27
PathBuilder::push_path
NonZeroRect
Size
Rect::transform
Rect::bbox_transform
Transform::from_bbox
Transform::is_valid
Transform::get_scale
Transform::pre_rotate
Transform::post_rotate
Transform::pre_rotate_at
Transform::post_rotate_at
Transform::map_point
ColorU8
andPremultipliedColorU8
are stored as[u8; 4]
instead ofu32
. This fixes potential alignment issues and make the code easier to understand. Thanks to @e00EPathBuilder::push_rect
acceptsRect
and notf32
numbers now.
tiny_skia_path::ScreenIntRect
. It become private.Path::is_empty
.Path
cannot be empty by design.
ColorU8::get
andPremultipliedColorU8::get
. Use the getters instead.
0.9.1 - 2023-05-17
- Reexport
tiny_skia_path::PathStroker
intiny-skia
.
0.9.0 - 2023-04-23
Mask::from_vec
Mask::from_pixmap
to convertPixmap
intoMask
by extracting alpha or luminance.Mask::width
Mask::height
Mask::data
Mask::data_mut
Mask::fill_path
Mask::decode_png
Mask::load_png
Mask::encode_png
Mask::save_png
Mask::invert
MaskType
Pixmap::apply_mask
- Rename
ClipMask
intoMask
. Mask
is closer to a 8bit (A8)Pixmap
now, rather than being its own thing.Mask::new
requires width and height arguments now.- Drawing on
Mask
usingMask::fill_path
uses our SIMD pipeline now instead of a scalar code that should make it a bit faster. - Painting API no longer returns
Option<()>
, but simply adds a warning to the log. Paint::anti_alias
is set totrue
by default.
Mask::set_path
. UseMask::fill_path
instead.Mask::default()
. Mask cannot be empty anymore.
0.8.4 - 2023-04-22
- Implement
PartialEq
forPaint
and subtypes. Thanks to @hecrj
- MSRV bumped to 1.57, mainly because of the
png
crate.
ClipMask
s larger than 8191x8191 pixels. Previously, the creation of a large mask viaClipMask::set_path
would have created an empty mask.
0.8.3 - 2023-02-05
- Performance regression, probably due to LLVM update in Rust. Thanks to @mostafa-khaled775
- Big-endian targets support. Thanks to @ids1024
0.8.2 - 2022-10-22
Pixmap::from_vec
.
- Increase Conic to Quad conversion precision. This allows us to produce nicer round caps. Previously, they were not as round as needed.
0.8.1 - 2022-08-29
- Conditional compilation of
FasterMinMax
on fallback platforms. Thanks to @CryZe
0.8.0 - 2022-08-27
- AArch64 Neon SIMD support. Up to 3x faster on Apple M1. Thanks to @CryZe
FiniteF32
,NormalizedF32
andNonZeroPositiveF32
types have been moved to thestrict-num
crate.- Rename
NormalizedF32::from_u8
intoNormalizedF32::new_u8
. - Rename
NormalizedF32::new_bounded
intoNormalizedF32::new_clamped
. - Use explicit SIMD intrinsic instead of relying on
safe_arch
. - MSRV bumped to 1.51
0.7.0 - 2022-07-03
tiny-skia-path
dependency that can be used independently fromtiny-skia
. It contains thetiny-skia
Bezier path implementation, including stroking and dashing. As well as all the geometry primitives (likePoint
andRect
).
- When disabling the
std
feature, one have to enableno-std-float
feature instead oflibm
now.
0.6.6 - 2022-06-23
- Panic in
Rect::round
andRect::round_out
. Thanks to @Wardenfar
0.6.5 - 2022-06-10
- Minimum
arrayref
version.
0.6.4 - 2022-06-04
- Panic during non-aliased hairline stroking at the bottom edge of an image.
0.6.3 - 2022-02-01
- SourceOver blend mode must not be optimized to Source when ClipPath is present.
0.6.2 - 2021-12-30
ClipMask::intersect_path
alpha multiplying.
0.6.1 - 2021-08-28
- Support rendering on pixmaps larger than 8191x8191 pixels.
From now,
Pixmap
is limited only by the amount of memory caller has. Transform::map_points
PathBuilder::push_oval
0.6.0 - 2021-08-21
- WASM simd128 support. Thanks to @CryZe
Transform::post_scale
no longer requires&mut self
.- Update
png
crate.
0.5.1 - 2021-03-07
- Color memset optimizations should be ignored when clip mask is present.
ClipMask::intersect_path
logic.
0.5.0 - 2021-03-06
ClipMask::intersect_path
- no_std support. Thanks to @CryZe
- Reduce
Transform
strictness. It's no longer guarantee to have only finite values, therefore we don't have to check each operation.
Canvas
. CallPixmap
/PixmapMut
drawing methods directly.
0.4.2 - 2021-01-23
- Panic during path filling with anti-aliasing because of incorrect edges processing.
0.4.1 - 2021-01-19
- Endless loop during stroke dashing.
0.4.0 - 2021-01-02
- Remove almost all
unsafe
. No performance changes.
0.3.0 - 2020-12-20
PixmapRef
andPixmapMut
, that can be created fromPixmap
or from raw data.Canvas::set_clip_mask
,Canvas::get_clip_mask
,Canvas::take_clip_mask
.
Canvas
no longer owns aPixmap
.Canvas::draw_pixmap
andPattern::new
acceptPixmapRef
instead of&Pixmap
now.- Improve clipping performance.
- The internal
ClipMask
type become public.
- Panic when path is drawn slightly past the
Pixmap
bounds.
Canvas::new
- Port to Rust.
- Bindings to a stripped down Skia fork.