Crate 结构
图形后端与平台层处于同一依赖层级,互不依赖,由核心框架按 feature 选择。
层级数字越小越靠底层;同一层的 crate 互不依赖。
框架 Feature
flor 默认不启用任何 feature。应用侧通常需要至少选择一个渲染后端,然后按需要启用布局、原子类、平台能力等 feature。
下面列的是 flor crate 暴露给用户使用的 feature。控件库可能会转发其中一部分 feature,但框架侧的名字以这里为准。平台能力的详细用法见 框架能力。
渲染后端
渲染后端负责把 Flor 的绘制命令提交到具体图形实现。应用至少启用一个后端;如果同时启用 GPU 后端和 tiny-skia,GPU 初始化失败后会继续尝试 CPU 后端。
direct2d 和 opengl 都会启用 gpu-render-backend 标记;同一次构建中选择一个 GPU 后端即可。tiny-skia 会启用 cpu-render-backend 标记,可以和一个 GPU 后端一起启用。
绘制能力
这些 feature 不是后端本身,而是在已启用的后端上增加绘制或资源能力。
基础形状、文本、图片等常规绘制能力由渲染后端提供,不需要额外打开 svg 或 memory-font。
布局与 class
布局 builder 的完整方法见 布局 Builder。class 的用法见 原子类,layout class 的语法清单见 layout class 语法。
平台能力
事件 builder 和 handler 里受 feature 控制的部分,见 事件 Builder 和 Handler API。
开发与内部选择
应用侧通常直接启用 direct2d、opengl 或 tiny-skia,不要手动只启用 cpu-render-backend / gpu-render-backend 这类内部标记。
各部分介绍
单纯使用框架需要了解的
默认你会和控件库配合使用,优先看这些内容:
- 初始化与消息循环
- 窗口创建与控制
- 支持跨线程的响应式信号系统
- 使用 class 或声明式 builder 配置布局和样式
- 按需开启框架 feature
开发控件需要了解的
默认你已经会使用 Flor 编写应用,再继续看这些内容:
View trait:新建控件需要实现的 trait,框架会托管生命周期、事件、绘制等流程。ViewId:控件的唯一 ID,也提供父子关系、焦点、滚动、可视状态、重绘等运行时访问入口。Resolver属性宏和结构体:通过枚举生成带控件状态的属性模板代码。Render API:框架提供大多数控件绘制够用的一套绘制 API;需要高级能力时,再按后端获取对应 handle 自定义处理。

