GPU-accelerated UI toolkit (Vulkan)
git clone https://git.lucas.co/cce-ui.git
Run cce-ui in the browser and on macOS, with input-method support (#2)
The runner split into a portable driver, frame and pacer; a browser shell over WebGPU; a macOS shell over Vulkan on MoltenVK (type-checked only); and one input-method model for every shell and text widget.
.cargo/config.toml | 5 +
CLAUDE.md | 463 ++-
Cargo.lock | 35 +
Cargo.toml | 195 +-
examples/carve_union_demo.rs | 5 +-
examples/compute_native.rs | 19 +
examples/compute_probe/jobs.rs | 151 +
examples/compute_web.rs | 22 +
examples/demo_web.rs | 41 +
examples/frost_pair.rs | 5 +-
examples/grouped_recess_probe.rs | 5 +-
examples/probe/scene.rs | 147 +
examples/probe3d/scene.rs | 307 ++
examples/probe3d_native.rs | 15 +
examples/probe3d_web.rs | 37 +
examples/probe_native.rs | 10 +
examples/probe_web.rs | 52 +
examples/trigger_near_roll_warning.rs | 8 +-
scripts/check-mac | 18 +
scripts/check-wasm | 22 +
scripts/web-probe/browser.mjs | 44 +
scripts/web-probe/capture-app.mjs | 21 +
scripts/web-probe/capture.mjs | 19 +
scripts/web-probe/clipboard | 21 +
scripts/web-probe/clipboard.mjs | 85 +
scripts/web-probe/compare.py | 43 +
scripts/web-probe/compute | 21 +
scripts/web-probe/compute.html | 10 +
scripts/web-probe/compute.mjs | 16 +
scripts/web-probe/demo | 32 +
scripts/web-probe/demo.html | 30 +
scripts/web-probe/drive.mjs | 64 +
scripts/web-probe/ime | 22 +
scripts/web-probe/ime.mjs | 77 +
scripts/web-probe/page.html | 19 +
scripts/web-probe/probe3d | 33 +
scripts/web-probe/run | 30 +
src/backend/app.rs | 637 ++++
src/backend/appkit.rs | 242 ++
src/backend/dom.rs | 215 ++
src/backend/driver.rs | 1154 +++++++
src/backend/frame.rs | 366 +++
src/backend/mod.rs | 28 +-
src/backend/shell.rs | 426 +++
src/backend/tessellate.rs | 3057 ++++++++++++++++++
src/backend/text.rs | 727 +++++
src/backend/text_input.rs | 387 +--
src/backend/touch.rs | 229 +-
src/backend/window_runner.rs | 5751 +++------------------------------
src/bin/cce-ramp.rs | 8 +-
src/bin/cce-relief.rs | 8 +-
src/compute.rs | 253 ++
src/context.rs | 4 +-
src/{vk => draw}/glyph.wgsl | 0
src/draw/glyphs.rs | 356 ++
src/draw/images.rs | 169 +
src/draw/mod.rs | 221 ++
src/draw/rt.rs | 691 ++++
src/{vk => draw}/rt_bvh.wgsl | 0
src/{vk => draw}/rt_common.wgsl | 0
src/{vk => draw}/rt_denoise.wgsl | 0
src/{vk => draw}/rt_query.wgsl | 0
src/draw/scene.rs | 236 ++
src/{vk => draw}/scene3d.wgsl | 8 +-
src/{vk => draw}/scene3d_image.wgsl | 0
src/{vk => draw}/shader2d.wgsl | 11 +-
src/draw/shaders.rs | 49 +
src/engine.rs | 27 +-
src/icon.rs | 4 +-
src/ime.rs | 190 ++
src/input.rs | 5 +-
src/lib.rs | 214 +-
src/mac/mod.rs | 1065 ++++++
src/main.rs | 16 +-
src/motion.rs | 2 +-
src/scene/heightfield.rs | 4 +-
src/scene/material.rs | 2 +-
src/scene/paint.rs | 6 +
src/scene/relief_shade.rs | 2 +-
src/text_input.rs | 60 +-
src/vk/compute.rs | 157 +-
src/vk/core.rs | 136 +-
src/vk/image.rs | 208 +-
src/vk/mod.rs | 2 +-
src/vk/plate_probe.rs | 6 +-
src/vk/renderer.rs | 291 +-
src/vk/rt.rs | 686 +---
src/vk/scene.rs | 180 +-
src/vk/text.rs | 317 +-
src/web/compute.rs | 321 ++
src/web/mod.rs | 59 +
src/web/renderer.rs | 918 ++++++
src/web/rt.rs | 469 +++
src/web/scene.rs | 339 ++
src/web/shell.rs | 930 ++++++
src/widget/container/parameters_bg.rs | 5 +-
src/widget/container/treelist.rs | 4 +-
src/widget/core.rs | 212 +-
src/widget/display/graph.rs | 4 +-
src/widget/display/image_view.rs | 4 +-
src/widget/display/label.rs | 2 +-
src/widget/display/list_item.rs | 2 +-
src/widget/display/text_label.rs | 2 +-
src/widget/doc_editor/mod.rs | 199 +-
src/widget/input/button.rs | 6 +-
src/widget/input/color_selector.rs | 66 +-
src/widget/input/dropdown.rs | 10 +-
src/widget/input/ramp.rs | 4 +-
src/widget/input/slider.rs | 7 +-
src/widget/input/spinbox.rs | 5 +-
src/widget/input/text_box.rs | 239 +-
src/widget/line_edit.rs | 174 +-
src/widget/scroll_motion.rs | 2 +-
src/widget/shaping.rs | 8 +-
src/widget/side_swipe.rs | 3 +-
tests/lattice_probe.rs | 4 +-
tests/plate_golden.rs | 2 +-
117 files changed, 17352 insertions(+), 7610 deletions(-)