开源推荐
morning
GitHub 热门项目:粘土
2026-05-28
1 阅读
GitHub Trending
GitHub项目:粘土
仓库地址:https://github.com/nicbarker/clay
星级:17331 | 作者:尼克巴克
项目描述:C 语言的高性能 UI 布局库。
===================================================
自述文件内容:
# Clay,一个 UI 布局库
**_Clay_**(**C Layout** 的缩写)是一个高性能 2D UI 布局库。
### 主要特点
- 微秒级布局性能
- 类似于 Flex-box 的布局模型,适用于复杂的响应式布局,包括文本换行、滚动容器和纵横比缩放
- 用于简单布局动画的转换 API
- 具有**零**依赖项的单个 4.8k LOC **clay.h** 文件(包括无标准库链接)
- Wasm 支持:使用 clang 编译为 15kb 未压缩 **.wasm** 文件以在浏览器中使用
- 基于静态竞技场的内存使用,没有 malloc / free,并且总内存开销较低(例如,8192 个布局元素约为 3.5mb)。
- 类似 React 的嵌套声明语法
- 与渲染器无关:输出渲染基元的排序列表,可以在任何 3D 引擎中轻松合成,甚至编译为 HTML(提供示例)
请查看 [clay 网站](https://nicbarker.com/clay),获取编译为 wasm 并在浏览器中运行的clay 示例,或者查看 [examples 目录](https://github.com/nicbarker/clay/tree/main/examples) 中的其他示例。
您还可以观看[介绍视频](https://youtu.be/DYWTw19_8r4),了解 Clay 开发动机的概述及其用法的简短演示。
_用粘土构建的 GUI 应用程序示例_
## 快速入门
下载或克隆clay.h,并在一个文件中定义“CLAY_IMPLMENTATION”后将其包含在内。
``C
// 必须在一个文件中定义,_before_ #include "clay.h"
#定义粘土实现
#include“../../clay.h”
const Clay_Color COLOR_LIGHT = (Clay_Color) {224, 215, 210, 255};
const Clay_Color COLOR_RED = (Clay_Color) {168, 66, 28, 255};
const Clay_Color COLOR_ORANGE = (Clay_Color) {225, 138, 50, 255};
void HandleClayErrors(Clay_ErrorData errorData) {
// 有关详细信息,请参阅 Clay_ErrorData 结构
printf("%s", errorData.errorText.chars);
开关(错误数据.错误类型){
// 等等
}
}
// 测量文本函数示例
静态内联 Clay_Dimensions MeasureText(Clay_StringSlice 文本, Clay_TextElementConfig *config, uintptr_t userData) {
// Clay_TextElementConfig 包含 fontId、fontSize、letterSpacing 等成员
// 注意:Clay_String->chars 不保证以 null 终止
返回(Clay_Dimensions){
.width = text.length * config->fontSize, // <- 这只适用于等宽字体,请参阅 renderers/ 目录以获取更高级的文本测量
.height = 配置->字体大小
};
}
// 布局配置只是一个可以静态或内联声明的结构体
Clay_ElementDeclaration sidebarItemConfig = (Clay_ElementDeclaration) {
.布局={
.sizing = { .width = CLAY_SIZING_GROW(0), .height = CLAY_SIZING_FIXED(50) }
},
.backgroundColor = COLOR_ORANGE
};
// 可重用的组件只是常态