Stateless parser class for XMP packets. Images use this class to parse and serialize XMP packets. The parser uses the XMP toolkit to do the job. More...
#include <xmp_exiv2.hpp>
Public Types | |
enum | XmpFormatFlags { omitPacketWrapper = 0x0010UL , readOnlyPacket = 0x0020UL , useCompactFormat = 0x0040UL , includeThumbnailPad = 0x0100UL , exactPacketLength = 0x0200UL , writeAliasComments = 0x0400UL , omitAllFormatting = 0x0800UL } |
Options to control the format of the serialized XMP packet. More... | |
using | XmpLockFct = void(*)(void *pLockData, bool lockUnlock) |
Lock/unlock function type. More... | |
Static Public Member Functions | |
static int | decode (XmpData &xmpData, const std::string &xmpPacket) |
Decode XMP metadata from an XMP packet xmpPacket into xmpData. The format of the XMP packet must follow the XMP specification. This method clears any previous contents of xmpData. More... | |
static int | encode (std::string &xmpPacket, const XmpData &xmpData, uint16_t formatFlags=useCompactFormat, uint32_t padding=0) |
Encode (serialize) XMP metadata from xmpData into a string xmpPacket. The XMP packet returned in the string follows the XMP specification. This method only modifies xmpPacket if the operations succeeds (return code 0). More... | |
static bool | initialize (XmpParser::XmpLockFct xmpLockFct=nullptr, void *pLockData=nullptr) |
Initialize the XMP Toolkit. More... | |
static void | terminate () |
Terminate the XMP Toolkit and unregister custom namespaces. More... | |
Friends | |
class | XmpProperties |
Stateless parser class for XMP packets. Images use this class to parse and serialize XMP packets. The parser uses the XMP toolkit to do the job.
using Exiv2::XmpParser::XmpLockFct = void (*)(void* pLockData, bool lockUnlock) |
Lock/unlock function type.
A function of this type can be passed to initialize() to make subsequent registration of XMP namespaces thread-safe. See the initialize() function for more information.
pLockData | Pointer to the pLockData passed to initialize() |
lockUnlock | Indicates whether to lock (true) or unlock (false) |
Options to control the format of the serialized XMP packet.
|
static |
Decode XMP metadata from an XMP packet xmpPacket into xmpData. The format of the XMP packet must follow the XMP specification. This method clears any previous contents of xmpData.
xmpData | Container for the decoded XMP properties |
xmpPacket | The raw XMP packet to decode |
|
static |
Encode (serialize) XMP metadata from xmpData into a string xmpPacket. The XMP packet returned in the string follows the XMP specification. This method only modifies xmpPacket if the operations succeeds (return code 0).
xmpPacket | Reference to a string to hold the encoded XMP packet. |
xmpData | XMP properties to encode. |
formatFlags | Flags that control the format of the XMP packet, see enum XmpFormatFlags. |
padding | Padding length. |
|
static |
Initialize the XMP Toolkit.
Calling this method is usually not needed, as encode() and decode() will initialize the XMP Toolkit if necessary.
The function takes optional pointers to a callback function xmpLockFct and related data pLockData that the parser uses when XMP namespaces are subsequently registered.
The initialize() function itself still is not thread-safe and needs to be called in a thread-safe manner (e.g., on program startup), but if used with suitable additional locking parameters, any subsequent registration of namespaces will be thread-safe.
Example usage on Windows using a critical section:
|
static |
Terminate the XMP Toolkit and unregister custom namespaces.
Call this method when the XmpParser is no longer needed to allow the XMP Toolkit to cleanly shutdown.