#html-css #cross-platform-gui #opengl #rendering-engine #html-rendering #desktop-applications #gtk

sciter-rs

Rust 对 Sciter 的绑定 - 可嵌入的 HTML/CSS/script 引擎(跨平台桌面GUI工具包)。也支持 DirectX/OpenGL。

43 个版本

使用旧的 Rust 2015

0.5.58 2022年2月21日
0.5.57 2021年7月3日
0.5.56 2021年4月28日
0.5.55 2021年3月29日
0.4.16 2017年3月13日

#68 in 图形API

Download history 96/week @ 2024-04-22 41/week @ 2024-04-29 43/week @ 2024-05-06 53/week @ 2024-05-13 110/week @ 2024-05-20 107/week @ 2024-05-27 55/week @ 2024-06-03 47/week @ 2024-06-10 37/week @ 2024-06-17 69/week @ 2024-06-24 25/week @ 2024-07-08 48/week @ 2024-07-15 27/week @ 2024-07-22 48/week @ 2024-07-29 24/week @ 2024-08-05

150 每月下载量
3 crates 中使用

MIT 许可证

375KB
7K SLoC

Sciter 的 Rust 绑定

GHA status AppVeyor status Travis status Minimum supported Rust version Documentation License Join the forums at https://sciter.com/forums

查看 此页面 以获取其他语言绑定(Delphi / D / Go / .NET / Python / Rust)。


简介

Sciter 是一个可嵌入的多平台 HTML/CSS/script 引擎,具有GPU加速渲染功能,旨在渲染现代桌面应用程序UI。它是一个紧凑的单个dll/dylib/so文件引擎,无需任何其他依赖项。

屏幕截图

查看桌面UI示例的 截图画廊 和通过 Rust GFXDirectX UI集成

描述

实际上,Sciter 是一个单库,包含以下内容

  • 基于 H-SMILE 核心(在 HTMLayout 中使用)的 HTML 和 CSS 渲染引擎,
  • Sciter.JS 中的 JavaScript
  • JavaScript 类似的 脚本引擎 – TIScript 的核心,它本身基于 c-smile 引擎,
  • 基于 Konstantin Knizhnik 的优秀数据库产品的持久 数据库(即 JSON DB)。
  • 使用支持的平台提供的本地图形原语实现的图形模块:Windows 7及以上版本的Direct2D,Windows XP的GDI+,MacOS的CoreGraphics,Linux/GTK的Cairo。每个平台还可以选择使用内置的Skia/OpenGL后端。
  • 网络通信模块,它依赖于平台HTTP客户端原语和/或Libcurl

内部包含以下模块:

  • CSS – CSS解析器和解析的CSS规则集合等。
  • HTML DOM – HTML解析器和DOM树实现。
  • 布局管理器 – 包含各种布局管理器 – 文本布局、默认块布局、弹性布局。还支持定位浮动元素。此模块负责进行布局计算。此模块还负责布局的渲染。
  • 输入行为 – 内置行为的集合 – “活动”DOM元素背后的代码:例如,输入、选择、文本区域等。
  • 脚本模块 – 源到字节码编译器和具有压缩垃圾回收器的虚拟机(VM)。此模块还包含标准类和对象的运行时实现:数组、对象、函数等。
  • 脚本DOM – 运行时类,将DOM和DOM视图(即窗口)暴露给脚本。
  • 图形抽象层 – 抽象图形实现,将上述模块与特定平台细节隔离开。
    • Direct2D/DirectWrite图形后端(Windows);
    • GDI+图形后端(Windows);
    • CoreGraphics后端(Mac OS X);
    • Cairo后端(所有Linux平台的GTK);
    • Skia/OpenGL后端(所有平台)
  • 核心原语 – 常用原语集合:字符串、数组、哈希图等。

Sciter支持HTML5规范中定义的所有标准元素,并有所扩展。CSS扩展以更好地支持桌面UI开发,例如流和弹性单位、垂直和水平对齐、操作系统主题。

Sciter SDK附带一个内置DOM检查器、脚本调试器和文档查看器的“浏览器”演示。

Sciter tools

请访问https://sciter.com网站及其文档资源,了解更多关于引擎原理、架构等信息。

入门指南

  1. 下载Sciter.TIS或Sciter.JS SDK并将其提取到某个位置。
  2. 将相应的目标平台二进制文件添加到PATH(bin.winbin.osxbin.lnx)。
  3. 如果您尚未安装,您需要安装GTK 3开发工具才能继续:sudo apt-get install libgtk-3-dev
  4. 构建crate并运行一个最小的sciter示例:cargo run --example minimal
  5. 对于您的应用程序,在Cargo.toml中添加以下依赖项:sciter-rs = "*"

简要概述

以下是一个最小的sciter应用程序

extern crate sciter;

fn main() {
    let mut frame = sciter::Window::new();
    frame.load_file("minimal.htm");
    frame.run_app();
}

它看起来像这样

Minimal sciter sample

互操作性

关于 tiscript 或 JavaScript 函数的调用

use sciter::{Element, Value};

let root = Element::from_window(hwnd);
let result: Value = root.call_function("namespace.name", &make_args!(1,"2",3));

从脚本中调用 Rust 可以实现如下

struct Handler;

impl Handler {
  fn calc_sum(&self, a: i32, b: i32) -> i32 {
    a + b
  }
}

impl sciter::EventHandler for Handler {
  dispatch_script_call! {
    fn calc_sum(i32, i32);
  }
}

我们还可以从 TIScript 访问此函数

// `view` represents the window where this script is running.
// `stdout` stream is a standard output stream (shell or debugger console, for example)

stdout.printf("2 + 3 = %d\n", view.calc_sum(2, 3));

或从 JavaScript

// `Window.this` represents the window where this script is running.
console.log("2 + 3", Window.this.xcall("calc_sum", 2, 3));

有关更复杂的使用,请查看 rust-sciter/examples 文件夹.

库文档.

目前支持什么

平台

  • Windows
  • OSX
  • Linux
  • Raspberry Pi

许可

绑定库在 MIT 许可证 下授权。Sciter 引擎有自己的 许可证条款SDK 使用最终用户许可协议

依赖项