17 if (source_image_path.empty()) {
18 spdlog::error(
"SidecarXmpPathStrategy::getXmpPathForImage: Source image path is empty.");
22 std::filesystem::path image_path_obj(source_image_path);
25 std::filesystem::path xmp_path_obj = image_path_obj;
26 xmp_path_obj +=
".xmp";
28 spdlog::debug(
"SidecarXmpPathStrategy::getXmpPathForImage: Mapped '{}' to XMP path: '{}'", source_image_path, xmp_path_obj.string());
29 return xmp_path_obj.string();
34 if (xmp_path.empty()) {
35 spdlog::error(
"SidecarXmpPathStrategy::getImagePathFromXmp: XMP path is empty.");
39 std::filesystem::path xmp_path_obj(xmp_path);
40 std::string xmp_ext = xmp_path_obj.extension().string();
43 if (xmp_ext.size() >= 4 && xmp_ext.substr(xmp_ext.size() - 4) ==
".xmp")
46 std::string original_ext = xmp_ext.substr(0, xmp_ext.size() - 4);
47 std::string original_stem = xmp_path_obj.stem().string();
48 std::string reconstructed_name = original_stem + original_ext;
50 std::filesystem::path original_path = xmp_path_obj.parent_path() / reconstructed_name;
51 spdlog::debug(
"SidecarXmpPathStrategy::getImagePathFromXmp: Reconstructed image path '{}' from XMP path: '{}'", original_path.string(), xmp_path);
52 return original_path.string();
54 spdlog::warn(
"SidecarXmpPathStrategy::getImagePathFromXmp: XMP path does not end with '.xmp': '{}'", xmp_path);