9 个版本
使用旧的 Rust 2015
0.2.2 | 2018 年 3 月 21 日 |
---|---|
0.2.1 | 2018 年 3 月 21 日 |
0.1.5 | 2018 年 3 月 12 日 |
#1807 在 Rust 模式
每月 237 次下载
17KB
337 行
svgmacro
一个用于编写 SVG 的 Rust 库。可以编写任何 SVG 元素。在 Rust 中定义的函数调用和变量可以在 SVG 中无障碍使用。
将以下内容添加到您的 Cargo.toml 文件中
svgmacro = "0.2.2"
要在您的模块中使用该软件包,只需添加
#[macro_use]
extern crate svgmacro;
示例
要使用宏,创建一个新的 String 来存储结果,并添加 "use std::fmt:Write" 以能够成功写入它。
use std::fmt::Write;
let mut out = String::new();
以下是一个使用宏的快速示例。SVG 元素和属性由其 SVG 参考中找到的常规名称定义。
use std::fmt::Write;
let mut out = String::new();
SVG!(&mut out,
svg (width="100" height="100") [
circle (cx="50" cy="50" r="30")
]
);
结果写入 out
<svg width="100" height="100">
<circle cx="50" cy="50" r="30"/>
</svg>
元素、括号和方括号
通过元素标签以纯文本形式定义元素,其属性在括号 () 中,其子元素在方括号 [] 中。这些都是有效语法(注意您不必同时使用方括号和括号)。
g (fill="red") [circle (cx="10" cy="10" r="10")]
g () [circle (cx="10" cy="10" r="10")]
g (fill="red") []
circle (cx="10" cy="10" r="10")
text ["Test"]
嵌套元素和多个属性
通过将新元素放入其父元素的 []-方括号内来嵌套元素。通过空格分隔它们来添加多个属性。
SVG!(&mut out,
svg [
g(size="12" color="red") [
circle(cx="10" cy="10" r="10")
circle(cx="20" cy="20" r="10")
]
g(color="red") [
circle(cx="20" cy="20" r="10")
]
]
);
Rust 表达式、函数和变量在 SVG 中的使用
通过将它们包裹在 {} 封闭式中处理变量和返回函数调用,用 @-符号表示表达式(如 void 函数、for 循环和 if 表达式(任何 Rust 代码都行)),并用分号终止。
use std::fmt::Write;
let mut out = String::new()
// Define your variables
let width = "200";
let height = "100";
SVG!(&mut out,
svg (width={width} height={height}) [
g(fill={get_color()}) [
@ create_cool_shape(&mut out);
]
g [
@ for i in 1..3 {
let radius = 15*i;
// It is important to call the macro again, when using it from inside and expression.
SVG!(&mut out, circle(cx={10*i} cy="10" r={radius}));
};
]
]
);