mirror of
https://github.com/storytold/deckcraft.git
synced 2026-10-25 02:57:01 -06:00
* Text: input method composition as commands, one undo step per composition (#101) text.compose shows an input method's preedit in place at the insertion point and replaces it on each update; an empty preedit cancels and restores the text and selection. text.commit replaces the composition with the result as one undo step. Any other edit, key or click settles an open composition first. The composition is underlined under the baseline (thicker under the part being converted), and the caret line is measured for empty placeholders too. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * UI: Korean, Japanese and Chinese input and interface text (#101) The slide turns the input method on while it takes typing, with the candidate window at the caret, and forwards egui Ime events to text.compose / text.commit, so a Korean keyboard composes syllables instead of separate jamo. Interface text in scripts the interface fonts lack (Hangul, Simplified Chinese, Thai...) borrows faces from the font database (installed fonts such as Malgun Gothic; nothing bundled): file names, titles, notes, outline, sections, comments and typed text. Ported and widened from WordCraft's #565/#840 fallback. The notes pane keeps text typed before focus leaves in the same frame (Escape, another slide). Control channel: ui.ime. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
76 lines
3.8 KiB
Markdown
76 lines
3.8 KiB
Markdown
# Hardware parity with PowerPoint
|
||
|
||
> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-12 · **Change:** minor (IME input, #101; previous: major, created from the renderer, media and windowing code) · **Target:** Microsoft PowerPoint for Mac 16.113 (Microsoft 365); PowerPoint for Windows where noted
|
||
|
||
What hardware PowerPoint uses and what DeckCraft uses, per platform. Dimension score: **~40%
|
||
ready** (estimated), **25–45 h** to parity. Performance (unmeasured, ~55%) is tracked here too
|
||
because it mostly follows from hardware use.
|
||
|
||
## Graphics and rendering
|
||
|
||
| Feature | PowerPoint | DeckCraft macOS | DeckCraft Windows | DeckCraft Linux/BSD | DeckCraft web |
|
||
|---|---|---|---|---|---|
|
||
| Window compositing on the GPU | Metal / DirectX | wgpu (Metal) | wgpu, DX12 only by default (#16) | wgpu (Vulkan, GL) | WebGPU, WebGL2 fallback |
|
||
| Slide rasterization | GPU | **CPU** (`vello_cpu`) | CPU | CPU | CPU (wasm) |
|
||
| Transitions and Morph frames | GPU | CPU-rendered slide images composited as textured quads on the GPU | same | same | same |
|
||
| High-DPI / Retina | yes | yes | yes | yes | yes |
|
||
| Wide gamut / HDR display | partly (P3 images) | no (sRGB) | no | no | no |
|
||
| Startup on all GPUs | yes | yes | **no**: crashes in some Intel/AMD drivers (#40, #59) | not reported | n/a |
|
||
| Software fallback when no GPU | yes (WARP on Windows) | no | no | no | no |
|
||
|
||
## Media
|
||
|
||
| Feature | PowerPoint | DeckCraft |
|
||
|---|---|---|
|
||
| Video decode | Hardware (AVFoundation/VideoToolbox, Media Foundation) | Software only: pure-Rust H.264, HEVC, VP9, AV1 (`crates/h264`, `hevc`, `vp9`, `av1`) |
|
||
| 4K video in the show | smooth on hardware decode | unmeasured; likely CPU-bound |
|
||
| Audio output | Core Audio / WASAPI | `cpal` (Core Audio, WASAPI, ALSA); browser Web Audio |
|
||
| Microphone (record audio, narration) | yes | no |
|
||
| Camera (Cameo, record with camera) | yes | no |
|
||
| Screen recording | yes | no |
|
||
|
||
## Displays
|
||
|
||
| Feature | PowerPoint | DeckCraft |
|
||
|---|---|---|
|
||
| Detect the projector, show on it, presenter view on the laptop | yes | **no**: the show goes full screen on the current display; presenter view opens as a normal window (egui viewport) |
|
||
| Swap displays, choose the monitor in Set Up Show | yes | no |
|
||
| Mirroring-aware behaviour | yes | no |
|
||
|
||
## Input devices
|
||
|
||
| Feature | PowerPoint | DeckCraft |
|
||
|---|---|---|
|
||
| Keyboard and presentation clickers (Page Up/Down, B, Esc) | yes | yes |
|
||
| Mouse and trackpad scroll | yes | yes |
|
||
| Pinch to zoom, two-finger gestures | yes | no |
|
||
| Pen pressure and tilt for ink (Apple Pencil via Sidecar, Windows Ink) | yes | no: ink strokes have constant width |
|
||
| Touch screens (Windows) | yes | basic pointer only |
|
||
| IME input methods for CJK text | yes | yes: composed in place, underlined, candidate window at the caret (#101) |
|
||
| Dictation | yes (macOS) | no |
|
||
|
||
## Performance
|
||
|
||
Nothing is measured against PowerPoint yet: no benchmark of open time, render time per slide,
|
||
show frame rate or memory exists in `xtask`. Known: slides rasterize on the CPU, Morph aligns
|
||
outlines every frame (#67, fix open), and the decoders run in software.
|
||
|
||
## Estimates
|
||
|
||
| Work | Hours |
|
||
|---|---|
|
||
| Presenter view on the right display, choose monitor, swap | 3–5 |
|
||
| GPU slide rasterization (vello's GPU/hybrid path) | 12–20 |
|
||
| Hardware video decode (copy FilmCraft's VideoToolbox / Media Foundation / VA-API paths) | 8–14 |
|
||
| Windows GPU startup robustness: backend probing, software fallback (#40, #59) | 4–8 (counted under Stability) |
|
||
| Pen pressure, pinch zoom | 3–6 |
|
||
| Benchmark suite (`cargo xtask bench`) and a first performance pass | 6–12 (Performance dimension) |
|
||
| **Hardware total** | **~26–45** |
|
||
|
||
## Revision history
|
||
|
||
| Date | Change | Summary |
|
||
|---|---|---|
|
||
| 2026-10-12 | minor | IME input methods (#101) |
|
||
| 2026-10-10 | major | Created: rendering, media, displays, input and performance against PowerPoint 16.113 |
|