2 个不稳定版本
0.2.0 | 2022年6月5日 |
---|---|
0.1.0 | 2021年7月26日 |
#994 in 数学
180KB
4K SLoC
rbop
rbop (Rust Binary Operations) 是一个实现直观数学表达式编辑器的框架。
rbop 是 no_std
,所以你几乎可以在任何地方使用它。要为特定用例创建编辑器,你需要提供简单的绘图核心数学符号的方法实现。rbop 将使用这些实现来计算二维布局并在你选择的画布上绘制!
试用
rbop 附带一个简单的 ASCII 渲染器,用于示例代码 ascii_calc
中。如果你运行以下命令,将能够运行此示例并获得 rbop 编辑器的自然感觉:cargo build --examples --features examples
文档
目前还没有太多的正式文档。两个示例 ascii_calc
和 window_calc
有大量的注释,并且设计成按顺序阅读,以查看 rbop 的实际用法。
实现渲染器
参考 AsciiRenderer
以获得一个很好的示例。你需要实现 Renderer
特性,这将允许 rbop
- 使用
init
重置并准备你的图形表面 - 使用
size
确定特定符号绘制到画布上时的大小,以计算布局 - 使用
draw
在特定位置将符号绘制到画布上
不要覆盖 Renderer
中任何其他方法的默认实现。
节点树
有两种可用的节点类型。
一个 UnstructuredNode
树通过用户输入非常容易构建。水平输入保留为标记流,因此不需要考虑运算符优先级。
1+2*3 Fraction
----- / \
5 1,+,2,*,3 5
一个 StructuredNode
树不包含原始的标记流,树结构完全表达了正确的运算符优先级。
1+2*3 Fraction
----- / \
5 Add 5
/ \
1 Mult
/ \
2 3
可以通过 升级 将非结构化节点树转换为结构化节点树。某些功能,如评估,只能在结构化节点树上执行。
依赖项
~0.6–3.5MB
~69K SLoC