#svg #generative-art #graphics #vector-graphics #compile-time

svg_composer

使用 Rust 编写的强类型 SVG 组合库。此库允许您在项目的编译时确保生成的 SVG 的正确性。

1 个不稳定版本

0.1.0 2022 年 8 月 23 日

#83数据格式

每月 46 次下载

自定义许可协议

44KB
1K SLoC

SVG Composer

使用 Rust 编写的强类型 SVG 组合库。此库允许您在项目的编译时确保生成的 SVG 的正确性。

该项目最初是为生成艺术项目 https://stegano.graphics 制作的。

使用此库在 stegano.graphics 中的渲染示例:渲染示例图片

免责声明

此库仍处于早期开发阶段,预计 API 将会有一些变化,主要是为了进一步加强类型检查。

示例

let svg_document = Document::new(
    vec![Box::new(
        Path::new()
            .set_stroke(Paint::from_color(Color::from_name(ColorName::Fuchsia)))
            .set_stroke_width(Size::from_length(10.0))
            .add_commands(vec![
                Box::new(MoveTo {
                    point: (11., 1.),
                    coordinate_type: CoordinateType::Absolute,
                }),
                Box::new(LineTo {
                    point: (10.0, 20.0),
                    option: LineToOption::Default,
                    coordinate_type: CoordinateType::Relative,
                }),
                Box::new(LineTo {
                    point: (-20.0, 0.0),
                    option: LineToOption::Default,
                    coordinate_type: CoordinateType::Relative,
                }),
                Box::new(End {}),
            ]),
    )],
    Some([0., 0., 100., 100.]),
);

// This rendering outputs a .svg file which can then be rendered as an image by an svg renderer
println!("{}", svg_document.render());

依赖项

~105KB