Export captured canvas snapshots through document writer
This commit is contained in:
@@ -1474,13 +1474,13 @@ if(TARGET pano_cli)
|
||||
COMMAND pano_cli plan-canvas-document-snapshot --width 128 --height 64 --layers 3 --frames 2 --current-layer 2 --current-frame 1 --hidden-layer 0 --alpha-locked-layer 2 --opacity 0.5 --blend-mode 4 --pending-face-payloads-per-layer 6)
|
||||
set_tests_properties(pano_cli_plan_canvas_document_snapshot_smoke PROPERTIES
|
||||
LABELS "app;document;integration;desktop-fast"
|
||||
PASS_REGULAR_EXPRESSION "\"command\":\"plan-canvas-document-snapshot\".*\"width\":128.*\"height\":64.*\"layers\":3.*\"frames\":2.*\"activeLayer\":2.*\"activeFrame\":1.*\"activeLayerName\":\"Layer 3\".*\"activeLayerOpacity\":0.5.*\"activeLayerBlend\":\"overlay\".*\"activeLayerAlphaLocked\":true.*\"pendingFacePayloads\":18.*\"metadataOnly\":true.*\"requiresRendererPayloadReadback\":true.*\"documentFacePayloads\":0.*\"saveReport\":\\{\"payloadComplete\":false,\"canExportPpi\":false\\}")
|
||||
PASS_REGULAR_EXPRESSION "\"command\":\"plan-canvas-document-snapshot\".*\"width\":128.*\"height\":64.*\"layers\":3.*\"frames\":2.*\"activeLayer\":2.*\"activeFrame\":1.*\"activeLayerName\":\"Layer 3\".*\"activeLayerOpacity\":0.5.*\"activeLayerBlend\":\"overlay\".*\"activeLayerAlphaLocked\":true.*\"pendingFacePayloads\":18.*\"metadataOnly\":true.*\"requiresRendererPayloadReadback\":true.*\"documentFacePayloads\":0.*\"saveReport\":\\{\"payloadComplete\":false,\"canExportPpi\":false\\}.*\"ppiExport\":\\{\"ready\":false,\"bytes\":0,\"dirtyFaces\":0\\}")
|
||||
|
||||
add_test(NAME pano_cli_plan_canvas_document_snapshot_payload_smoke
|
||||
COMMAND pano_cli plan-canvas-document-snapshot --width 128 --height 64 --layers 2 --frames 2 --current-layer 1 --current-frame 1 --pending-face-payloads-per-layer 2 --captured-face-payloads-per-layer 2)
|
||||
set_tests_properties(pano_cli_plan_canvas_document_snapshot_payload_smoke PROPERTIES
|
||||
LABELS "app;document;integration;desktop-fast"
|
||||
PASS_REGULAR_EXPRESSION "\"command\":\"plan-canvas-document-snapshot\".*\"layers\":2.*\"frames\":2.*\"activeLayer\":1.*\"activeFrame\":1.*\"pendingFacePayloads\":4.*\"capturedFacePayloads\":4.*\"metadataOnly\":false.*\"requiresRendererPayloadReadback\":false.*\"documentFacePayloads\":4.*\"saveReport\":\\{\"payloadComplete\":true,\"canExportPpi\":true\\}")
|
||||
PASS_REGULAR_EXPRESSION "\"command\":\"plan-canvas-document-snapshot\".*\"layers\":2.*\"frames\":2.*\"activeLayer\":1.*\"activeFrame\":1.*\"pendingFacePayloads\":4.*\"capturedFacePayloads\":4.*\"metadataOnly\":false.*\"requiresRendererPayloadReadback\":false.*\"documentFacePayloads\":4.*\"saveReport\":\\{\"payloadComplete\":true,\"canExportPpi\":true\\}.*\"ppiExport\":\\{\"ready\":true,\"bytes\":[1-9][0-9]*,\"dirtyFaces\":4\\}")
|
||||
|
||||
add_test(NAME pano_cli_plan_canvas_document_snapshot_no_canvas
|
||||
COMMAND pano_cli plan-canvas-document-snapshot --no-canvas)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "app_core/document_canvas.h"
|
||||
#include "assets/ppi_header.h"
|
||||
#include "test_harness.h"
|
||||
|
||||
#include <cstdint>
|
||||
@@ -89,6 +90,10 @@ void snapshot_plan_projects_canvas_metadata(pp::tests::Harness& harness)
|
||||
PP_EXPECT(harness, value.document.layers()[1].blend_mode == pp::paint::BlendMode::overlay);
|
||||
PP_EXPECT(harness, value.document.layers()[1].frames.size() == 1U);
|
||||
PP_EXPECT(harness, value.document.face_pixel_payload_count() == 0U);
|
||||
|
||||
const auto export_result = pp::app::export_document_canvas_save_snapshot_to_ppi(value);
|
||||
PP_EXPECT(harness, !export_result);
|
||||
PP_EXPECT(harness, export_result.status().code == pp::foundation::StatusCode::invalid_argument);
|
||||
}
|
||||
|
||||
void snapshot_plan_defaults_empty_names_and_frames(pp::tests::Harness& harness)
|
||||
@@ -117,6 +122,16 @@ void snapshot_plan_defaults_empty_names_and_frames(pp::tests::Harness& harness)
|
||||
PP_EXPECT(harness, !result.value().requires_renderer_payload_readback);
|
||||
PP_EXPECT(harness, result.value().document.layers()[0].name == "Layer 1");
|
||||
PP_EXPECT(harness, result.value().document.frames()[0].duration_ms == 100U);
|
||||
|
||||
const auto export_result = pp::app::export_document_canvas_save_snapshot_to_ppi(result.value());
|
||||
PP_EXPECT(harness, export_result);
|
||||
if (export_result) {
|
||||
const auto decoded = pp::assets::decode_ppi_project_images(export_result.value().bytes);
|
||||
PP_EXPECT(harness, decoded);
|
||||
if (decoded) {
|
||||
PP_EXPECT(harness, decoded.value().project.body.summary.dirty_face_count == 0U);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void snapshot_plan_attaches_captured_face_payloads(pp::tests::Harness& harness)
|
||||
@@ -177,6 +192,20 @@ void snapshot_plan_attaches_captured_face_payloads(pp::tests::Harness& harness)
|
||||
PP_EXPECT(harness, report.captured_face_payloads == 1U);
|
||||
PP_EXPECT(harness, report.payload_complete);
|
||||
PP_EXPECT(harness, report.can_export_ppi);
|
||||
|
||||
const auto export_result = pp::app::export_document_canvas_save_snapshot_to_ppi(result.value());
|
||||
PP_EXPECT(harness, export_result);
|
||||
if (export_result) {
|
||||
PP_EXPECT(harness, export_result.value().report.can_export_ppi);
|
||||
PP_EXPECT(harness, export_result.value().bytes.size() > 0U);
|
||||
|
||||
const auto decoded = pp::assets::decode_ppi_project_images(export_result.value().bytes);
|
||||
PP_EXPECT(harness, decoded);
|
||||
if (decoded) {
|
||||
PP_EXPECT(harness, decoded.value().project.body.summary.dirty_face_count == 1U);
|
||||
PP_EXPECT(harness, decoded.value().project.body.summary.rgba_face_payload_count == 1U);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void snapshot_plan_rejects_invalid_canvas_state(pp::tests::Harness& harness)
|
||||
|
||||
Reference in New Issue
Block a user