Write and render svg-animations with Rust ✨

Related tags

GUI rusvid
Overview

rusvid

Write and render svg-animations with Rust

(no gui or cli, under active development)

Dependencies

  • Ffmpeg in path
  • rustc 1.63.0-nightly

Simple usage

Add rusvid_lib to cargo.toml

[dependencies]
rusvid_lib = "0.1.0"

and copy the following code into main.rs

None, Some(mut f) => { f.opacity = Opacity::new(0.75); Some(f) } }, data: Rc::new(figures::rect( pixel_position.x(), pixel_position.y(), composition.resolution().width() as f64 / 2.0, composition.resolution().height() as f64 / 3.0, )), ..Path::default() })); let out_path = PathBuf::from("out.mp4"); let tmp_path = PathBuf::from("./out"); let animation_1 = animation::PositionAnimation::new( "rect".to_string(), animation::functions::Linear::new(0, 200, pixel_position, (1250.0, 500.0).into()).unwrap(), ); let mut renderer = FfmpegRenderer::new(out_path, tmp_path); renderer.set_image_render(PngRender::new()); composition.animations.add_animation(animation_1); renderer.render(composition).unwrap() }">
use rusvid_lib::prelude::*;
use rusvid_lib::usvg::{
    BaseGradient, Color, LinearGradient, NodeKind, Opacity, Paint, Path, SpreadMethod, Stop,
    StopOffset, Stroke, StrokeWidth, Transform, Units,
};
use std::path::PathBuf;
use std::rc::Rc;

fn main() {
    let mut composition = Composition::builder()
        .resolution(Resolution::FHD)
        .framerate(30)
        .duration(5)
        .build();

    composition.add_to_defs(NodeKind::LinearGradient(LinearGradient {
        id: "lg1".into(),
        x1: 0.0,
        y1: 0.0,
        x2: 1.0,
        y2: 0.0,
        base: BaseGradient {
            units: Units::ObjectBoundingBox,
            transform: Transform::default(),
            spread_method: SpreadMethod::Pad,
            stops: vec![
                Stop {
                    offset: StopOffset::new(0.0),
                    color: Color::new_rgb(0, 255, 0),
                    opacity: Opacity::new(1.0),
                },
                Stop {
                    offset: StopOffset::new(1.0),
                    color: Color::new_rgb(0, 0, 255),
                    opacity: Opacity::new(1.0),
                },
            ],
        },
    }));

    let pixel_position = animation::Points::Point2d(20.0, 20.0);
    composition.add_to_root(NodeKind::Path(Path {
        id: "rect".to_string(),
        fill: match composition.fill_with_link("lg1") {
            None => None,
            Some(mut f) => {
                f.opacity = Opacity::new(0.75);
                Some(f)
            }
        },
        data: Rc::new(figures::rect(
            pixel_position.x(),
            pixel_position.y(),
            composition.resolution().width() as f64 / 2.0,
            composition.resolution().height() as f64 / 3.0,
        )),
        ..Path::default()
    }));

    let out_path = PathBuf::from("out.mp4");
    let tmp_path = PathBuf::from("./out");

    let animation_1 = animation::PositionAnimation::new(
        "rect".to_string(),
        animation::functions::Linear::new(0, 200, pixel_position, (1250.0, 500.0).into()).unwrap(),
    );

    let mut renderer = FfmpegRenderer::new(out_path, tmp_path);
    renderer.set_image_render(PngRender::new());
    composition.animations.add_animation(animation_1);
    renderer.render(composition).unwrap()
}

after that render the animation with cargo run -r.

It is recommended to always run the program in release-mode otherwise because it's to slow.

