Extract image import route planning

This commit is contained in:
2026-06-03 11:41:28 +02:00
parent 888e94a77c
commit ef50f4a361
8 changed files with 226 additions and 1 deletions

View File

@@ -0,0 +1,43 @@
#pragma once
#include "foundation/result.h"
namespace pp::app {
enum class DocumentImageImportAction {
import_equirectangular,
place_transform,
};
struct DocumentImageImportPlan {
int width = 0;
int height = 0;
DocumentImageImportAction action = DocumentImageImportAction::place_transform;
bool imports_equirectangular = false;
bool enters_transform_mode = false;
};
[[nodiscard]] inline pp::foundation::Result<DocumentImageImportPlan> plan_document_image_import(
int width,
int height) noexcept
{
if (width <= 0 || height <= 0) {
return pp::foundation::Result<DocumentImageImportPlan>::failure(
pp::foundation::Status::invalid_argument("image dimensions must be positive"));
}
const auto wide_equirect = static_cast<long long>(width) == static_cast<long long>(height) * 2LL;
const auto vertical_cube_strip = width == height / 6;
DocumentImageImportPlan plan;
plan.width = width;
plan.height = height;
plan.imports_equirectangular = wide_equirect || vertical_cube_strip;
plan.enters_transform_mode = !plan.imports_equirectangular;
plan.action = plan.imports_equirectangular
? DocumentImageImportAction::import_equirectangular
: DocumentImageImportAction::place_transform;
return pp::foundation::Result<DocumentImageImportPlan>::success(plan);
}
} // namespace pp::app