Vector Art: no warning from a redrawn picture, no Add shape (#293)

Architecture says when a replaced picture is freed while a shader still names it, Vector Art drops the Add shape button, Development carries the sum of 1668 e2e checks.
admin committed 2026-10-02 13:03:58 +02:00
1 parent 82a952c04b
commit 09d1f978ac
3 files changed
+12 -7

No files matched your search

+7 -3
@@ -176,9 +176,13 @@ src/viewport/ WorldViewport (the drawing of a world or a holder, the ba
symbolIcons (the SVG files in icons/, parsed once, in the theme's colours, #175),
FileLibrary (load once, never retry a failure, tell the listeners) ← TextureLibrary, FontLibrary;
generatedPictures (the drawn half of the picture path, #185: one picture per asset kept
under its revision key, the older one freed when the newer is drawn; who draws which asset
type, and the factory that looks an asset up in the open project) — no GPU, so it is measured
without a browser,
under its revision key, the older one freed when the newer is drawn — or, while a shader
still names it, right after the redraw that asked or on a later ask, #293: the mesh of an
object with a shader asset keeps its picture bound until it syncs, and a source destroyed
under it made Pixi warn "destroyed while still bound to a shader" with every change to the
drawing; `TextureLibrary` tells by the bind group listening for `change` on the source; who
draws which asset type, and the factory that looks an asset up in the open project) — no
GPU, so it is measured without a browser,
vectorArtPicture (the rasteriser of #129: the draw commands of
core/model/vectorPath painted onto a render texture of the canvas size, at twice its
resolution; registers vector art in both halves of the picture path; PaintCache keeps a
+1 -1
@@ -18,7 +18,7 @@ php tests/php/accounts.test.php # the API's accoun
# has and the web server's container has not (SKIP there)
php tests/php/snapshots.test.php # the snapshot store (#231), the same way
php tests/php/releases.test.php # the release store (#266), the same way
node tools/seed-e2e.mjs && node tools/e2e.mjs # 1667 editor checks, screenshots in /tmp/gm-e2e-*.png
node tools/seed-e2e.mjs && node tools/e2e.mjs # 1668 editor checks, screenshots in /tmp/gm-e2e-*.png
GM_STEPS=20 node tools/e2e.mjs # or 1-12, or 6,20 — a subset while working on one step
./e2e.sh start [GM_STEPS] # the same run detached, see below
./e2e.sh status # live progress, or the last run's result
+4 -3
@@ -135,8 +135,9 @@ Selecting a shape — in the tab or in the list — gives it its own rows:
**Outline** switch; with the switch on, **Line type** and Line width appear. The switch *gives and
takes away* the outline rather than hiding it, and a width of zero is no outline, so the row stops
at 0.1.
- **Add shape** sits below. With several shapes selected, **Delete shapes** next to it removes
them all.
- With several shapes selected, **Delete shapes** at the bottom removes them all. There is no
button that adds a shape (#293): a shape without points could not be given any, the Pen draws
a new one.
With several shapes selected, the order buttons and the style rows are those of the one clicked
last. A dragged colour or opacity slider is one undo step, not one per pixel of the drag. Selecting
@@ -148,7 +149,7 @@ selected.
**A layer** is a stack of shapes with a name and an eye. Every drawing has at least one, and the
layers are drawn bottom to top like the shapes on them.
- **One layer is the one worked on**, marked in the LAYERS list. The Pen and **Add shape** put new
- **One layer is the one worked on**, marked in the LAYERS list. The Pen puts new
shapes on it, and the SHAPES list shows what is on it. A click on a layer's row picks it;
selecting a shape, in the tab or in the list, picks the layer that shape stands on.
- **The eye** hides a layer. A hidden layer is neither in the tab nor in the picture a sprite wears,