- Fix issue creating valid sprite names for symlinks (see #81). This has two side effects:
- sprite names can now be generated for files that don't exist
spreet::sprite_name()
now returns aPathError
instead of anIoError
when theabs_path
argument is not an ancestor of thepath
argument.
- Update clap dependency to v4.5
- Update multimap dependency to v0.10
- Update oxipng dependency to v9.1
- Update resvg dependency to v0.43
- Update assert_fs dev dependency to v1.1
- Update softprops/action-gh-release to v2
The minimum supported version of Rust is now 1.79.0 (released June 2024).
- Add support for SDF icons (aka re-colourable images). See #58
- Breaking change: due to the addition of SDF icons, both the
SpriteDescription
andSpritesheetBuilder
structs have a new boolean field namedsdf
, whileSpriteDescription::new()
also takes a newsdf
argument. Set these tofalse
if you want to match the existing behaviour (i.e. no SDF icons). To create a spritesheet of SDF icons, callSpritesheetBuilder::make_sdf()
. - Add a new constructor,
Sprite::new_sdf()
. This rasterises an SVG to a bitmap as usual, but generates a signed distance field for the image and stores that data in the bitmap's alpha channel
- Breaking change: move all public identifiers to the root of the crate, e.g.
spreet::error::SpreetError
->spreet::SpreetError
, with the exception ofresvg
. - Update oxipng dependency to v9.0.0. This improves compression of PNG spritesheets without visual changes, but the PNGs won't be byte-to-byte compatible with spritesheets output by earlier versions of Spreet
- Update resvg dependency to v0.36.0
- Remove the deprecated function
spreet::sprite::generate_pixmap_from_svg()
- The
spreet::sprite_name
function (previously available asspreet::sprite::sprite_name
) now returnsResult<String, Error>
instead ofString
, and will no longer panic - The
spreet::get_svg_input_paths
function (previously available asspreet::fs::get_svg_input_paths
) now returnsResult<Vec<PathBuf>, Error>
instead ofVec<PathBuf>
, and will no longer panic
- Support stretchable icons (see #53)
- Make the CLI an optional (but default) feature (#62). This speeds up the build when using Spreet as a Rust library (see README)
- Fix bug that meant URLs in SVG
<image>
elements were resolved relative to the current working directory, not to the SVG itself (see #60) - Update resvg dependency to v0.35
- Update clap dependency to v4.4
- Remove Rayon dependency. This means the Spreet CLI no longer parses SVGs in parallel, but that was a fun-but-unnecessary optimisation in the first place that generally saved only a handful of milliseconds
- Deprecated:
spreet::sprite::generate_pixmap_from_svg()
has been deprecated and will be removed in a future version. Usespreet::sprite::Spreet::pixmap()
instead
The minimum supported version of Rust is now 1.70.0 (released June 2023).
- Improvements to using Spreet as a Rust library (#57 and #59)
- Optimise Oxipng usage to reduce dev dependencies (#61)
- Optimise the
main
function (#56) - Update crunch dependency to v0.5.3
- Update resvg dependency to v0.34
- Update clap dependency to v4.3
- Update multimap dependency to v0.9.0
- Update Rayon dependency to v1.7
- Update assert_fs dependency to v1.0.13
Note: the update to resvg brings a new image rendering algorithm. This produces smaller images and improves performance, but the PNGs won't be byte-to-byte compatible with spritesheets output by earlier versions of Spreet. There should be no visual change though.
- Replace unmaintained actions-rs/toolchain with dtolnay/rust-toolchain (#44 and #45)
- Publish to crates.io when new version is released (#46)
- Update clap dependency to v4.1
- Add
--recursive
argument, to include images in sub-directories (see #43) - Breaking change: update Oxipng dependency to v8. Spritesheet PNGs output by Spreet are now compressed using libdeflate. This produces smaller files but the PNGs won't be byte-to-byte compatible with spritesheets output by earlier versions of Spreet. This also causes Spreet's minimum Rust version to be 1.61.0
- Rasterize SVGs in parallel
- Add tutorial and benchmarks to README
- Update clap dependency to v4
- Update oxipng dependency to v6
- Use tiny-skia and usvg as re-exported from resvg
- Move predicates to dev-dependencies
- Add CLI tests
- Add
--unique
argument (see #14) - Optimise spritesheet PNG using
oxipng
- Match the way
spritezero-cli
traverses the input directory - Provide a Homebrew formula tap for easy MacOS/Linux installation
- Resize the target bin as required, instead of hardcoding a square 1.4 times the size of the sprites
- Trim unused transparent pixels from the spritesheet (excluding transparent pixels within sprites)
- Ensure target bin is at least as wide/tall as the widest/tallest sprite
- Pretty-print the JSON in the sprite index file
- Strip symbols from binaries using Cargo
- Add GitHub Actions workflow to draft a new release when a new tag is created
- Use one parallel code generation unit for release
- Bump clap Rust dependency from version 3.1.5 to version 3.1.6
- Bump actions/checkout GitHub Actions dependency from version 2 to version 3
- Initial beta release