/*****************************************************************************/ // Copyright 2006-2012 Adobe Systems Incorporated // All Rights Reserved. // // NOTICE: Adobe permits you to use, modify, and distribute this file in // accordance with the terms of the Adobe license agreement accompanying it. /*****************************************************************************/ /* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_xmp_sdk.h#2 $ */ /* $DateTime: 2012/05/31 09:29:29 $ */ /* $Change: 832505 $ */ /* $Author: tknoll $ */ /*****************************************************************************/ #ifndef __dng_xmp_sdk__ #define __dng_xmp_sdk__ /*****************************************************************************/ #include "dng_auto_ptr.h" #include "dng_classes.h" #include "dng_flags.h" #include "dng_types.h" #if qDNGUseXMP /*****************************************************************************/ extern const char *XMP_NS_TIFF; extern const char *XMP_NS_EXIF; extern const char *XMP_NS_PHOTOSHOP; extern const char *XMP_NS_XAP; extern const char *XMP_NS_XAP_RIGHTS; extern const char *XMP_NS_DC; extern const char *XMP_NS_XMP_NOTE; extern const char *XMP_NS_MM; extern const char *XMP_NS_CRS; extern const char *XMP_NS_CRSS; extern const char *XMP_NS_LCP; extern const char *XMP_NS_AUX; extern const char *XMP_NS_IPTC; extern const char *XMP_NS_IPTC_EXT; extern const char *XMP_NS_CRX; extern const char *XMP_NS_DNG; /*****************************************************************************/ class dng_xmp_private; /*****************************************************************************/ typedef bool (IteratePathsCallback) (const char *ns, const char *path, void *callbackData); /*****************************************************************************/ struct dng_xmp_namespace { const char * fullName; const char * shortName; }; /*****************************************************************************/ class dng_xmp_sdk { private: dng_xmp_private *fPrivate; public: dng_xmp_sdk (); dng_xmp_sdk (const dng_xmp_sdk &sdk); virtual ~dng_xmp_sdk (); static void InitializeSDK (dng_xmp_namespace * extraNamespaces = NULL, const char *software = NULL); static void TerminateSDK (); bool HasMeta () const; void * GetPrivateMeta (); void Parse (dng_host &host, const char *buffer, uint32 count); bool Exists (const char *ns, const char *path) const; void AppendArrayItem (const char *ns, const char *arrayName, const char *itemValue, bool isBag = true, bool propIsStruct = false); int32 CountArrayItems (const char *ns, const char *path) const; bool HasNameSpace (const char *ns) const; void Remove (const char *ns, const char *path); void RemoveProperties (const char *ns); bool IsEmptyString (const char *ns, const char *path); bool IsEmptyArray (const char *ns, const char *path); void ComposeArrayItemPath (const char *ns, const char *arrayName, int32 itemNumber, dng_string &s) const; void ComposeStructFieldPath (const char *ns, const char *structName, const char *fieldNS, const char *fieldName, dng_string &s) const; bool GetNamespacePrefix (const char *uri, dng_string &s) const; bool GetString (const char *ns, const char *path, dng_string &s) const; void ValidateStringList (const char *ns, const char *path); bool GetStringList (const char *ns, const char *path, dng_string_list &list) const; bool GetAltLangDefault (const char *ns, const char *path, dng_string &s) const; bool GetStructField (const char *ns, const char *path, const char *fieldNS, const char *fieldName, dng_string &s) const; void Set (const char *ns, const char *path, const char *text); void SetString (const char *ns, const char *path, const dng_string &s); void SetStringList (const char *ns, const char *path, const dng_string_list &list, bool isBag); void SetAltLangDefault (const char *ns, const char *path, const dng_string &s); void SetStructField (const char *ns, const char *path, const char *fieldNS, const char *fieldName, const char *text); void DeleteStructField (const char *ns, const char *structName, const char *fieldNS, const char *fieldName); dng_memory_block * Serialize (dng_memory_allocator &allocator, bool asPacket, uint32 targetBytes, uint32 padBytes, bool forJPEG, bool compact) const; void PackageForJPEG (dng_memory_allocator &allocator, AutoPtr &stdBlock, AutoPtr &extBlock, dng_string &extDigest) const; void MergeFromJPEG (const dng_xmp_sdk *xmp); void ReplaceXMP (dng_xmp_sdk *xmp); bool IteratePaths (IteratePathsCallback *callback, void *callbackData = NULL, const char *startNS = 0, const char *startingPath = 0); #if qDNGXMPDocOps void DocOpsOpenXMP (const char *srcMIMI); void DocOpsPrepareForSave (const char *srcMIMI, const char *dstMIMI, bool newPath = true); void DocOpsUpdateMetadata (const char *srcMIMI); #endif private: void ClearMeta (); void MakeMeta (); void NeedMeta (); // Hidden assignment operator. dng_xmp_sdk & operator= (const dng_xmp_sdk &sdk); }; #endif /*****************************************************************************/ #endif /*****************************************************************************/