nicbarker

一个用C语言编写的高性能2D UI布局库,基于flex-box模型,单头文件、零依赖,支持Wasm,微秒级布局性能,提供渲染器无关的输出。

v0.14
发布于
2025年6月6日
18,188
星标
1,016
下载
同步于
1 天前

最新版本

v0.142025年6月6日 09:16
下载慢?可在上方随时切换镜像源

项目说明

项目概述

Clay(C Layout的缩写)是一个高性能的2D UI布局库,采用flex-box布局模型,能够实现复杂、响应式的UI布局,包括文本换行、滚动容器和宽高比缩放。它是一个单头文件库(约4800行代码),零依赖(不链接标准库),支持Wasm编译。Clay基于静态内存分配,无malloc/free操作,内存开销低(约3.5MB可容纳8192个布局元素)。

主要功能

  • 微秒级布局性能:高性能的布局计算
  • flex-box布局模型:支持复杂、响应式布局,包括文本换行、滚动容器和宽高比缩放
  • 过渡动画API:轻松实现布局动画
  • 单头文件:约4800行代码的clay.h,零依赖
  • Wasm支持:编译为约15KB的.wasm文件,可在浏览器中运行
  • 静态内存管理:基于arena的内存使用,无malloc/free,内存开销低
  • 声明式语法:类似React的嵌套声明式语法
  • 渲染器无关:输出排序后的渲染原语列表,可轻松在任意3D引擎中合成,甚至编译为HTML

适用人群

  • 需要高性能UI布局的C/C++开发者
  • 构建嵌入式UI、游戏UI或浏览器应用(通过Wasm)的开发者
  • 希望减少依赖、追求轻量级UI布局方案的用户

快速上手

  1. 下载或克隆clay.h文件
  2. 在一个文件中定义CLAY_IMPLEMENTATION后包含clay.h
  3. 实现文本测量函数和错误处理函数
  4. 初始化Clay并配置内存arena
  5. 使用声明式语法构建UI布局

核心优势

  • 单头文件、零依赖,易于集成
  • 微秒级布局性能,适合高性能场景
  • 支持Wasm,可在浏览器中运行
  • 渲染器无关,可适配任意渲染后端

系统要求

  • 操作系统:跨平台(C语言环境)

历史版本

排序