Export document frame faces as PNGs

This commit is contained in:
2026-06-05 18:54:27 +02:00
parent 693923b7bd
commit 6151fb7a3d
10 changed files with 201 additions and 20 deletions

View File

@@ -6007,6 +6007,10 @@ int plan_canvas_document_snapshot(int argc, char** argv)
std::size_t renderer_command_count = 0;
std::size_t renderer_upload_command_count = 0;
std::size_t renderer_transition_command_count = 0;
bool face_png_export_ready = false;
std::size_t face_png_export_faces = 0;
std::uint64_t face_png_export_bytes = 0;
std::size_t face_png_export_payloads = 0;
if (save_report.can_export_ppi) {
const auto exported = pp::app::export_document_canvas_save_snapshot_to_ppi(value);
if (!exported) {
@@ -6044,6 +6048,22 @@ int plan_canvas_document_snapshot(int argc, char** argv)
renderer_command_count = recorded_upload.value().command_count;
renderer_upload_command_count = recorded_upload.value().upload_command_count;
renderer_transition_command_count = recorded_upload.value().transition_command_count;
const auto face_pngs = pp::paint_renderer::export_document_frame_face_pngs(
pp::paint_renderer::DocumentFrameCompositeRequest {
.document = &document,
.frame_index = document.active_frame_index(),
.clear_color = {},
});
if (!face_pngs) {
print_error("plan-canvas-document-snapshot", face_pngs.status().message);
return 2;
}
face_png_export_ready = true;
face_png_export_faces = face_pngs.value().face_count;
face_png_export_bytes = face_pngs.value().encoded_bytes;
face_png_export_payloads = face_pngs.value().composite.face_payload_count;
}
std::cout << "{\"ok\":true,\"command\":\"plan-canvas-document-snapshot\""
@@ -6084,6 +6104,10 @@ int plan_canvas_document_snapshot(int argc, char** argv)
<< ",\"commands\":" << renderer_command_count
<< ",\"uploadCommands\":" << renderer_upload_command_count
<< ",\"transitionCommands\":" << renderer_transition_command_count
<< "},\"facePngExport\":{\"ready\":" << json_bool(face_png_export_ready)
<< ",\"faces\":" << face_png_export_faces
<< ",\"bytes\":" << face_png_export_bytes
<< ",\"facePayloads\":" << face_png_export_payloads
<< "}"
<< "}}\n";
return 0;