Export captured canvas snapshots through document writer
This commit is contained in:
@@ -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