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 开发动机的概述及其用法的简短演示。 包含大量视觉和文本元素的代码 IDE 的屏幕截图 _用粘土构建的 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 }; // 可重用的组件只是常态