Comments
  • Bump tiny-skia from 0.6.6 to 0.7.0

    Bump tiny-skia from 0.6.6 to 0.7.0

    Bumps tiny-skia from 0.6.6 to 0.7.0.

    Changelog

    Sourced from tiny-skia's changelog.

    [0.7.0] - 2022-07-03

    Added

    • tiny-skia-path dependency that can be used independently from tiny-skia. It contains the tiny-skia Bezier path implementation, including stroking and dashing. As well as all the geometry primitives (like Point and Rect).

    Changed

    • When disabling the std feature, one have to enable no-std-float feature instead of libm now.
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 2
  • Bump rayon from 1.5.3 to 1.6.0

    Bump rayon from 1.5.3 to 1.6.0

    Bumps rayon from 1.5.3 to 1.6.0.

    Changelog

    Sourced from rayon's changelog.

    Release rayon 1.6.0 / rayon-core 1.10.0 (2022-11-18)

    • The minimum supported rustc is now 1.56.
    • The new IndexedParallelIterator::fold_chunks and fold_chunks_with methods work like ParallelIterator::fold and fold_with with fixed-size chunks of items. This may be useful for predictable batching performance, without the allocation overhead of IndexedParallelIterator::chunks.
    • New "broadcast" methods run a given function on all threads in the pool. These run at a sort of reduced priority after each thread has exhausted their local work queue, but before they attempt work-stealing from other threads.
      • The global broadcast function and ThreadPool::broadcast method will block until completion, returning a Vec of all return values.
      • The global spawn_broadcast function and methods on ThreadPool, Scope, and ScopeFifo will run detached, without blocking the current thread.
    • Panicking methods now use #[track_caller] to report the caller's location.
    • Fixed a truncated length in vec::Drain when given an empty range.

    Contributors

    Thanks to all of the contributors for this release!

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 1
  • Bump image from 0.24.4 to 0.24.5

    Bump image from 0.24.4 to 0.24.5

    Bumps image from 0.24.4 to 0.24.5.

    Changelog

    Sourced from image's changelog.

    Version 0.24.5

    Structural changes:

    • Increased the minimum supported Rust version (MSRV) to 1.61.
    • Increased the version requirement for the tiff crate to 0.8.0.
    • Increased the version requirement for the jpeg crate to 0.3.0.

    Bug fixes:

    • The as_rgb32f function of DynamicImage is now correctly documented.
    • Fixed a crash when decoding ICO images. Added a regression test.
    • Fixed a panic when transforming webp images. Added a regression test.
    • Added a check to prevent integer overflow when calculating file size for BMP images. The missing check could panic in debug mode or else set an incorrect file size in release mode.
    • Upgraded the PNG image encoder to use the newer PngEncoder::write_image instead of the deprecated PngEncoder::encode which did not account for byte order and could result in images with incorrect colors.
    • Fixed InsufficientMemory error when trying to decode a PNG image.
    • Fix warnings and CI issues.
    • Typos and links in the documentation have been corrected.

    Performance:

    • Added check for dynamic image dimensions before resizing. This improves performance in cases where the image does not need to be resized or has already been resized.
    Commits
    • aa1e81e Changes and release notes for 0.24.5
    • 88aadcb Merge pull request #1821 from micahsnyder/bump-jpeg-dependency
    • dffefce Bump the 'jpeg' version requirement to 0.3.0
    • bf0a96b Merge pull request #1812 from fintelia/png-with-limits
    • a7026e9 Merge pull request #1817 from Flashover89/Check-dimensions-for-dyn-image-befo...
    • 392798c Fix white spacing
    • 2be3d17 Merge branch 'image-rs:master' into Check-dimensions-for-dyn-image-before-res...
    • 4681225 Fix review findings
    • 1361f4a Add PngDecoder::with_limits
    • 1878c88 Merge pull request #1815 from fintelia/fix-ci
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 1
  • Bump resvg from 0.23.0 to 0.25.0

    Bump resvg from 0.23.0 to 0.25.0

    Bumps resvg from 0.23.0 to 0.25.0.

    Release notes

    Sourced from resvg's releases.

    v0.25.0

    • viewsvg is a simple application that showcases resvg capabilities
    • resvg-0.*.0.tar.xz is a sources archive with vendored Rust dependencies
    • resvg-explorer-extension.exe is an SVG thumbnailer for Windows Explorer

    v0.24.0

    • viewsvg is a simple application that showcases resvg capabilities
    • resvg-0.*.0.tar.xz is a sources archive with vendored Rust dependencies
    • resvg-explorer-extension.exe is an SVG thumbnailer for Windows Explorer
    Changelog

    Sourced from resvg's changelog.

    [0.25.0] - 2022-10-30

    Added

    • Partial paint-order attribute support. Markers can only be under or above the shape.

    Fixed

    • Compilation issues caused by rustybuzz update.

    [0.24.0] - 2022-10-22

    Added

    • CSS3 writing-mode variants vertical-rl and vertical-lr. Thanks to yisibl.
    • (tiny-skia) AArch64 Neon SIMD support. Up to 3x faster on Apple M1.

    Changed

    • usvg::Tree stores only Group, Path and Image nodes now. Instead of emulating an SVG file structure, where gradients, patterns, filters, clips and masks are part of the nodes tree (usually inside the defs element), we reference them using Rc from now. This change makes usvg a bit simpler. Makes usvg API way easier, since instead of looking for a node via usvg::Tree::defs_by_id the caller can access the type directly via Rc. And makes creation of custom usvg::Trees way easier.
    • clip_path, mask and filters usvg::Group fields store Rc instead of String now.
    • usvg::NodeExt::units was moved to usvg::Paint::units.
    • usvg::filter::ImageKind::Use stores usvg::Node instead of String.
    • usvg::PathData stores commands and points separately now to reduce overall memory usage.
    • usvg::PathData segments should be accessed via segments() now.
    • Most numeric types have been moved to the strict-num crate.
    • Rename NormalizedValue into NormalizedF64.
    • Rename PositiveNumber into PositiveF64.
    • Raw number of numeric types should be accessed via get() method instead of value() now.
    • usvg::TextSpan::font_size is NonZeroPositiveF64 instead of f64 now.
    • Re-export usvg and tiny-skia dependencies in resvg.
    • Re-export roxmltree dependency in usvg.
    • (usvg) Output float precision is reduced from 11 to 8 digits.

    Removed

    • usvg::Tree::create. usvg::Tree is an open struct now.
    • usvg::Tree::root. It's a public field now.
    • usvg::Tree::svg_node. Replaced with usvg::Tree public fields.
    • defs, is_in_defs, append_to_defs and defs_by_id from usvg::Tree. We no longer emulate SVG structure. No alternative.
    • usvg::Tree::is_in_defs. There are no defs anymore.
    • usvg::Paint::Link. We store gradient and patterns directly in usvg::Paint now.
    • usvg::Svg. No longer needed. size and view_box are usvg::Tree fields now.
    • usvg::SubPathIter and usvg::PathData::subpaths. No longer used.

    Fixed

    • Path bbox calculation scales stroke width too. Thanks to growler.

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 1
  • Bump usvg from 0.23.0 to 0.25.0

    Bump usvg from 0.23.0 to 0.25.0

    Bumps usvg from 0.23.0 to 0.25.0.

    Release notes

    Sourced from usvg's releases.

    v0.25.0

    • viewsvg is a simple application that showcases resvg capabilities
    • resvg-0.*.0.tar.xz is a sources archive with vendored Rust dependencies
    • resvg-explorer-extension.exe is an SVG thumbnailer for Windows Explorer

    v0.24.0

    • viewsvg is a simple application that showcases resvg capabilities
    • resvg-0.*.0.tar.xz is a sources archive with vendored Rust dependencies
    • resvg-explorer-extension.exe is an SVG thumbnailer for Windows Explorer
    Changelog

    Sourced from usvg's changelog.

    [0.25.0] - 2022-10-30

    Added

    • Partial paint-order attribute support. Markers can only be under or above the shape.

    Fixed

    • Compilation issues caused by rustybuzz update.

    [0.24.0] - 2022-10-22

    Added

    • CSS3 writing-mode variants vertical-rl and vertical-lr. Thanks to yisibl.
    • (tiny-skia) AArch64 Neon SIMD support. Up to 3x faster on Apple M1.

    Changed

    • usvg::Tree stores only Group, Path and Image nodes now. Instead of emulating an SVG file structure, where gradients, patterns, filters, clips and masks are part of the nodes tree (usually inside the defs element), we reference them using Rc from now. This change makes usvg a bit simpler. Makes usvg API way easier, since instead of looking for a node via usvg::Tree::defs_by_id the caller can access the type directly via Rc. And makes creation of custom usvg::Trees way easier.
    • clip_path, mask and filters usvg::Group fields store Rc instead of String now.
    • usvg::NodeExt::units was moved to usvg::Paint::units.
    • usvg::filter::ImageKind::Use stores usvg::Node instead of String.
    • usvg::PathData stores commands and points separately now to reduce overall memory usage.
    • usvg::PathData segments should be accessed via segments() now.
    • Most numeric types have been moved to the strict-num crate.
    • Rename NormalizedValue into NormalizedF64.
    • Rename PositiveNumber into PositiveF64.
    • Raw number of numeric types should be accessed via get() method instead of value() now.
    • usvg::TextSpan::font_size is NonZeroPositiveF64 instead of f64 now.
    • Re-export usvg and tiny-skia dependencies in resvg.
    • Re-export roxmltree dependency in usvg.
    • (usvg) Output float precision is reduced from 11 to 8 digits.

    Removed

    • usvg::Tree::create. usvg::Tree is an open struct now.
    • usvg::Tree::root. It's a public field now.
    • usvg::Tree::svg_node. Replaced with usvg::Tree public fields.
    • defs, is_in_defs, append_to_defs and defs_by_id from usvg::Tree. We no longer emulate SVG structure. No alternative.
    • usvg::Tree::is_in_defs. There are no defs anymore.
    • usvg::Paint::Link. We store gradient and patterns directly in usvg::Paint now.
    • usvg::Svg. No longer needed. size and view_box are usvg::Tree fields now.
    • usvg::SubPathIter and usvg::PathData::subpaths. No longer used.

    Fixed

    • Path bbox calculation scales stroke width too. Thanks to growler.

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 1
  • Bump glam from 0.21.3 to 0.22.0

    Bump glam from 0.21.3 to 0.22.0

    Bumps glam from 0.21.3 to 0.22.0.

    Changelog

    Sourced from glam's changelog.

    [0.22.0] - 2022-10-24

    Breaking changes

    • Added u32 implementation of BVec3A and BVec4 when SIMD is not available. These are used instead of aliasing to the bool implementations.

    • Removed Add, Sub, and scalar Mul implementations from affine types as they didn't make sense on these types.

    • Removed deprecated const_* macros. These have been replaced by const fn methods.

    Fixed

    • Fixed neg and signum to consistently handle negative zero across multiple platforms.

    • Removed register_attr feature usage for SPIR-V targets.

    Added

    • Added missing Serialize, Deserialize and PartialEq implementations.

    • Added Sum<Self> and Product<Self> implementations for all vector, matrix and quaternion types.

    • Added 4x4 matrix methods look_at_lh and look_at_rh. These were previously private.

    • Added dot_into_vec methods to vector which returns the result of the dot product splatted to all vector lanes.

    • Added is_negative_bitmask to vector types which returns a u32 of bits for each negative vector lane.

    • Added splat method and TRUE and FALSE constants to all BVec types.

    • Added from_mat3a methods to Affine2, Mat2, Mat4 and Quat types.

    Changed

    • Disable serde default features.

    • Made to_cols_array, to_cols_array_2d, and from_diagonal methods const fn.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 1
  • Bump anyhow from 1.0.65 to 1.0.66

    Bump anyhow from 1.0.65 to 1.0.66

    Bumps anyhow from 1.0.65 to 1.0.66.

    Release notes

    Sourced from anyhow's releases.

    1.0.66

    • Reduce unhelpful backtrace frames in backtraces captured during a context call (#279)
    Commits
    • 8de29aa Release 1.0.66
    • 54fc812 Merge pull request #279 from dtolnay/contextbacktrace
    • 131249b Remove 2 frames of noise from 'context' backtraces
    • f2123ab Ui test changes for trybuild 1.0.66
    • 9bd74a1 Restore pre-nightly-2022-10-05 behavior of test_path PhantomData tests
    • 77c4fa4 Update test suite to nightly-2022-10-05
    • 7b171d6 Ignore bool_to_int_with_if clippy lint in test suite
    • 94ae34b Raise minimum tested toolchain to rust 1.56
    • 94f6f4d Remove default package.readme metadata from Cargo.toml
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 1
  • Bump usvg from 0.23.0 to 0.24.0

    Bump usvg from 0.23.0 to 0.24.0

    Bumps usvg from 0.23.0 to 0.24.0.

    Release notes

    Sourced from usvg's releases.

    v0.24.0

    • viewsvg is a simple application that showcases resvg capabilities
    • resvg-0.*.0.tar.xz is a sources archive with vendored Rust dependencies
    • resvg-explorer-extension.exe is an SVG thumbnailer for Windows Explorer
    Changelog

    Sourced from usvg's changelog.

    [0.24.0] - 2022-10-22

    Added

    • CSS3 writing-mode variants vertical-rl and vertical-lr. Thanks to yisibl.
    • (tiny-skia) AArch64 Neon SIMD support. Up to 3x faster on Apple M1.

    Changed

    • usvg::Tree stores only Group, Path and Image nodes now. Instead of emulating an SVG file structure, where gradients, patterns, filters, clips and masks are part of the nodes tree (usually inside the defs element), we reference them using Rc from now. This change makes usvg a bit simpler. Makes usvg API way easier, since instead of looking for a node via usvg::Tree::defs_by_id the caller can access the type directly via Rc. And makes creation of custom usvg::Trees way easier.
    • clip_path, mask and filters usvg::Group fields store Rc instead of String now.
    • usvg::NodeExt::units was moved to usvg::Paint::units.
    • usvg::filter::ImageKind::Use stores usvg::Node instead of String.
    • usvg::PathData stores commands and points separately now to reduce overall memory usage.
    • usvg::PathData segments should be accessed via segments() now.
    • Most numeric types have been moved to the strict-num crate.
    • Rename NormalizedValue into NormalizedF64.
    • Rename PositiveNumber into PositiveF64.
    • Raw number of numeric types should be accessed via get() method instead of value() now.
    • usvg::TextSpan::font_size is NonZeroPositiveF64 instead of f64 now.
    • Re-export usvg and tiny-skia dependencies in resvg.
    • Re-export roxmltree dependency in usvg.
    • (usvg) Output float precision is reduced from 11 to 8 digits.

    Removed

    • usvg::Tree::create. usvg::Tree is an open struct now.
    • usvg::Tree::root. It's a public field now.
    • usvg::Tree::svg_node. Replaced with usvg::Tree public fields.
    • defs, is_in_defs, append_to_defs and defs_by_id from usvg::Tree. We no longer emulate SVG structure. No alternative.
    • usvg::Tree::is_in_defs. There are no defs anymore.
    • usvg::Paint::Link. We store gradient and patterns directly in usvg::Paint now.
    • usvg::Svg. No longer needed. size and view_box are usvg::Tree fields now.
    • usvg::SubPathIter and usvg::PathData::subpaths. No longer used.

    Fixed

    • Path bbox calculation scales stroke width too. Thanks to growler.
    • (tiny-skia) Round caps roundness.
    • (xmlparser) Stack overflow on specific files.
    • (c-api) resvg_is_image_empty output was inverted.
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 1
  • Bump resvg from 0.23.0 to 0.24.0

    Bump resvg from 0.23.0 to 0.24.0

    Bumps resvg from 0.23.0 to 0.24.0.

    Release notes

    Sourced from resvg's releases.

    v0.24.0

    • viewsvg is a simple application that showcases resvg capabilities
    • resvg-0.*.0.tar.xz is a sources archive with vendored Rust dependencies
    • resvg-explorer-extension.exe is an SVG thumbnailer for Windows Explorer
    Changelog

    Sourced from resvg's changelog.

    [0.24.0] - 2022-10-22

    Added

    • CSS3 writing-mode variants vertical-rl and vertical-lr. Thanks to yisibl.
    • (tiny-skia) AArch64 Neon SIMD support. Up to 3x faster on Apple M1.

    Changed

    • usvg::Tree stores only Group, Path and Image nodes now. Instead of emulating an SVG file structure, where gradients, patterns, filters, clips and masks are part of the nodes tree (usually inside the defs element), we reference them using Rc from now. This change makes usvg a bit simpler. Makes usvg API way easier, since instead of looking for a node via usvg::Tree::defs_by_id the caller can access the type directly via Rc. And makes creation of custom usvg::Trees way easier.
    • clip_path, mask and filters usvg::Group fields store Rc instead of String now.
    • usvg::NodeExt::units was moved to usvg::Paint::units.
    • usvg::filter::ImageKind::Use stores usvg::Node instead of String.
    • usvg::PathData stores commands and points separately now to reduce overall memory usage.
    • usvg::PathData segments should be accessed via segments() now.
    • Most numeric types have been moved to the strict-num crate.
    • Rename NormalizedValue into NormalizedF64.
    • Rename PositiveNumber into PositiveF64.
    • Raw number of numeric types should be accessed via get() method instead of value() now.
    • usvg::TextSpan::font_size is NonZeroPositiveF64 instead of f64 now.
    • Re-export usvg and tiny-skia dependencies in resvg.
    • Re-export roxmltree dependency in usvg.
    • (usvg) Output float precision is reduced from 11 to 8 digits.

    Removed

    • usvg::Tree::create. usvg::Tree is an open struct now.
    • usvg::Tree::root. It's a public field now.
    • usvg::Tree::svg_node. Replaced with usvg::Tree public fields.
    • defs, is_in_defs, append_to_defs and defs_by_id from usvg::Tree. We no longer emulate SVG structure. No alternative.
    • usvg::Tree::is_in_defs. There are no defs anymore.
    • usvg::Paint::Link. We store gradient and patterns directly in usvg::Paint now.
    • usvg::Svg. No longer needed. size and view_box are usvg::Tree fields now.
    • usvg::SubPathIter and usvg::PathData::subpaths. No longer used.

    Fixed

    • Path bbox calculation scales stroke width too. Thanks to growler.
    • (tiny-skia) Round caps roundness.
    • (xmlparser) Stack overflow on specific files.
    • (c-api) resvg_is_image_empty output was inverted.
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 1
  • Bump anyhow from 1.0.59 to 1.0.61

    Bump anyhow from 1.0.59 to 1.0.61

    Bumps anyhow from 1.0.59 to 1.0.61.

    Release notes

    Sourced from anyhow's releases.

    1.0.61

    • Work around rust-analyzer builds poisoning all subsequent command-line cargo builds (#252)

    1.0.60

    • Propagate --target to rustc invocation when deciding about backtrace support (#249, thanks @​RalfJung)
    Commits
    • d2c83e2 Release 1.0.61
    • 6e6af39 Merge pull request #252 from dtolnay/rerun
    • 77317b5 Work around RA's RUSTC_WRAPPER poisoning all subsequent command-line builds
    • e55761e Disable backtrace test until converted to provider API
    • 08f8012 Release 1.0.60
    • 29c72c5 Merge pull request #249 from RalfJung/rustc-target
    • da28e88 fix RUSTC_WRAPPER env var
    • 822a4ed propagate --target to rustc invocation
    • db32585 Update keywords in crates.io metadata
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 1
  • Bump anyhow from 1.0.59 to 1.0.60

    Bump anyhow from 1.0.59 to 1.0.60

    Bumps anyhow from 1.0.59 to 1.0.60.

    Release notes

    Sourced from anyhow's releases.

    1.0.60

    • Propagate --target to rustc invocation when deciding about backtrace support (#249, thanks @​RalfJung)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 1
  • Bump anyhow from 1.0.65 to 1.0.68

    Bump anyhow from 1.0.65 to 1.0.68

    Bumps anyhow from 1.0.65 to 1.0.68.

    Release notes

    Sourced from anyhow's releases.

    1.0.67

    • Improve the backtrace captured when context() is used on an Option (#280)

    1.0.66

    • Reduce unhelpful backtrace frames in backtraces captured during a context call (#279)
    Commits
    • 867763b Release 1.0.68
    • c0a87d0 Opt out -Zrustdoc-scrape-examples on docs.rs
    • 1cc707b Release 1.0.67
    • 613b261 Update build status badge
    • 0f922d7 Disable backtrace CI on Rust 1.50
    • acecd9b Update ui test suite to nightly-2022-12-15
    • 0bac51f Time out workflows after 45 minutes
    • 60e8800 Fix renamed let_underscore_drop lint
    • 8d1c734 Update ui test suite to nightly-2022-11-16
    • 451651b Update ui test suite to nightly-2022-11-11
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
  • Bump rayon from 1.5.3 to 1.6.1

    Bump rayon from 1.5.3 to 1.6.1

    Bumps rayon from 1.5.3 to 1.6.1.

    Changelog

    Sourced from rayon's changelog.

    Release rayon 1.6.1 (2022-12-09)

    • Simplified par_bridge to only pull one item at a time from the iterator, without batching. Threads that are waiting for iterator items will now block appropriately rather than spinning CPU. (Thanks @​njaard!)
    • Added protection against recursion in par_bridge, so iterators that also invoke rayon will not cause mutex recursion deadlocks.

    Release rayon-core 1.10.1 (2022-11-18)

    • Fixed a race condition with threads going to sleep while a broadcast starts.

    Release rayon 1.6.0 / rayon-core 1.10.0 (2022-11-18)

    • The minimum supported rustc is now 1.56.
    • The new IndexedParallelIterator::fold_chunks and fold_chunks_with methods work like ParallelIterator::fold and fold_with with fixed-size chunks of items. This may be useful for predictable batching performance, without the allocation overhead of IndexedParallelIterator::chunks.
    • New "broadcast" methods run a given function on all threads in the pool. These run at a sort of reduced priority after each thread has exhausted their local work queue, but before they attempt work-stealing from other threads.
      • The global broadcast function and ThreadPool::broadcast method will block until completion, returning a Vec of all return values.
      • The global spawn_broadcast function and methods on ThreadPool, Scope, and ScopeFifo will run detached, without blocking the current thread.
    • Panicking methods now use #[track_caller] to report the caller's location.
    • Fixed a truncated length in vec::Drain when given an empty range.

    Contributors

    Thanks to all of the contributors for this release!

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies rust 
    opened by dependabot[bot] 0
Releases(0.1.1)
  • 0.1.1(Sep 7, 2022)

  • 0.1.0(Jul 29, 2022)

    Library

    What's Changed

    • Add raw render https://github.com/LetsMelon/rusvid/pull/5
    • add prelude to lib https://github.com/LetsMelon/rusvid/pull/8
    • Animation system https://github.com/LetsMelon/rusvid/pull/7
    • published on crates.io

    Full Changelog: https://github.com/LetsMelon/rusvid/commits/0.1.0

    Source code(tar.gz)
    Source code(zip)
Owner
Domenic Melcher
Stundent at HTL Spengergasse!
Domenic Melcher
A render-backend independant egui backend for sdl2

A Sdl2 + Egui Backend An egui backend for sdl2 unbound to any renderer-backend. You can include it like so: [dependencies] egui_sdl2_platform = "0.1.0

null 4 Dec 16, 2022
write your next slideshow in rust 🦀, as a self-contained binary 📦.

?? bema Write your next slideshow in rust ?? , as a self-contained binary ?? . ?? DSL See examples/basic.rs. ?? frontends There are several ways you c

Olivier Abdesselam 21 Sep 5, 2022
Termbox is a library that provides minimalistic API which allows the programmer to write text-based user interfaces.

Termbox is a library that provides minimalistic API which allows the programmer to write text-based user interfaces.

null 1.9k Dec 22, 2022
Deno is a simple, modern and secure runtime for JavaScript and TypeScript that uses V8 and is built in Rust.

Deno Deno is a simple, modern and secure runtime for JavaScript and TypeScript that uses V8 and is built in Rust. Features Secure by default. No file,

Derek Jones 2 Aug 13, 2022
Rust bindings to Core Foundation and other low level libraries on Mac OS X and iOS

core-foundation-rs Compatibility Targets macOS 10.7 by default. To enable features added in macOS 10.8, set Cargo feature mac_os_10_8_features. To hav

Servo 685 Jan 2, 2023
Rust bindings and wrappers for GLib, GDK 3, GTK+ 3 and Cairo.

THIS REPOSITORY IS DEPRECATED SEE: https://github.com/rust-gnome rgtk Rust bindings and wrappers for GLib, GDK 3, GTK+ 3 and Cairo. Building rgtk expe

Jeremy Letang 124 Jul 10, 2022
Unofficial Linux QQ client, based on GTK4 and libadwaita, developed with Rust and Relm4.

GTK QQ (WIP) Unofficial Linux QQ client, based on GTK4 and libadwaita, developed with Rust and Relm4. Screenshots Light Dark Note The two screenshots

Lomírus 198 Dec 24, 2022
A powerful color picker and formatter, built with GTK and Rust

Eyedropper A powerful color picker and formatter. More screenshots Features Pick a Color Enter a color in Hex-Format Parse RGBA/ARGB Hex-Colors View c

Jonathan 108 Dec 24, 2022
A simple, clean, and beautiful WYSIWYG Markdown editor and content-management system

ScribeDown Current version: v0.0.1 Feature level: See the roadmap Beautiful, Clean, Writer-Oriented The goal of ScribeDown is to make Markdown the bes

Alex Dumas 4 Dec 20, 2022
A collection of components and widgets that are built for bevy_ui and the ECS pattern

Widgets for Bevy UI A collection of components and widgets that are built for bevy_ui and the ECS pattern. Current State This was started recently and

Gabriel Bourgeois 3 Sep 2, 2022
Build beautiful desktop apps with flutter and rust. 🌠 (wip)

flutter-rs Build flutter desktop app in dart & rust. Get Started Install requirements Rust flutter sdk Develop install the cargo flutter command cargo

null 2k Dec 26, 2022
Integrate Qml and Rust by building the QMetaObject at compile time.

QMetaObject crate for Rust The qmetaobject crate is a crate which is used to expose rust object to Qt and QML. Objectives Rust procedural macro (custo

Woboq GmbH 495 Jan 3, 2023
SixtyFPS is a toolkit to efficiently develop fluid graphical user interfaces for any display: embedded devices and desktop applications. We support multiple programming languages, such as Rust, C++ or JavaScript.

SixtyFPS is a toolkit to efficiently develop fluid graphical user interfaces for any display: embedded devices and desktop applications. We support multiple programming languages, such as Rust, C++ or JavaScript.

SixtyFPS 5.5k Jan 1, 2023
A cross-platform GUI library for Rust focused on simplicity and type-safety

A cross-platform GUI library for Rust, inspired by Elm

Héctor Ramón 17.5k Jan 8, 2023
A react-inspired UI library for building multimedia desktop apps with rust and vulkan.

narui A react-inspired UI library for building multimedia desktop apps with rust and vulkan. declarative UI with Ergonomics similar to React with hook

apertus° - open source cinema 42 Jan 1, 2023
Highly customizable finder with high performance. Written in Rust and uses GTK

Findex Highly customizable finder with high performance. Written in Rust and uses GTK Installation Automatic Binary Clone from https://aur.archlinux.o

MD Gaziur Rahman Noor 442 Jan 1, 2023
GUI based tool to sort and categorize images written in Rust

ImageSieve GUI based tool to sort out images based on similarity, categorize them according to their creation date and archive them in a target folder

Florian Fetz 67 Dec 14, 2022
A simple note taking application written in Rust and GTK4

Rnote A simple note taking application written in Rust and GTK4. Rnote aims to be a simple but functional note taking application for freehand drawing

Felix Zwettler 3.4k Jan 5, 2023
Sycamore - A reactive library for creating web apps in Rust and WebAssembly

Sycamore What is Sycamore? Sycamore is a modern VDOM-less web library with fine-grained reactivity. Lightning Speed: Sycamore harnesses the full power

Sycamore 1.8k Jan 5, 2023