mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-10-27 03:06:57 -06:00
On screen, placed documents (PDF, .ai and .vectorcraft) draw from bitmaps made in the background. Each bitmap that became ready changed a generation in the canvas key, so the canvas rendered the whole frame again. The bitmaps share a 512 MiB budget, and making one dropped the least recently drawn others, even those on screen: with more than that on screen, every frame dropped a bitmap it drew and asked for it again, without end. A bitmap that could not be made (the file can't be read and there is no preview) also changed the generation and was asked for again in every frame. When a bitmap is ready, placed_document::made_between names its file, and the canvas renders again only where the objects showing it are (placed_area), as it does after an edit, when the frame shown was rendered on the UI thread and that part is at most half the frame. Art of a symbol, a graph design, a pattern or a brush that shows the file still renders the whole frame. Bitmaps drawn or made since a frame began are not dropped to make room for the ones it asks for. They stay past the budget up to 2 GiB. A bitmap that would take them past 2 GiB is not kept, and its file draws exactly at that zoom. A bitmap that can't be made shows the placeholder, does not change the generation, and is not asked for again. Docs: docs/target-app-parity.md.