Example: /XMP/Modifying Complex Properties

Online Documentation   -   Statistics   -   FAQ   -   Plugin Parts (All, Dependencies)   -   Class hierarchy

New in Version 22.2 22.3 22.4 22.5 23.0 23.1 23.2 23.3 23.4 23.5 24.0 24.1

The list of the   topics,   classes,   interfaces,   controls,   modules,   global methods by category,   global methods by name,   screenshots,   licenses   and   examples.

Platforms to show: All Mac Windows Linux Cross-Platform

/XMP/Modifying Complex Properties


Required plugins for this example: MBS XMP Plugin

You find this example project in your Plugins Download as a Xojo project file within the examples folder: /XMP/Modifying Complex Properties

This example is the version from Thu, 17th Feb 2021.

Project "Modifying Complex Properties.xojo_binary_project"
Class App Inherits ConsoleApplication
EventHandler Function Run(args() as String) As Integer // Example provided by Jared Feder // you may need a test file Dim file As FolderItem = SpecialFolder.Desktop.Child("test.tif") // Open XMP packet for update dim xmpMeta As XMPMetaMBS dim packetInfo As XMPPacketInfoMBS dim xmpPacket As string dim xmpFile as new XMPFilesMBS if not xmpFile.OpenFile(file,XMPFilesMBS.kUnknownFile,XMPFilesMBS.kOpenForUpdate) then break end if not xmpFile.GetXMP(xmpMeta,xmpPacket,packetInfo) then break end if // Register Namespace dim ns as string = "http://ns.adobe.com/xmp/sdk/" dim registeredPrefix as string if not xmpMeta.RegisterNamespace(ns, "sdk", registeredPrefix) then break end // "Composing paths to complex properties" example from page 24 of XMP Toolkit Programmer's Guide // string ns = "http://ns.adobe.com/xmp/sdk/"; // meta.SetProperty( ns.c_str(), "MyProperty", NULL, kXMP_PropValueIsStruct ); // string path; // SXMPUtils::ComposeStructFieldPath( ns.c_str(), "MyProperty", ns.c_str(), "F2", &path); // -- path is now "MyProperty2/sdk:F2" // meta.AppendArrayItem( ns.c_str(), path.c_str(), kXMP_PropArrayIsOrdered, NULL, kXMP_PropValueIsStruct ); // SXMPUtils::ComposeArrayItemPath( ns.c_str(), path.c_str(), kXMP_ArrayLastItem, &path ); // -- path is now "MyProperty2/sdk:F2[last()]" // SXMPUtils::ComposeStructFieldPath( ns.c_str(), path.c_str(), ns.c_str(), "F4", &path ); // -- path is now "MyProperty2/sdk:F2[last()]/sdk:F4" // meta.SetProperty( ns.c_str(), path.c_str(), "AValue3", NULL ); xmpMeta.SetProperty(ns, "MyProperty", "", XMPMetaMBS.kPropValueIsStruct) dim path as string = xmpMeta.ComposeStructFieldPath(ns, "MyProperty", ns,"F2") // path is now "MyProperty2/sdk:F2" xmpMeta.AppendArrayItem(ns, path, XMPMetaMBS.kPropArrayIsOrdered, "", XMPMetaMBS.kPropValueIsStruct) path = xmpMeta.ComposeArrayItemPath(ns, path, XMPMetaMBS.kArrayLastItem) // path is now "MyProperty2/sdk:F2[last()]" path = xmpMeta.ComposeStructFieldPath(ns, path, ns, "F4") // path is now "MyProperty2/sdk:F2[last()]/sdk:F4" xmpMeta.SetProperty(ns, path, "AValue3") // Write XMP Packet if xmpFile.CanPutXMP(xmpMeta) then xmpFile.PutXMP(xmpMeta) xmpFile.CloseFile(XMPFilesMBS.kNoOptions) else break end if End EventHandler
End Class
End Project

The items on this page are in the following plugins: MBS XMP Plugin.


💬 Ask a question or report a problem