#png #user-interface #acrylic #image #cross-platform #apps

acrylic-png

通过渲染到PNG图像来调试acrylic应用程序

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

MITGPL-3.0-only

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。你应该能看到类似的内容

quickstart.png

☕ 联系 & 贡献

联系

您可以通过 电子邮件 或在 Discord 上联系我: bitsneak#1889

您可以用这些方式提出关于这个项目的任何问题。

贡献

我们非常乐意接受所有通过 Github PR 的贡献。

如果您贡献 Rust 代码,请将所有依赖项放在功能之后;向这个 crate 或该项目中的另一个 crate 添加数十个依赖项可能是拒绝合并您的 PR 的原因。

👉 参考内容

🕯️ 许可证

  • 代码采用 MIT 许可证
  • 嵌入式 Noto 字体采用 SIL 开放字体许可证

依赖项

~6MB
~37K SLoC