15 个版本

0.3.3 2023 年 8 月 11 日
0.3.2 2023 年 6 月 30 日
0.2.3 2022 年 12 月 17 日
0.2.2 2022 年 11 月 26 日
0.1.1 2022 年 4 月 17 日

#1083解析器实现

26 每月下载
3 个 crate 中使用 (通过 acrylic)

MIT 许可证

52KB
1K SLoC

Railway

Railway 是矢量动画图片的二进制文件格式。这是一个用于解析、计算和渲染此类图片的库。

generated.png

Railway 文件结构

在整个格式中,我们使用“配对”一词,表示一对浮点数。有关文件格式的更详尽描述,请参阅格式规范

虚拟机程序

在绘制之前,railway 文件有一个程序需要计算以产生结果。然后,这些结果被用作绘制阶段的坐标。使用堆栈来存储这些结果。

参数(参数)

值可以改变的配对。其中一些有名称,这意味着它们可以更改。没有名称的被视为程序的常量值。参数对应于堆栈的初始内容。

指令

具有一个输出和最多 3 个输入的数学运算。输入使用堆栈索引/偏移量指定。每条指令都会产生一个配对,并将其推入堆栈。

输出

一些结果可能对客户端代码很有用,例如,用于精确地在渲染的图片上覆盖某些内容。这些在文件的本节中指定,为名称和堆栈索引/偏移量。

绘制操作

一旦每条指令都已计算,绘制阶段就可以开始。它将使用堆栈中存在的配对,通过堆栈索引/偏移量引用。

一个 railway 文件包含多个“层”:背景三角形和蒙版的组合。

三角形

背景三角形指定每个点的 x/y 坐标和 RGBA 颜色。

蒙版

蒙版是由弧线和贝塞尔曲线(三次/二次/线性)构成的多边形。贝塞尔曲线使用 2、3 或 4 个点指定。弧线使用中心、两个绝对角度和两个半径指定。

剪辑

剪辑指定一个蒙版和一个背景三角形。在蒙版和三角形中同时存在的每个像素都将被绘制。

描边

笔画是使用指定颜色和图案绘制蒙版轮廓的过程。

依赖项

~1.5MB
~25K SLoC