From e450ab411e7789c3eaef5fc456ca4e960abb6b65 Mon Sep 17 00:00:00 2001 From: Stefan Oltmann Date: Thu, 30 Jan 2025 11:47:33 +0100 Subject: [PATCH 1/5] Fix: setLocation(null) should delete all known fields. + Unit Test --- .../kotlin/com/ashampoo/xmp/XMPMeta.kt | 69 ++++++++----------- .../kotlin/com/ashampoo/xmp/WriteXmpTest.kt | 66 ++++++++++++++++++ 2 files changed, 96 insertions(+), 39 deletions(-) diff --git a/src/commonMain/kotlin/com/ashampoo/xmp/XMPMeta.kt b/src/commonMain/kotlin/com/ashampoo/xmp/XMPMeta.kt index bed32fc..3574932 100644 --- a/src/commonMain/kotlin/com/ashampoo/xmp/XMPMeta.kt +++ b/src/commonMain/kotlin/com/ashampoo/xmp/XMPMeta.kt @@ -2018,7 +2018,7 @@ public class XMPMeta internal constructor() { } /* - * For missing values fall back to the Photoshop namespace. + * For missing values fall back to older places. */ if (location.isNullOrBlank()) @@ -2062,13 +2062,21 @@ public class XMPMeta internal constructor() { xmpLocation: XMPLocation? ) { - /* Delete existing entries, if any */ + /* Delete existing entries */ + deleteProperty(XMPConst.NS_IPTC_EXT, XMPConst.XMP_IPTC_EXT_LOCATION_SHOWN) + deleteProperty(XMPConst.NS_IPTC_CORE, "Location") + deleteProperty(XMPConst.NS_PHOTOSHOP, "City") + deleteProperty(XMPConst.NS_PHOTOSHOP, "State") + deleteProperty(XMPConst.NS_PHOTOSHOP, "Country") if (xmpLocation == null) return - /* Create a new array property. */ + /* + * Write Iptc4xmpExt:LocationShown + */ + setProperty( XMPConst.NS_IPTC_EXT, XMPConst.XMP_IPTC_EXT_LOCATION_SHOWN, @@ -2076,7 +2084,6 @@ public class XMPMeta internal constructor() { arrayOptions ) - /* Append empty entry */ appendArrayItem( schemaNS = XMPConst.NS_IPTC_EXT, arrayName = XMPConst.XMP_IPTC_EXT_LOCATION_SHOWN, @@ -2112,8 +2119,7 @@ public class XMPMeta internal constructor() { ) } - if (!xmpLocation.location.isNullOrBlank()) { - + if (!xmpLocation.location.isNullOrBlank()) setStructField( schemaNS = XMPConst.NS_IPTC_EXT, structName = XMPConst.XMP_IPTC_EXT_LOCATION_SHOWN + "[1]", @@ -2122,15 +2128,7 @@ public class XMPMeta internal constructor() { fieldValue = xmpLocation.location ) - setProperty( - schemaNS = XMPConst.NS_IPTC_CORE, - propName = "Location", - propValue = xmpLocation.location - ) - } - - if (!xmpLocation.city.isNullOrBlank()) { - + if (!xmpLocation.city.isNullOrBlank()) setStructField( schemaNS = XMPConst.NS_IPTC_EXT, structName = XMPConst.XMP_IPTC_EXT_LOCATION_SHOWN + "[1]", @@ -2139,15 +2137,7 @@ public class XMPMeta internal constructor() { fieldValue = xmpLocation.city ) - setProperty( - schemaNS = XMPConst.NS_PHOTOSHOP, - propName = "City", - propValue = xmpLocation.city - ) - } - - if (!xmpLocation.state.isNullOrBlank()) { - + if (!xmpLocation.state.isNullOrBlank()) setStructField( schemaNS = XMPConst.NS_IPTC_EXT, structName = XMPConst.XMP_IPTC_EXT_LOCATION_SHOWN + "[1]", @@ -2156,15 +2146,7 @@ public class XMPMeta internal constructor() { fieldValue = xmpLocation.state ) - setProperty( - schemaNS = XMPConst.NS_PHOTOSHOP, - propName = "State", - propValue = xmpLocation.state - ) - } - - if (!xmpLocation.country.isNullOrBlank()) { - + if (!xmpLocation.country.isNullOrBlank()) setStructField( schemaNS = XMPConst.NS_IPTC_EXT, structName = XMPConst.XMP_IPTC_EXT_LOCATION_SHOWN + "[1]", @@ -2173,12 +2155,21 @@ public class XMPMeta internal constructor() { fieldValue = xmpLocation.country ) - setProperty( - schemaNS = XMPConst.NS_PHOTOSHOP, - propName = "Country", - propValue = xmpLocation.country - ) - } + /* + * Write older fields for completeness + */ + + if (!xmpLocation.location.isNullOrBlank()) + setProperty(XMPConst.NS_IPTC_CORE, "Location", xmpLocation.location) + + if (!xmpLocation.city.isNullOrBlank()) + setProperty(XMPConst.NS_PHOTOSHOP, "City", xmpLocation.city) + + if (!xmpLocation.state.isNullOrBlank()) + setProperty(XMPConst.NS_PHOTOSHOP, "State", xmpLocation.state) + + if (!xmpLocation.country.isNullOrBlank()) + setProperty(XMPConst.NS_PHOTOSHOP, "Country", xmpLocation.country) } public fun getTitle(): String? { diff --git a/src/commonTest/kotlin/com/ashampoo/xmp/WriteXmpTest.kt b/src/commonTest/kotlin/com/ashampoo/xmp/WriteXmpTest.kt index c73876b..7d2be0b 100644 --- a/src/commonTest/kotlin/com/ashampoo/xmp/WriteXmpTest.kt +++ b/src/commonTest/kotlin/com/ashampoo/xmp/WriteXmpTest.kt @@ -412,6 +412,72 @@ class WriteXmpTest { ) } + /** + * Create an XMP only containing location info. + */ + @OptIn(ExperimentalStdlibApi::class) + @Test + fun testLocationRemovalXmp() { + + /* language=XML */ + val originalXmp = """ + + + + + + + + + + + Ashampoo GmbH & Co. KG + + + + + + + + + + + """.trimIndent() + + val xmpMeta = XMPMetaFactory.parseFromString(originalXmp) + + xmpMeta.setLocation(null) + + val actualXmp = XMPMetaFactory.serializeToString(xmpMeta, xmpSerializeOptionsCompact) + + /* language=XML */ + val expectedXmp = """ + + + + + + + + """.trimIndent() + + assertEquals( + expected = expectedXmp, + actual = actualXmp + ) + } + /** * Create an XMP only containing title & description. */ From d7eeb538d6c0fa8b31479ae69755237566a820d6 Mon Sep 17 00:00:00 2001 From: Stefan Oltmann Date: Thu, 30 Jan 2025 11:50:48 +0100 Subject: [PATCH 2/5] Removed debug println --- src/commonTest/kotlin/com/ashampoo/xmp/ReadXmpTest.kt | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/commonTest/kotlin/com/ashampoo/xmp/ReadXmpTest.kt b/src/commonTest/kotlin/com/ashampoo/xmp/ReadXmpTest.kt index 9ad6d7d..5e5370d 100644 --- a/src/commonTest/kotlin/com/ashampoo/xmp/ReadXmpTest.kt +++ b/src/commonTest/kotlin/com/ashampoo/xmp/ReadXmpTest.kt @@ -222,8 +222,6 @@ class ReadXmpTest { """.trimIndent() - println(testXmp) - val xmpMeta = XMPMetaFactory.parseFromString(testXmp) assertEquals( From b9bd4550be766b6d8f5432657771c6cd05ec9b3e Mon Sep 17 00:00:00 2001 From: Stefan Oltmann Date: Thu, 30 Jan 2025 11:51:10 +0100 Subject: [PATCH 3/5] Dependency updates --- README.md | 2 +- build.gradle.kts | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0a655e1..19620da 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # XMP Core for Kotlin Multiplatform -[![Kotlin](https://img.shields.io/badge/kotlin-2.1.0-blue.svg?logo=kotlin)](httpw://kotlinlang.org) +[![Kotlin](https://img.shields.io/badge/kotlin-2.1.10-blue.svg?logo=kotlin)](httpw://kotlinlang.org) ![JVM](https://img.shields.io/badge/-JVM-gray.svg?style=flat) ![Android](https://img.shields.io/badge/-Android-gray.svg?style=flat) ![iOS](https://img.shields.io/badge/-iOS-gray.svg?style=flat) diff --git a/build.gradle.kts b/build.gradle.kts index a5f56f0..0aa2929 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,7 +3,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.NativeBuildType import org.jetbrains.kotlin.gradle.plugin.mpp.apple.XCFramework plugins { - kotlin("multiplatform") version "2.1.0" + kotlin("multiplatform") version "2.1.10" id("com.android.library") version "8.5.0" id("maven-publish") id("signing") diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 18362b7..9bf7bd3 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-bin.zip networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From 96cb1dfca95b42ebe20a57c1fd2176e45a16d74c Mon Sep 17 00:00:00 2001 From: Stefan Oltmann Date: Thu, 30 Jan 2025 11:52:24 +0100 Subject: [PATCH 4/5] Target Android 35 --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 0aa2929..be23d86 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -295,7 +295,7 @@ android { namespace = "com.ashampoo.xmpcore" - compileSdk = 34 + compileSdk = 35 sourceSets["main"].res.srcDirs("src/commonMain/resources") From 43775e507ce544edb1c03aef791a7fa7a04a4b0a Mon Sep 17 00:00:00 2001 From: Stefan Oltmann Date: Thu, 30 Jan 2025 11:58:08 +0100 Subject: [PATCH 5/5] Bumped version --- README.md | 2 +- src/commonMain/kotlin/com/ashampoo/xmp/XMPVersionInfo.kt | 2 +- src/commonTest/kotlin/com/ashampoo/xmp/WriteXmpTest.kt | 4 ++-- .../com/ashampoo/xmp/sample_100_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_100_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_101_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_101_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_102_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_102_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_103_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_103_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_104_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_104_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_105_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_105_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_106_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_106_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_107_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_107_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_108_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_108_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_109_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_109_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_10_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_10_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_11_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_11_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_12_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_12_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_13_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_13_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_14_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_14_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_15_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_15_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_16_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_16_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_17_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_17_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_18_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_18_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_19_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_19_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_1_formatted_canonical.xmp | 2 +- .../resources/com/ashampoo/xmp/sample_1_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_20_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_20_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_21_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_21_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_22_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_22_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_23_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_23_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_24_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_24_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_25_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_25_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_26_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_26_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_27_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_27_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_28_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_28_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_29_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_29_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_2_formatted_canonical.xmp | 2 +- .../resources/com/ashampoo/xmp/sample_2_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_30_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_30_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_31_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_31_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_32_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_32_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_33_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_33_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_34_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_34_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_35_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_35_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_36_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_36_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_37_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_37_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_38_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_38_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_39_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_39_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_3_formatted_canonical.xmp | 2 +- .../resources/com/ashampoo/xmp/sample_3_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_40_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_40_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_41_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_41_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_42_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_42_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_43_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_43_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_44_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_44_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_45_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_45_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_46_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_46_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_47_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_47_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_48_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_48_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_49_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_49_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_4_formatted_canonical.xmp | 2 +- .../resources/com/ashampoo/xmp/sample_4_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_50_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_50_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_51_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_51_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_52_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_52_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_53_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_53_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_54_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_54_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_55_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_55_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_56_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_56_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_57_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_57_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_58_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_58_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_59_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_59_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_5_formatted_canonical.xmp | 2 +- .../resources/com/ashampoo/xmp/sample_5_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_60_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_60_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_61_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_61_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_62_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_62_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_63_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_63_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_64_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_64_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_65_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_65_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_66_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_66_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_67_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_67_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_68_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_68_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_69_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_69_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_6_formatted_canonical.xmp | 2 +- .../resources/com/ashampoo/xmp/sample_6_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_70_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_70_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_71_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_71_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_72_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_72_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_73_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_73_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_74_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_74_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_75_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_75_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_76_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_76_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_77_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_77_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_78_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_78_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_79_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_79_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_7_formatted_canonical.xmp | 2 +- .../resources/com/ashampoo/xmp/sample_7_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_80_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_80_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_81_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_81_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_82_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_82_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_83_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_83_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_84_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_84_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_85_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_85_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_86_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_86_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_87_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_87_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_88_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_88_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_89_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_89_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_8_formatted_canonical.xmp | 2 +- .../resources/com/ashampoo/xmp/sample_8_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_90_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_90_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_91_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_91_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_92_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_92_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_93_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_93_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_94_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_94_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_95_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_95_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_96_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_96_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_97_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_97_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_98_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_98_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_99_formatted_canonical.xmp | 2 +- .../com/ashampoo/xmp/sample_99_formatted_compact.xmp | 2 +- .../com/ashampoo/xmp/sample_9_formatted_canonical.xmp | 2 +- .../resources/com/ashampoo/xmp/sample_9_formatted_compact.xmp | 2 +- 221 files changed, 222 insertions(+), 222 deletions(-) diff --git a/README.md b/README.md index 19620da..a2ede93 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ It's part of [Ashampoo Photo Organizer](https://ashampoo.com/photo-organizer). ## Installation ``` -implementation("com.ashampoo:xmpcore:1.5.0") +implementation("com.ashampoo:xmpcore:1.5.1") ``` ## How to use diff --git a/src/commonMain/kotlin/com/ashampoo/xmp/XMPVersionInfo.kt b/src/commonMain/kotlin/com/ashampoo/xmp/XMPVersionInfo.kt index 54fbc40..d144690 100644 --- a/src/commonMain/kotlin/com/ashampoo/xmp/XMPVersionInfo.kt +++ b/src/commonMain/kotlin/com/ashampoo/xmp/XMPVersionInfo.kt @@ -9,7 +9,7 @@ public object XMPVersionInfo { public const val MAJOR: Int = 1 public const val MINOR: Int = 5 - public const val PATCH: Int = 0 + public const val PATCH: Int = 1 public const val VERSION_MESSAGE: String = "Ashampoo XMP Core $MAJOR.$MINOR.$PATCH" diff --git a/src/commonTest/kotlin/com/ashampoo/xmp/WriteXmpTest.kt b/src/commonTest/kotlin/com/ashampoo/xmp/WriteXmpTest.kt index 7d2be0b..7b4a9ec 100644 --- a/src/commonTest/kotlin/com/ashampoo/xmp/WriteXmpTest.kt +++ b/src/commonTest/kotlin/com/ashampoo/xmp/WriteXmpTest.kt @@ -464,7 +464,7 @@ class WriteXmpTest { /* language=XML */ val expectedXmp = """ - + @@ -495,7 +495,7 @@ class WriteXmpTest { /* language=XML */ val expectedXmp = """ - + diff --git a/src/commonTest/resources/com/ashampoo/xmp/sample_100_formatted_canonical.xmp b/src/commonTest/resources/com/ashampoo/xmp/sample_100_formatted_canonical.xmp index 3431fbc..1e592d1 100644 --- a/src/commonTest/resources/com/ashampoo/xmp/sample_100_formatted_canonical.xmp +++ b/src/commonTest/resources/com/ashampoo/xmp/sample_100_formatted_canonical.xmp @@ -1,5 +1,5 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/src/commonTest/resources/com/ashampoo/xmp/sample_13_formatted_compact.xmp b/src/commonTest/resources/com/ashampoo/xmp/sample_13_formatted_compact.xmp index b4622b4..5286494 100644 --- a/src/commonTest/resources/com/ashampoo/xmp/sample_13_formatted_compact.xmp +++ b/src/commonTest/resources/com/ashampoo/xmp/sample_13_formatted_compact.xmp @@ -1,5 +1,5 @@ - + - + diff --git a/src/commonTest/resources/com/ashampoo/xmp/sample_14_formatted_compact.xmp b/src/commonTest/resources/com/ashampoo/xmp/sample_14_formatted_compact.xmp index 2915d63..4064bf8 100644 --- a/src/commonTest/resources/com/ashampoo/xmp/sample_14_formatted_compact.xmp +++ b/src/commonTest/resources/com/ashampoo/xmp/sample_14_formatted_compact.xmp @@ -1,5 +1,5 @@ - + - + diff --git a/src/commonTest/resources/com/ashampoo/xmp/sample_15_formatted_compact.xmp b/src/commonTest/resources/com/ashampoo/xmp/sample_15_formatted_compact.xmp index dfbd3ac..b5b88c2 100644 --- a/src/commonTest/resources/com/ashampoo/xmp/sample_15_formatted_compact.xmp +++ b/src/commonTest/resources/com/ashampoo/xmp/sample_15_formatted_compact.xmp @@ -1,5 +1,5 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/src/commonTest/resources/com/ashampoo/xmp/sample_31_formatted_compact.xmp b/src/commonTest/resources/com/ashampoo/xmp/sample_31_formatted_compact.xmp index 2915d63..4064bf8 100644 --- a/src/commonTest/resources/com/ashampoo/xmp/sample_31_formatted_compact.xmp +++ b/src/commonTest/resources/com/ashampoo/xmp/sample_31_formatted_compact.xmp @@ -1,5 +1,5 @@ - + - + - + - + - + - + diff --git a/src/commonTest/resources/com/ashampoo/xmp/sample_34_formatted_compact.xmp b/src/commonTest/resources/com/ashampoo/xmp/sample_34_formatted_compact.xmp index 2915d63..4064bf8 100644 --- a/src/commonTest/resources/com/ashampoo/xmp/sample_34_formatted_compact.xmp +++ b/src/commonTest/resources/com/ashampoo/xmp/sample_34_formatted_compact.xmp @@ -1,5 +1,5 @@ - + - + - + - + - + - + - + - + - + - + diff --git a/src/commonTest/resources/com/ashampoo/xmp/sample_39_formatted_compact.xmp b/src/commonTest/resources/com/ashampoo/xmp/sample_39_formatted_compact.xmp index b4622b4..5286494 100644 --- a/src/commonTest/resources/com/ashampoo/xmp/sample_39_formatted_compact.xmp +++ b/src/commonTest/resources/com/ashampoo/xmp/sample_39_formatted_compact.xmp @@ -1,5 +1,5 @@ - + - + - + - + - + - + diff --git a/src/commonTest/resources/com/ashampoo/xmp/sample_41_formatted_compact.xmp b/src/commonTest/resources/com/ashampoo/xmp/sample_41_formatted_compact.xmp index b4622b4..5286494 100644 --- a/src/commonTest/resources/com/ashampoo/xmp/sample_41_formatted_compact.xmp +++ b/src/commonTest/resources/com/ashampoo/xmp/sample_41_formatted_compact.xmp @@ -1,5 +1,5 @@ - + - + - + - + diff --git a/src/commonTest/resources/com/ashampoo/xmp/sample_43_formatted_compact.xmp b/src/commonTest/resources/com/ashampoo/xmp/sample_43_formatted_compact.xmp index ec6e52f..2f937af 100644 --- a/src/commonTest/resources/com/ashampoo/xmp/sample_43_formatted_compact.xmp +++ b/src/commonTest/resources/com/ashampoo/xmp/sample_43_formatted_compact.xmp @@ -1,5 +1,5 @@ - + - + diff --git a/src/commonTest/resources/com/ashampoo/xmp/sample_44_formatted_compact.xmp b/src/commonTest/resources/com/ashampoo/xmp/sample_44_formatted_compact.xmp index 307151a..92b0ff6 100644 --- a/src/commonTest/resources/com/ashampoo/xmp/sample_44_formatted_compact.xmp +++ b/src/commonTest/resources/com/ashampoo/xmp/sample_44_formatted_compact.xmp @@ -1,5 +1,5 @@ - + - + - + - + - + - + - + - + - + - + diff --git a/src/commonTest/resources/com/ashampoo/xmp/sample_49_formatted_compact.xmp b/src/commonTest/resources/com/ashampoo/xmp/sample_49_formatted_compact.xmp index 2915d63..4064bf8 100644 --- a/src/commonTest/resources/com/ashampoo/xmp/sample_49_formatted_compact.xmp +++ b/src/commonTest/resources/com/ashampoo/xmp/sample_49_formatted_compact.xmp @@ -1,5 +1,5 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +