Add explicit PPI project writer

This commit is contained in:
2026-06-02 11:05:08 +02:00
parent 1bc90d88b4
commit b3710498f3
6 changed files with 262 additions and 75 deletions

View File

@@ -344,11 +344,11 @@ asset-level decode coverage, and
`pano_cli load-project` creates a `pp_document` projection with per-layer frame
counts, durations, and decoded face-pixel payload attachment when PPI image
payloads are present.
`pano_cli save-project` writes generated multi-layer, multi-frame PPI files
with layer opacity, blend mode, alpha lock, and visibility metadata through the
extracted `pp_assets` writer and round-trips metadata-only and test
dirty-face-payload variants through `load-project`; dirty-face payloads can be
targeted to explicit generated layer/frame slots for animation coverage.
`pp_assets` can write generated PPI projects with explicit per-layer names,
visibility, opacity, blend mode, alpha lock, per-layer frame durations, and
dirty-face payloads targeted to layer/frame/face slots. `pano_cli save-project`
exposes the generated writer for metadata-only and test dirty-face-payload
round-trips through `load-project`.
`pano_cli create-document` can create simple animation documents with explicit
frame count/duration. `pano_cli simulate-document-edits` exercises pure
layer metadata, frame reordering, active-index preservation, tiny face-payload
@@ -680,9 +680,10 @@ Results:
- `pp_assets_image_pixels_tests` passed, including RGBA8 PNG decode and corrupt
payload rejection.
- `pp_assets_ppi_header_tests` passed, including PPI thumbnail/body layout,
body summary validation, layer/frame indexing, dirty-face PNG payload
metadata validation, targeted layer/frame dirty-face writing, and decoded
dirty-face payload coverage.
body summary validation, layer/frame indexing, explicit per-layer metadata
and per-layer frame duration writing, dirty-face PNG payload metadata
validation, targeted layer/frame dirty-face writing, and decoded dirty-face
payload coverage.
- `pp_assets_settings_document_tests` passed.
- `pp_paint_brush_tests` passed.
- `pp_paint_blend_tests` passed.
@@ -801,6 +802,8 @@ Results:
through JSON automation and is covered by metadata-only and
dirty-face-payload save/load round-trip smoke tests. Full legacy canvas save
parity remains tracked by DEBT-0013.
- `pp_assets::create_ppi_project` exposes the underlying generated PPI writer
for non-uniform layer metadata and frame-duration extraction work.
- PowerShell package-smoke wrapper validates the Windows CMake app executable
and runtime `data/` copy.
- Android arm64 configured with NDK 29.0.14206865 through the platform-build