deckcraft/crates
Dmytro Smaha 3985d768e6
feat(pictures): animated GIFs play, with pause (media.gifPlay) (#39)
* feat(pictures): animated GIFs play, with pause (media.gifPlay)

GIF pictures used to show only their first frame. The renderer now decodes every frame (cached, capped at 256 MB and 1024 px a side) and draws the frame for each GIF's play time, passed in RenderOpts::gif_times; exports and thumbnails pass none and keep frame 1. The editor canvas and the slide show redraw only when a GIF reaches its next frame. A corner button on hover (or selection) pauses and resumes a GIF from the same frame, through the new media.gifPlay command.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* feat(pictures): animated GIFs play, with pause (media.gifPlay)

GIF pictures used to show only their first frame. The renderer now decodes every frame (cached, capped at 256 MB and 1024 px a side) and draws the frame for each GIF's play time, passed in RenderOpts::gif_times; exports and thumbnails pass none and keep frame 1. The editor canvas and the slide show redraw only when a GIF reaches its next frame. A corner button on hover (or selection) pauses and resumes a GIF from the same frame, through the new media.gifPlay command.

Also adds my entry to contributors/people.toml.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Animated GIFs: cap frames (1000), canvas (4096²), per-GIF (64 MB) and cache (192 MB) memory

A few MB of hostile GIF could decode to millions of tiny frames or a 100 Mpx canvas per frame,
and eight cached GIFs could hold 2 GB.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Brandon Thomas <echelon@gmail.com>
2026-10-10 06:21:29 -04:00
..
anim Morph: a changed geometry morphs its outline (a circle turns into a star) (#27) 2026-10-10 06:19:32 -04:00
av1 Rename SlideCraft to DeckCraft: crates, apps, binaries, app id, file extension (.deckcraft; .slidecraft files still open), packaging, docs; ROADMAP alpha and parity estimates 2026-10-06 01:46:40 -04:00
bitstream Fix integer overflow on hostile H.264/HEVC parameter sets (#2) 2026-10-09 10:28:31 -04:00
color Rename SlideCraft to DeckCraft: crates, apps, binaries, app id, file extension (.deckcraft; .slidecraft files still open), packaging, docs; ROADMAP alpha and parity estimates 2026-10-06 01:46:40 -04:00
engine feat(pictures): animated GIFs play, with pause (media.gifPlay) (#39) 2026-10-10 06:21:29 -04:00
fonts feat(text, fonts): UAX #9 BiDi and Arabic complex script typography engine (#4) 2026-10-09 10:48:26 -04:00
format Rename SlideCraft to DeckCraft: crates, apps, binaries, app id, file extension (.deckcraft; .slidecraft files still open), packaging, docs; ROADMAP alpha and parity estimates 2026-10-06 01:46:40 -04:00
geom Morph: a changed geometry morphs its outline (a circle turns into a star) (#27) 2026-10-10 06:19:32 -04:00
h264 Fix integer overflow on hostile H.264/HEVC parameter sets (#2) 2026-10-09 10:28:31 -04:00
hevc Fix integer overflow on hostile H.264/HEVC parameter sets (#2) 2026-10-09 10:28:31 -04:00
isobmff Rename SlideCraft to DeckCraft: crates, apps, binaries, app id, file extension (.deckcraft; .slidecraft files still open), packaging, docs; ROADMAP alpha and parity estimates 2026-10-06 01:46:40 -04:00
matroska Rename SlideCraft to DeckCraft: crates, apps, binaries, app id, file extension (.deckcraft; .slidecraft files still open), packaging, docs; ROADMAP alpha and parity estimates 2026-10-06 01:46:40 -04:00
mcp MCP: the export tool lists PDF and its layout options (#65) 2026-10-10 06:17:37 -04:00
media Rename SlideCraft to DeckCraft: crates, apps, binaries, app id, file extension (.deckcraft; .slidecraft files still open), packaging, docs; ROADMAP alpha and parity estimates 2026-10-06 01:46:40 -04:00
model Text: hyperlinks are drawn in the theme's hyperlink colour, underlined (#37) 2026-10-10 06:17:41 -04:00
ogg Rename SlideCraft to DeckCraft: crates, apps, binaries, app id, file extension (.deckcraft; .slidecraft files still open), packaging, docs; ROADMAP alpha and parity estimates 2026-10-06 01:46:40 -04:00
opus Rename SlideCraft to DeckCraft: crates, apps, binaries, app id, file extension (.deckcraft; .slidecraft files still open), packaging, docs; ROADMAP alpha and parity estimates 2026-10-06 01:46:40 -04:00
pdf Rename SlideCraft to DeckCraft: crates, apps, binaries, app id, file extension (.deckcraft; .slidecraft files still open), packaging, docs; ROADMAP alpha and parity estimates 2026-10-06 01:46:40 -04:00
pptx feat(text, fonts): UAX #9 BiDi and Arabic complex script typography engine (#4) 2026-10-09 10:48:26 -04:00
render feat(pictures): animated GIFs play, with pause (media.gifPlay) (#39) 2026-10-10 06:21:29 -04:00
text feat(text, fonts): UAX #9 BiDi and Arabic complex script typography engine (#4) 2026-10-09 10:48:26 -04:00
ui-egui feat(pictures): animated GIFs play, with pause (media.gifPlay) (#39) 2026-10-10 06:21:29 -04:00
vp9 Rename SlideCraft to DeckCraft: crates, apps, binaries, app id, file extension (.deckcraft; .slidecraft files still open), packaging, docs; ROADMAP alpha and parity estimates 2026-10-06 01:46:40 -04:00