mirror of
https://github.com/storytold/deckcraft.git
synced 2026-10-24 02:27:08 -06:00
Union merges of the 2026-10-14 community PR wave stacked header lines and left near-duplicate rows, bullets and paragraphs with per-PR counts. Each progress doc now has one status line and one row per fact, with current numbers: breadth 84% over 191 features (cargo xtask parity, after removing duplicate Thesaurus/AutoCorrect/Artistic effects/Corrections checklist rows), 320 engine commands, 41 dialogs, 1,641 tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
84 lines
5.2 KiB
Markdown
84 lines
5.2 KiB
Markdown
# Hardware parity with PowerPoint
|
||
|
||
> **Last reviewed:** 2026-10-14 · **Last updated:** 2026-10-14 · **Change:** minor (community PR wave 2026-10-14: picture export DPI, Retina pixel grid (#184), twist to rotate, swipe to turn the page, pen pressure; duplicated rows and headers folded; previous: minor, IME input, #101) · **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 |
|
||
| Picture export resolution | 2 px per point, tagged so the file is the slide's size | PNG `pHYs` and JPEG density, 144 dpi at the default 2 px per point | same | same | same |
|
||
| High-DPI / Retina | yes | yes; editor slide rasters sit on the physical pixel grid (#184) | 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 | partial: pinch zoom does not keep the point under the pointer; a two-finger twist rotates the selected shapes |
|
||
| Two-finger swipe between slides | yes | yes: when the slide fits the window, and during the show. A zoomed slide still pans |
|
||
| Pen pressure and tilt for ink (Apple Pencil via Sidecar, Windows Ink) | yes | pressure scales the stroke when the pointer reports it (a mouse or a missing reading draws at the pen width); tilt is not read |
|
||
| 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 tilt, pinch zoom, trackpad gestures | 2–5 |
|
||
| Benchmark suite (`cargo xtask bench`) and a first performance pass | 6–12 (Performance dimension) |
|
||
| **Hardware total** | **~25–44** |
|
||
|
||
## Revision history
|
||
|
||
| Date | Change | Summary |
|
||
|---|---|---|
|
||
| 2026-10-14 | minor | PNG and JPEG slide export record 144 dpi at the default 2 pixels per point, so a Retina picture opens at the slide's size |
|
||
| 2026-10-13 | trivial | Editor slide rasters sit on the physical pixel grid (#184) |
|
||
| 2026-10-14 | trivial | Community PR wave folded: one row each for pinch/two-finger gestures and pen pressure |
|
||
| 2026-10-14 | minor | A two-finger twist on the trackpad rotates the selected shapes, as one undo step. Pinch-zoom is unchanged |
|
||
| 2026-10-14 | minor | A sideways trackpad swipe turns the page in Normal view (when the slide fits) and in the show. Pinch-zoom is unchanged |
|
||
| 2026-10-14 | minor | Pen pressure scales ink width; tilt, pinch zoom and trackpad gestures remain (estimate 3–6 h → 2–5 h) |
|
||
| 2026-10-12 | minor | IME input methods (#101) |
|
||
| 2026-10-10 | major | Created: rendering, media, displays, input and performance against PowerPoint 16.113 |
|