Move export snapshot target support to app core

This commit is contained in:
2026-06-06 11:10:26 +02:00
parent 7575f51c45
commit 41279c8743
8 changed files with 208 additions and 110 deletions

View File

@@ -913,10 +913,10 @@ if(TARGET pano_cli)
PASS_REGULAR_EXPRESSION "\"command\":\"plan-export-snapshot-route\".*\"kind\":\"layers-collection\".*\"payloadComplete\":false.*\"action\":\"use-legacy-export\".*\"usesDocumentSnapshotWriter\":false.*\"fallbackReason\":\"document snapshot still requires renderer payload readback\"")
add_test(NAME pano_cli_plan_export_snapshot_route_unsupported_target_smoke
COMMAND pano_cli plan-export-snapshot-route --kind depth --unsupported-target)
COMMAND pano_cli plan-export-snapshot-route --kind equirectangular --target-path D:/Paint/demo.tif)
set_tests_properties(pano_cli_plan_export_snapshot_route_unsupported_target_smoke PROPERTIES
LABELS "app;integration;desktop-fast"
PASS_REGULAR_EXPRESSION "\"command\":\"plan-export-snapshot-route\".*\"kind\":\"depth\".*\"targetSupported\":false.*\"action\":\"use-legacy-export\".*\"fallbackReason\":\"document snapshot export does not support this target\"")
PASS_REGULAR_EXPRESSION "\"command\":\"plan-export-snapshot-route\".*\"kind\":\"equirectangular\".*\"targetPath\":\"D:/Paint/demo.tif\".*\"targetSupported\":false.*\"action\":\"use-legacy-export\".*\"fallbackReason\":\"document snapshot export does not support this target\"")
add_test(NAME pano_cli_plan_export_menu_rejects_unknown
COMMAND pano_cli plan-export-menu --kind unknown)

View File

@@ -775,6 +775,56 @@ void export_snapshot_route_uses_document_writer_when_ready(pp::tests::Harness& h
PP_EXPECT(harness, plan.fallback_reason.empty());
}
void export_snapshot_target_support_covers_document_writer_formats(pp::tests::Harness& harness)
{
PP_EXPECT(
harness,
pp::app::document_export_snapshot_target_supported(
pp::app::DocumentExportExecutionKind::equirectangular_file,
"D:/Paint/demo.PNG"));
PP_EXPECT(
harness,
pp::app::document_export_snapshot_target_supported(
pp::app::DocumentExportExecutionKind::equirectangular_file,
"D:/Paint/demo.jpeg"));
PP_EXPECT(
harness,
!pp::app::document_export_snapshot_target_supported(
pp::app::DocumentExportExecutionKind::equirectangular_file,
"D:/Paint/demo.tif"));
PP_EXPECT(
harness,
pp::app::document_export_snapshot_target_supported(
pp::app::DocumentExportExecutionKind::layers_collection));
PP_EXPECT(
harness,
pp::app::document_export_snapshot_target_supported(
pp::app::DocumentExportExecutionKind::cube_faces));
PP_EXPECT(
harness,
!pp::app::document_export_snapshot_target_supported(
pp::app::DocumentExportExecutionKind::depth));
}
void export_snapshot_route_for_target_rejects_unsupported_extension(pp::tests::Harness& harness)
{
pp::app::DocumentCanvasSaveSnapshotReport report;
report.payload_complete = true;
report.can_export_ppi = true;
const auto plan = pp::app::plan_document_export_snapshot_route_for_target(
pp::app::DocumentExportExecutionKind::equirectangular_file,
report,
"D:/Paint/demo.tif",
true);
PP_EXPECT(harness, !plan.uses_document_snapshot_writer);
PP_EXPECT(harness, !plan.target_supported);
PP_EXPECT(
harness,
plan.fallback_reason == "document snapshot export does not support this target");
}
void export_snapshot_route_falls_back_for_pending_renderer_payloads(pp::tests::Harness& harness)
{
pp::app::DocumentCanvasSaveSnapshotReport report;
@@ -1187,6 +1237,12 @@ int main()
harness.run("export license disabled dialog preserves legacy warning", export_license_disabled_dialog_preserves_legacy_warning);
harness.run("export execution log messages cover legacy paths", export_execution_log_messages_cover_legacy_paths);
harness.run("export snapshot route uses document writer when ready", export_snapshot_route_uses_document_writer_when_ready);
harness.run(
"export snapshot target support covers document writer formats",
export_snapshot_target_support_covers_document_writer_formats);
harness.run(
"export snapshot route for target rejects unsupported extension",
export_snapshot_route_for_target_rejects_unsupported_extension);
harness.run(
"export snapshot route falls back for pending renderer payloads",
export_snapshot_route_falls_back_for_pending_renderer_payloads);