Commit Graph
32 Commits
Author SHA1 Message Date
iris-aiandiris 0f6a28b4dd Move text layout and rendering to Parley (#10)
Replace the cosmic-text path with Parley layout and Swash rasterization, backed by shared glyph-atlas pages. Shaping, editing, rasterization, and glyph rendering move together because they share the text buffer and rendered-glyph types; splitting them further would require a temporary renderer that is immediately removed.

This is reconstructed rather than replayed from the extraction history. It also fixes issues found during review:

- texture binding changes remain set when an atlas patch follows a new page
- pressing an empty field places a caret and accepts input
- selection motion delegates collapse behavior to Parley
- character deletion follows logical clusters rather than visual neighbors
- the unused root-level Swash dependency is omitted

Four public-behavior integration tests live in `tests/text_edit.rs`: empty-field input, multibyte IME preedit replacement, UTF-8-safe backspace, and selection replacement. The old twelve-test inline block and implementation-restating cases are omitted.

Every added source comment was manually reviewed. Comments that narrated implementation or history were removed; retained comments document cache/rasterization keys, GPU upload constraints, focus representation, bidi geometry, or IME semantics.

Known limitation: atlas pages currently grow without eviction. Each page is 4 MiB on CPU and GPU. An arbitrary cap would leave cached rendered-text UVs pointing at reused glyph slots, so bounding this safely needs a later generation/invalidation change.

This changes public text types and signatures. GPU glyph rendering is covered by compilation rather than a live-surface test.

Verified with:

- `cargo fmt --all --check`
- `cargo clippy --workspace --all-targets -- -D warnings`
- `cargo test --workspace` (four integration tests pass)

Cargo still reports inherited future-incompatibility notices for existing wgpu/winit dependencies; there are no current clippy warnings.

---------

Co-authored-by: iris <2+iris@noreply.localhost>
Reviewed-on: iris/iris#10
Reviewed-by: iris <2+iris@noreply.localhost>
Co-authored-by: AIris <4+iris-ai@noreply.localhost>
2026-09-13 03:39:23 -04:00
iris f2ac6f195f remove typed stuff / just specify rsc if needed 2026-01-03 18:06:05 -05:00
iris 59901b6580 tasks initial impl (still working on task_on trait method) 2026-01-03 16:26:23 -05:00
iris 462c0e6416 move event data out of widgetdata 2025-12-23 15:42:04 -05:00
iris 30bc55c78e remove state generic from a lot of things 2025-12-17 21:37:55 -05:00
iris ac9571b29f small changes 2025-12-16 18:38:06 -05:00
iris 486ed0ffd7 prelude macro visibility 2025-12-15 23:15:52 -05:00
iris 8d1a810483 macro goodness 2025-12-15 23:11:32 -05:00
iris 36668c82f4 strong & weak widgets 2025-12-11 07:16:06 -05:00
iris a85e129026 move everything out of layout 2025-12-11 05:48:29 -05:00
iris 2dc5b0f62c refactor project structure (start of redoing atomic branch without atomics) 2025-12-11 05:25:58 -05:00
iris db888416b6 add minimal example 2025-12-04 14:46:34 -05:00
iris f7b100e00c add default winit framework 2025-12-04 14:31:07 -05:00
iris 9deba3d9d7 fix wrapping text selection 2025-11-22 18:29:44 -05:00
iris 23c5abe5a9 crop text images that are too big 2025-11-21 18:18:28 -05:00
iris 61df088cc7 initial text wrapping impl (resizing will break) 2025-09-28 01:32:10 -04:00
iris 5445008528 add offset / scrolling + clipboard support 2025-09-27 21:13:00 -04:00
iris 95f049acb4 move widgets on draw if region size is same 2025-09-27 16:11:30 -04:00
iris 26c248dcba add module system and move sensor into core with it 2025-09-24 16:11:39 -04:00
iris 9d659b6afd actually use the text library for text editing (fully working I think but code isn't cleanest) 2025-09-15 14:34:57 -04:00
iris e9853120ce sort of fix text editing (better but still bad) 2025-09-11 17:12:11 -04:00
iris d4690401eb rename widget fn macros 2025-08-29 00:11:41 -04:00
iris e9037cdc14 contextless gaming 2025-08-25 19:21:39 -04:00
iris 74d01d14d4 fix reactivity 😭 + visual widget counter 2025-08-24 22:02:50 -04:00
iris 6bb6db32a6 REACTIVITY 2025-08-24 20:34:19 -04:00
iris 5ce6fca275 initial text impl 2025-08-23 21:15:39 -04:00
iris 7dbdcbba42 added underdeveloped but working image support (no freeing or samplers) 2025-08-22 23:07:31 -04:00
iris e41970287d TAG TECHNOLOGY 2025-08-14 12:21:26 -04:00
iris 848347e6b3 clean up 2025-08-10 19:10:26 -04:00
iris 577d62b1da small stuff 2025-08-10 14:35:01 -04:00
iris 58d9b32077 reactivity base 2025-08-10 02:05:35 -04:00
iris 56beeb80f3 initial commit 2025-08-08 18:22:52 -04:00