clay
18,409
Stars
748
Forks
102
Watchers
287
Open Issues
Zlib
许可证
C
语言
2024-07-21
创建时间
2026-05-20
最近更新
项目能做什么
基于 C 语言编写的高性能 UI 布局库。
来源:AI 基于仓库事实生成
· 内容以仓库实际 README 为准
使用说明 查看原始 README 原仓库文档
中文使用说明暂未生成。下面保留原仓库 README 摘录,命令与配置均以原文为准。
原始 README 摘录(英文原文,节选前 3000 字符)
# Clay, A UI Layout Library
**_Clay_** (short for **C Layout**) is a high performance 2D UI layout library.
### Major Features
- Microsecond layout performance
- Flex-box like layout model for complex, responsive layouts including text wrapping, scrolling containers and aspect ratio scaling
- Transition API for easy layout animations
- Single 4.8k LOC **clay.h** file with **zero** dependencies (including no standard library linking)
- Wasm support: compile with clang to a 15kb uncompressed **.wasm** file for use in the browser
- Static arena based memory use with no malloc / free, and low total memory overhead (e.g. ~3.5mb for 8192 layout elements).
- React-like nested declarative syntax
- Renderer agnostic: outputs a sorted list of rendering primitives that can be easily composited in any 3D engine, and even compiled to HTML (examples provided)
Take a look at the [clay website](https://nicbarker.com/clay) for an example of clay compiled to wasm and running in the browser, or others in the [examples directory](https://github.com/nicbarker/clay/tree/main/examples).
You can also watch the [introduction video](https://youtu.be/DYWTw19_8r4) for an overview of the motivation behind Clay's development and a short demo of its usage.
<img width="1394" alt="A screenshot of a code IDE with lots of visual and textual elements" src="https://github.com/user-attachments/assets/9986149a-ee0f-449a-a83e-64a392267e3d">
_An example GUI application built with clay_
## Quick Start
Download or clone clay.h and include it after defining `CLAY_IMPLEMENTATION` in one file.
```C
// Must be defined in one file, _before_ #include "clay.h"
#define CLAY_IMPLEMENTATION
#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) {
// See the Clay_ErrorData struct for more information
printf("%s", errorData.errorText.chars);
switch(errorData.errorType) {
// etc
}
}
// Example measure text function
static inline Clay_Dimensions MeasureText(Clay_StringSlice text, Clay_TextElementConfig *config, uintptr_t userData) {
// Clay_TextElementConfig contains members such as fontId, fontSize, letterSpacing etc
// Note: Clay_String->chars is not guaranteed to be null terminated
return (Clay_Dimensions) {
.width = text.length * config->fontSize, // <- this will only work for monospace fonts, see the renderers/ directory for more advanced text measurement
.height = config->fontSize
};
}
// Layout config is just a struct that can be declared statically, or inline
Clay_ElementDeclaration sidebarItemConfig = (Clay_ElementDeclaration) {
.layout = {
.sizing = { .width = CLAY_SIZING_GROW(0), .height = CLAY_SIZING_FIXED(50) }
},
.backgroundColor = COLOR_ORANGE
};
// Re-useable components are just norma
阅读完整原文
项目深度分析 AI 生成
可视化 UI 布局编辑器与代码生成器(SaaS / 桌面端)
| 产品构想 | 基于 Clay 的 Wasm 特性,开发一个浏览器内运行的所见即所得(WYSIWYG)UI 布局编辑器,支持拖拽生成 Clay 的嵌套声明式 C 代码,并实时预览不同屏幕尺寸下的响应式效果。 |
| 核心功能 | 拖拽式 Flexbox 布局编辑、实时 Wasm 预览、一键导出 clay.h 兼容的 C 代码、主题与组件库模板。 |
| 目标用户 | 使用 Clay 的 C/C++ 开发者、独立游戏开发者、需要快速原型设计的嵌入式团队。 |
| 难度/周期 | 中 · 1-3个月 · 成本:低(主要为个人开发时间与轻量静态托管成本) |
| 收费模式 | 免费基础版 + 付费专业版(支持自定义组件库、团队协作、多语言绑定导出如 Zig/Rust)。 |
| 竞争风险 | 受众相对垂直(C/C++ UI 开发者),付费意愿需验证;开发者可能更习惯手写代码。 |
| 依据 | 数据支持的判断 |
多引擎/多框架官方级渲染器适配包与商业组件库
| 产品构想 | Clay 本身渲染器无关,开发者需要自行对接渲染后端。提供开箱即用的高质量商业组件库(如数据表格、图表、代码编辑器、节点编辑器)及主流引擎(SDL3, Raylib, Sokol, WebGPU, Vulkan)的深度优化渲染后端。 |
| 核心功能 | 预置复杂 UI 控件(表格、树形控件、颜色选择器等)、高性能文本渲染与字体图集集成、开箱即用的多平台渲染后端。 |
| 目标用户 | 希望快速上线商业软件或游戏 UI 的中小型工作室、独立开发者。 |
| 难度/周期 | 中 · 2-4个月 · 成本:低 |
| 收费模式 | 一次性买断授权(按席位或按项目)或年度更新订阅。 |
| 竞争风险 | 开源社区可能会自发贡献免费渲染器,需在复杂组件和工程化完善度上建立壁垒。 |
| 依据 | AI推测 |
嵌入式与游戏行业技术咨询及定制集成服务
| 产品构想 | 针对需要将 Clay 集成到特定自研引擎、嵌入式硬件(如工业控制屏、车载仪表盘)或有严苛内存/性能要求的商业团队,提供付费的架构集成、性能调优和定制开发服务。 |
| 核心功能 | 定制内存分配策略适配、特定硬件渲染管线对接、旧有 UI 系统向 Clay 迁移。 |
| 目标用户 | 嵌入式设备厂商、自研引擎的游戏公司、工业软件团队。 |
| 难度/周期 | 高(需深厚 C 语言及图形学经验) · 持续服务 · 成本:极低(时间成本) |
| 收费模式 | 按小时/按项目收取高额技术咨询费或企业级 SLA 年费。 |
| 竞争风险 | 难以规模化,高度依赖个人时间与项目口碑。 |
| 依据 | 尚需验证的假设 |
跨语言绑定与生态工具链(Rust / Zig / Go)
| 产品构想 | 利用 Clay 单文件零依赖的特性,打造高质量、符合目标语言习惯的绑定库及配套开发工具(如热重载工具、调试器插件),并围绕生态提供企业支持或赞助。 |
| 核心功能 | 安全的 FFI 封装、宏/语法糖支持、UI 状态热重载调试器。 |
| 目标用户 | 使用 Zig、Rust、Go 等现代系统语言但需要轻量级 UI 布局的开发者。 |
| 难度/周期 | 中 · 1-2个月 · 成本:极低 |
| 收费模式 | GitHub Sponsors、企业赞助、配套调试工具收费。 |
| 竞争风险 | 纯开源绑定本身较难直接变现,通常作为引流或赞助手段。 |
| 依据 | AI推测 |
AI 基于仓库公开数据分析生成,含推测成分,不构成收益承诺。
报告会保存到 个人中心
竞品与相似项目 GitHub Search 真实检索
| 项目 | 中文简介 | Stars | 语言 |
|---|---|---|---|
| golang-standards/project-layout | 中文介绍暂未生成 Standard Go Project Layout |
56,744 | Makefile |
| op7418/guizang-ppt-skill | 中文介绍暂未生成 AI-agent Skill for generating polished HTML slide decks: edi |
29,733 | HTML |
| scwang90/SmartRefreshLayout | 中文介绍暂未生成 🔥下拉刷新、上拉加载、二级刷新、淘宝二楼、RefreshLayout、OverScroll,Android智能下拉刷新框 |
25,084 | Java |
以上为通过 GitHub 官方 Search API 检索的相似项目,功能差异与优劣势需进一步人工确认,配置 AI 后可生成对比分析。
项目优势与风险
| 技术成熟度 | 创建于 2024-07-21,最近推送 2026-05-20,发布过 5 个 Release |
| 社区活跃 | Star 18,409 / Fork 748 / Issue 287(数据支持,可自行核实) |
| 许可证 | Zlib |
| 主要风险 | 上游项目方向可能变化;同赛道竞争者较多(见竞品表);热度与需求不完全等价 |
安装与使用
此项目未提供 Docker 镜像,安装步骤以原仓库 README 为准(涉及依赖安装与环境配置,对新手门槛较高)。