4个版本
0.1.30 | 2022年6月13日 |
---|---|
0.1.29 | 2022年5月31日 |
0.1.28 | 2022年5月23日 |
0.1.26 | 2022年5月22日 |
在调试分类中排名第540
1.5MB
3.5K SLoC
🎨 acrylic
这是一个正在开发中的、跨平台、小型、受Web启发的用户界面工具包。
🪂 功能
- 对Web开发者来说感觉熟悉
- 支持模板
- 框架 + 像素完美
- 为提高可访问性而设计的输入API
- 纯且安全的Rust
no_std
兼容(目前支持很差)
🏗️ 进展(核心crate)
- ☑ XML解析
- ☑ 类flexbox布局
- ☑ 文本节点
- ☑ PNG图像
- ☑ 圆形容器
- ☑ 输入事件
- ☑ 事件处理器
- ☑ 文本编辑
- ☐ 滚动
- ☐ 富文本
- ☐ 外部链接
- ☐ 视频播放
- ☐ 音频播放
🪀 Live Demos
更多即将推出!
🧱 支持的平台
平台 | 链接 | 渲染 | 资源加载 | 事件处理 |
---|---|---|---|---|
web | acrylic-web | ☑ | ☑ | ☑ |
wayland | acrylic-wayland | ☑ | ☑ | |
x11 | 即将推出 | |||
gdi | ||||
fbdev | ||||
drmkms |
此外,还有acrylic-png用于调试目的。
⚡️ 快速入门
我们首先将为我们的应用程序创建目录
$ mkdir -p my-app/src my-app/assets
$ cd my-app
为您的用户界面创建基本布局
<!-- my-app/src/layout.xml -->
<x rem="1">
<inflate />
<y fixed="400" gap="10">
<inflate />
<png src="ferris.png" />
<x fixed="40" gap="10">
<inflate />
<p txt="Rust rocks!" />
<inflate />
</x>
<inflate />
</y>
<inflate />
</x>
有关这些标签和属性的文档,请参阅此处。
创建一个Rust文件,用于启动我们的应用程序
// my-app/src/app.rs
use platform::app;
use platform::log;
use platform::blit;
use acrylic::app::Application;
use acrylic::xml::ViewLoader;
app!("assets/", {
let loader = ViewLoader::new("default.xml");
Application::new(&log, &blit, (), loader)
});
下载示例PNG图像
$ curl https://rustacean.net/assets/rustacean-flat-happy.png > assets/ferris.png
由于我们最强大的平台是acrylic-web,我们将为其构建。安装相应的rustc目标、最小化http服务器和启动我们的应用程序的页面。
$ rustup target add wasm32-unknown-unknown
$ cargo install httpserv
$ curl https://raw.githubusercontent.com/NathanRoyer/acrylic/main/acrylic-web/index.html > index.html
$ httpserv > /dev/null &
为该平台创建cargo清单
# my-app/Cargo.toml
[package]
name = "my-app"
version = "0.1.0"
edition = "2021"
[lib]
crate-type = [ "cdylib" ]
path = "src/app.rs"
[dependencies]
acrylic = "0.1.30"
platform = { package = "acrylic-web", version = "0.1.30" }
构建
$ cargo build -r --target wasm32-unknown-unknown
然后转到 https://127.0.0.1:8080/#release。你应该能看到类似的内容
☕ 联系 & 贡献
联系
您可以通过 电子邮件 或在 Discord 上联系我: bitsneak#1889
。
您可以用这些方式提出关于这个项目的任何问题。
贡献
我们非常乐意接受所有通过 Github PR 的贡献。
如果您贡献 Rust 代码,请将所有依赖项放在功能之后;向这个 crate 或该项目中的另一个 crate 添加数十个依赖项可能是拒绝合并您的 PR 的原因。
👉 参考内容
🕯️ 许可证
- 代码采用 MIT 许可证
- 嵌入式 Noto 字体采用 SIL 开放字体许可证
依赖项
~6MB
~37K SLoC