Route live save snapshots through PPI policy

This commit is contained in:
2026-06-06 11:43:50 +02:00
parent 772dc7332b
commit 9d9b93abb1
8 changed files with 148 additions and 23 deletions

View File

@@ -949,6 +949,18 @@ const char* document_save_decision_name(pp::app::DocumentSaveDecision decision)
return "no-op";
}
const char* document_canvas_save_writer_action_name(pp::app::DocumentCanvasSaveWriterAction action) noexcept
{
switch (action) {
case pp::app::DocumentCanvasSaveWriterAction::use_document_ppi_writer:
return "use-document-ppi-writer";
case pp::app::DocumentCanvasSaveWriterAction::use_legacy_project_save:
return "use-legacy-project-save";
}
return "use-legacy-project-save";
}
const char* document_workflow_decision_name(pp::app::DocumentWorkflowDecision decision) noexcept
{
switch (decision) {
@@ -6180,6 +6192,7 @@ int plan_canvas_document_snapshot(int argc, char** argv)
const auto& document = value.document;
const auto& active_layer = document.layers()[document.active_layer_index()];
const auto save_report = pp::app::make_document_canvas_save_snapshot_report(value);
const auto save_writer_route = pp::app::plan_document_canvas_save_writer_route(save_report);
bool ppi_export_ready = false;
std::size_t ppi_export_bytes = 0;
std::uint32_t ppi_export_dirty_faces = 0;
@@ -6205,7 +6218,7 @@ int plan_canvas_document_snapshot(int argc, char** argv)
std::size_t depth_export_visible_layers = 0;
std::size_t depth_export_face_payloads = 0;
bool depth_export_requires_renderer_readback = value.requires_renderer_payload_readback;
if (save_report.can_export_ppi) {
if (save_writer_route.uses_document_ppi_writer) {
const auto exported = pp::app::export_document_canvas_save_snapshot_to_ppi(value);
if (!exported) {
print_error("plan-canvas-document-snapshot", exported.status().message);
@@ -6296,6 +6309,12 @@ int plan_canvas_document_snapshot(int argc, char** argv)
<< ",\"documentFacePayloads\":" << document.face_pixel_payload_count()
<< ",\"saveReport\":{\"payloadComplete\":" << json_bool(save_report.payload_complete)
<< ",\"canExportPpi\":" << json_bool(save_report.can_export_ppi)
<< "},\"saveWriterRoute\":{\"action\":\""
<< document_canvas_save_writer_action_name(save_writer_route.action)
<< "\",\"usesDocumentPpiWriter\":" << json_bool(save_writer_route.uses_document_ppi_writer)
<< ",\"fallbackReason\":\""
<< json_escape(std::string(save_writer_route.fallback_reason))
<< "\""
<< "},\"ppiExport\":{\"ready\":" << json_bool(ppi_export_ready)
<< ",\"bytes\":" << ppi_export_bytes
<< ",\"dirtyFaces\":" << ppi_export_dirty_faces