| /*****************************************************************************/ |
| // 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<dng_memory_block> &stdBlock, |
| AutoPtr<dng_memory_block> &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 |
| |
| /*****************************************************************************/ |