@@ -1643,7 +1643,8 @@ namespace {
16431643
16441644 static nb::dict update_dng_sdk_file_from_file_to_python (
16451645 const std::string& source_path, const std::string& target_path,
1646- XmpSidecarFormat format, bool include_pointer_tags,
1646+ DngTargetMode dng_target_mode, XmpSidecarFormat format,
1647+ bool include_pointer_tags,
16471648 bool decode_makernote, bool decode_embedded_containers,
16481649 bool decompress, bool include_exif_app1, bool include_xmp_app1,
16491650 bool include_icc_app2, bool include_iptc_app13,
@@ -1662,6 +1663,7 @@ namespace {
16621663 = decode_embedded_containers;
16631664 options.prepare .decompress = decompress;
16641665 options.prepare .prepare .target_format = TransferTargetFormat::Dng;
1666+ options.prepare .prepare .dng_target_mode = dng_target_mode;
16651667 options.prepare .prepare .xmp_portable
16661668 = (format == XmpSidecarFormat::Portable);
16671669 options.prepare .prepare .include_exif_app1 = include_exif_app1;
@@ -1790,6 +1792,7 @@ namespace {
17901792
17911793 static nb::dict transfer_probe_to_python (
17921794 const std::string& path, TransferTargetFormat target_format,
1795+ DngTargetMode dng_target_mode,
17931796 XmpSidecarFormat format, bool include_pointer_tags,
17941797 bool decode_makernote, bool decode_embedded_containers, bool decompress,
17951798 bool include_exif_app1, bool include_xmp_app1, bool include_icc_app2,
@@ -1841,6 +1844,7 @@ namespace {
18411844 prepare_options.decode_embedded_containers = decode_embedded_containers;
18421845 prepare_options.decompress = decompress;
18431846 prepare_options.prepare .target_format = target_format;
1847+ prepare_options.prepare .dng_target_mode = dng_target_mode;
18441848 prepare_options.prepare .xmp_portable = (format
18451849 == XmpSidecarFormat::Portable);
18461850 prepare_options.prepare .include_exif_app1 = include_exif_app1;
@@ -4012,6 +4016,12 @@ NB_MODULE(_openmeta, m)
40124016 .value (" EmbeddedWins" ,
40134017 XmpExistingDestinationCarrierPrecedence::EmbeddedWins);
40144018
4019+ nb::enum_<DngTargetMode>(m, " DngTargetMode" )
4020+ .value (" ExistingTarget" , DngTargetMode::ExistingTarget)
4021+ .value (" TemplateTarget" , DngTargetMode::TemplateTarget)
4022+ .value (" MinimalFreshScaffold" ,
4023+ DngTargetMode::MinimalFreshScaffold);
4024+
40154025 nb::enum_<TransferTargetFormat>(m, " TransferTargetFormat" )
40164026 .value (" Jpeg" , TransferTargetFormat::Jpeg)
40174027 .value (" Tiff" , TransferTargetFormat::Tiff)
@@ -5077,6 +5087,7 @@ NB_MODULE(_openmeta, m)
50775087 m.def (
50785088 " transfer_probe" ,
50795089 [](const std::string& path, TransferTargetFormat target_format,
5090+ DngTargetMode dng_target_mode,
50805091 XmpSidecarFormat format, bool include_pointer_tags,
50815092 bool decode_makernote, bool decode_embedded_containers,
50825093 bool decompress, bool include_exif_app1, bool include_xmp_app1,
@@ -5115,7 +5126,8 @@ NB_MODULE(_openmeta, m)
51155126 XmpDestinationEmbeddedMode xmp_destination_embedded_mode,
51165127 XmpDestinationSidecarMode xmp_destination_sidecar_mode) {
51175128 return transfer_probe_to_python (
5118- path, target_format, format, include_pointer_tags,
5129+ path, target_format, dng_target_mode, format,
5130+ include_pointer_tags,
51195131 decode_makernote, decode_embedded_containers, decompress,
51205132 include_exif_app1, include_xmp_app1, include_icc_app2,
51215133 include_iptc_app13, xmp_include_existing,
@@ -5144,6 +5156,7 @@ NB_MODULE(_openmeta, m)
51445156 true );
51455157 },
51465158 " path" _a, " target_format" _a = TransferTargetFormat::Jpeg,
5159+ " dng_target_mode" _a = DngTargetMode::MinimalFreshScaffold,
51475160 " format" _a = XmpSidecarFormat::Portable,
51485161 " include_pointer_tags" _a = true , " decode_makernote" _a = false ,
51495162 " decode_embedded_containers" _a = true , " decompress" _a = true ,
@@ -5193,6 +5206,7 @@ NB_MODULE(_openmeta, m)
51935206 m.def (
51945207 " unsafe_transfer_probe" ,
51955208 [](const std::string& path, TransferTargetFormat target_format,
5209+ DngTargetMode dng_target_mode,
51965210 XmpSidecarFormat format, bool include_pointer_tags,
51975211 bool decode_makernote, bool decode_embedded_containers,
51985212 bool decompress, bool include_exif_app1, bool include_xmp_app1,
@@ -5231,7 +5245,8 @@ NB_MODULE(_openmeta, m)
52315245 XmpDestinationEmbeddedMode xmp_destination_embedded_mode,
52325246 XmpDestinationSidecarMode xmp_destination_sidecar_mode) {
52335247 return transfer_probe_to_python (
5234- path, target_format, format, include_pointer_tags,
5248+ path, target_format, dng_target_mode, format,
5249+ include_pointer_tags,
52355250 decode_makernote, decode_embedded_containers, decompress,
52365251 include_exif_app1, include_xmp_app1, include_icc_app2,
52375252 include_iptc_app13, xmp_include_existing,
@@ -5260,6 +5275,7 @@ NB_MODULE(_openmeta, m)
52605275 true );
52615276 },
52625277 " path" _a, " target_format" _a = TransferTargetFormat::Jpeg,
5278+ " dng_target_mode" _a = DngTargetMode::MinimalFreshScaffold,
52635279 " format" _a = XmpSidecarFormat::Portable,
52645280 " include_pointer_tags" _a = true , " decode_makernote" _a = false ,
52655281 " decode_embedded_containers" _a = true , " decompress" _a = true ,
@@ -5309,6 +5325,7 @@ NB_MODULE(_openmeta, m)
53095325 m.def (
53105326 " transfer_file" ,
53115327 [](const std::string& path, TransferTargetFormat target_format,
5328+ DngTargetMode dng_target_mode,
53125329 XmpSidecarFormat format, bool include_pointer_tags,
53135330 bool decode_makernote, bool decode_embedded_containers,
53145331 bool decompress, bool include_exif_app1, bool include_xmp_app1,
@@ -5350,7 +5367,8 @@ NB_MODULE(_openmeta, m)
53505367 bool overwrite_xmp_sidecar,
53515368 bool remove_destination_xmp_sidecar) {
53525369 return transfer_probe_to_python (
5353- path, target_format, format, include_pointer_tags,
5370+ path, target_format, dng_target_mode, format,
5371+ include_pointer_tags,
53545372 decode_makernote, decode_embedded_containers, decompress,
53555373 include_exif_app1, include_xmp_app1, include_icc_app2,
53565374 include_iptc_app13, xmp_include_existing,
@@ -5381,6 +5399,7 @@ NB_MODULE(_openmeta, m)
53815399 remove_destination_xmp_sidecar);
53825400 },
53835401 " path" _a, " target_format" _a = TransferTargetFormat::Jpeg,
5402+ " dng_target_mode" _a = DngTargetMode::MinimalFreshScaffold,
53845403 " format" _a = XmpSidecarFormat::Portable,
53855404 " include_pointer_tags" _a = true , " decode_makernote" _a = false ,
53865405 " decode_embedded_containers" _a = true , " decompress" _a = true ,
@@ -5433,6 +5452,7 @@ NB_MODULE(_openmeta, m)
54335452 m.def (
54345453 " unsafe_transfer_file" ,
54355454 [](const std::string& path, TransferTargetFormat target_format,
5455+ DngTargetMode dng_target_mode,
54365456 XmpSidecarFormat format, bool include_pointer_tags,
54375457 bool decode_makernote, bool decode_embedded_containers,
54385458 bool decompress, bool include_exif_app1, bool include_xmp_app1,
@@ -5474,7 +5494,8 @@ NB_MODULE(_openmeta, m)
54745494 bool overwrite_xmp_sidecar,
54755495 bool remove_destination_xmp_sidecar) {
54765496 return transfer_probe_to_python (
5477- path, target_format, format, include_pointer_tags,
5497+ path, target_format, dng_target_mode, format,
5498+ include_pointer_tags,
54785499 decode_makernote, decode_embedded_containers, decompress,
54795500 include_exif_app1, include_xmp_app1, include_icc_app2,
54805501 include_iptc_app13, xmp_include_existing,
@@ -5505,6 +5526,7 @@ NB_MODULE(_openmeta, m)
55055526 remove_destination_xmp_sidecar);
55065527 },
55075528 " path" _a, " target_format" _a = TransferTargetFormat::Jpeg,
5529+ " dng_target_mode" _a = DngTargetMode::MinimalFreshScaffold,
55085530 " format" _a = XmpSidecarFormat::Portable,
55095531 " include_pointer_tags" _a = true , " decode_makernote" _a = false ,
55105532 " decode_embedded_containers" _a = true , " decompress" _a = true ,
@@ -5599,7 +5621,8 @@ NB_MODULE(_openmeta, m)
55995621 m.def (
56005622 " update_dng_sdk_file_from_file" ,
56015623 [](const std::string& source_path, const std::string& target_path,
5602- XmpSidecarFormat format, bool include_pointer_tags,
5624+ DngTargetMode dng_target_mode, XmpSidecarFormat format,
5625+ bool include_pointer_tags,
56035626 bool decode_makernote, bool decode_embedded_containers,
56045627 bool decompress, bool include_exif_app1, bool include_xmp_app1,
56055628 bool include_icc_app2, bool include_iptc_app13,
@@ -5612,7 +5635,8 @@ NB_MODULE(_openmeta, m)
56125635 bool apply_iptc, bool synchronize_metadata,
56135636 bool cleanup_for_update) {
56145637 return update_dng_sdk_file_from_file_to_python (
5615- source_path, target_path, format, include_pointer_tags,
5638+ source_path, target_path, dng_target_mode, format,
5639+ include_pointer_tags,
56165640 decode_makernote, decode_embedded_containers, decompress,
56175641 include_exif_app1, include_xmp_app1, include_icc_app2,
56185642 include_iptc_app13, xmp_include_existing,
@@ -5623,6 +5647,7 @@ NB_MODULE(_openmeta, m)
56235647 cleanup_for_update);
56245648 },
56255649 " source_path" _a, " target_path" _a,
5650+ " dng_target_mode" _a = DngTargetMode::MinimalFreshScaffold,
56265651 " format" _a = XmpSidecarFormat::Portable,
56275652 " include_pointer_tags" _a = true , " decode_makernote" _a = false ,
56285653 " decode_embedded_containers" _a = true , " decompress" _a = true ,
0 commit comments