16e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/
26e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim// Copyright 2006-2012 Adobe Systems Incorporated
36e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim// All Rights Reserved.
46e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim//
56e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim// NOTICE:  Adobe permits you to use, modify, and distribute this file in
66e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim// accordance with the terms of the Adobe license agreement accompanying it.
76e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/
86e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
96e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/* $Id: //mondo/dng_sdk_1_4/dng_sdk/source/dng_xmp_sdk.h#2 $ */
106e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/* $DateTime: 2012/05/31 09:29:29 $ */
116e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/* $Change: 832505 $ */
126e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/* $Author: tknoll $ */
136e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
146e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/
156e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
166e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim#ifndef __dng_xmp_sdk__
176e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim#define __dng_xmp_sdk__
186e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
196e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/
206e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
216e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim#include "dng_auto_ptr.h"
226e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim#include "dng_classes.h"
236e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim#include "dng_flags.h"
246e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim#include "dng_types.h"
256e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
26327c6d5fa60ff1df8a421499edff3c6445a9d2e6Kinan Hakim#if qDNGUseXMP
27327c6d5fa60ff1df8a421499edff3c6445a9d2e6Kinan Hakim
286e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/
296e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
306e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimextern const char *XMP_NS_TIFF;
316e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimextern const char *XMP_NS_EXIF;
326e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimextern const char *XMP_NS_PHOTOSHOP;
336e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimextern const char *XMP_NS_XAP;
346e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimextern const char *XMP_NS_XAP_RIGHTS;
356e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimextern const char *XMP_NS_DC;
366e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimextern const char *XMP_NS_XMP_NOTE;
376e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimextern const char *XMP_NS_MM;
386e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
396e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimextern const char *XMP_NS_CRS;
406e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimextern const char *XMP_NS_CRSS;
416e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
426e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimextern const char *XMP_NS_LCP;
436e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
446e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimextern const char *XMP_NS_AUX;
456e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
466e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimextern const char *XMP_NS_IPTC;
476e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimextern const char *XMP_NS_IPTC_EXT;
486e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
496e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimextern const char *XMP_NS_CRX;
506e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
516e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimextern const char *XMP_NS_DNG;
526e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
536e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/
546e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
556e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimclass dng_xmp_private;
566e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
576e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/
586e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
596e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimtypedef bool (IteratePathsCallback) (const char *ns,
606e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim			  				   	     const char *path,
616e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim			  				         void *callbackData);
626e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
636e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/
646e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
656e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimstruct dng_xmp_namespace
666e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim	{
676e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim	const char * fullName;
686e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim	const char * shortName;
696e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim	};
706e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
716e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/
726e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
736e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakimclass dng_xmp_sdk
746e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim	{
756e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
766e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim	private:
776e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
786e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		dng_xmp_private *fPrivate;
796e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
806e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim	public:
816e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
826e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		dng_xmp_sdk ();
836e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
846e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		dng_xmp_sdk (const dng_xmp_sdk &sdk);
856e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
866e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		virtual ~dng_xmp_sdk ();
876e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
886e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		static void InitializeSDK (dng_xmp_namespace * extraNamespaces = NULL,
896e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim								   const char *software = NULL);
906e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
916e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		static void TerminateSDK ();
926e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
936e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		bool HasMeta () const;
946e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
956e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		void * GetPrivateMeta ();
966e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
976e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		void Parse (dng_host &host,
986e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim					const char *buffer,
996e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim				    uint32 count);
1006e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
1016e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		bool Exists (const char *ns,
1026e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim					 const char *path) const;
1036e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
1046e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		void AppendArrayItem (const char *ns,
1056e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim							  const char *arrayName,
1066e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim							  const char *itemValue,
1076e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim							  bool isBag = true,
1086e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim							  bool propIsStruct = false);
1096e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
1106e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		int32 CountArrayItems (const char *ns,
1116e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		                       const char *path) const;
1126e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
1136e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		bool HasNameSpace (const char *ns) const;
1146e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
1156e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		void Remove (const char *ns,
1166e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim				     const char *path);
1176e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
1186e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		void RemoveProperties (const char *ns);
1196e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
1206e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		bool IsEmptyString (const char *ns,
1216e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim					        const char *path);
1226e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
1236e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		bool IsEmptyArray (const char *ns,
1246e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim					       const char *path);
1256e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
1266e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		void ComposeArrayItemPath (const char *ns,
1276e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim								   const char *arrayName,
1286e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim								   int32 itemNumber,
1296e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim								   dng_string &s) const;
1306e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
1316e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		void ComposeStructFieldPath (const char *ns,
1326e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim								     const char *structName,
1336e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim								     const char *fieldNS,
1346e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim									 const char *fieldName,
1356e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim								     dng_string &s) const;
1366e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
1376e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		bool GetNamespacePrefix (const char *uri,
1386e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim								 dng_string &s) const;
1396e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
1406e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		bool GetString (const char *ns,
1416e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim				   		const char *path,
1426e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim				   		dng_string &s) const;
1436e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
1446e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		void ValidateStringList (const char *ns,
1456e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim								 const char *path);
1466e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
1476e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		bool GetStringList (const char *ns,
1486e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim							const char *path,
1496e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim							dng_string_list &list) const;
1506e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
1516e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		bool GetAltLangDefault (const char *ns,
1526e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim								const char *path,
1536e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim								dng_string &s) const;
1546e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
1556e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		bool GetStructField (const char *ns,
1566e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim							 const char *path,
1576e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim							 const char *fieldNS,
1586e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim							 const char *fieldName,
1596e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim							 dng_string &s) const;
1606e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
1616e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		void Set (const char *ns,
1626e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim				  const char *path,
1636e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim				  const char *text);
1646e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
1656e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		void SetString (const char *ns,
1666e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim				  		const char *path,
1676e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim				  		const dng_string &s);
1686e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
1696e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		void SetStringList (const char *ns,
1706e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim				  		    const char *path,
1716e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim				  		    const dng_string_list &list,
1726e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim				  		    bool isBag);
1736e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
1746e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		void SetAltLangDefault (const char *ns,
1756e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim								const char *path,
1766e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim								const dng_string &s);
1776e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
1786e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		void SetStructField (const char *ns,
1796e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim							 const char *path,
1806e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim							 const char *fieldNS,
1816e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim							 const char *fieldName,
1826e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim							 const char *text);
1836e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
1846e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		void DeleteStructField (const char *ns,
1856e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim								const char *structName,
1866e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim								const char *fieldNS,
1876e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim								const char *fieldName);
1886e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
1896e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		dng_memory_block * Serialize (dng_memory_allocator &allocator,
1906e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim									  bool asPacket,
1916e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim									  uint32 targetBytes,
1926e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim									  uint32 padBytes,
1936e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim									  bool forJPEG,
1946e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim									  bool compact) const;
1956e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
1966e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		void PackageForJPEG (dng_memory_allocator &allocator,
1976e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim							 AutoPtr<dng_memory_block> &stdBlock,
1986e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim							 AutoPtr<dng_memory_block> &extBlock,
1996e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim							 dng_string &extDigest) const;
2006e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
2016e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		void MergeFromJPEG (const dng_xmp_sdk *xmp);
2026e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
2036e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		void ReplaceXMP (dng_xmp_sdk *xmp);
2046e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
2056e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		bool IteratePaths (IteratePathsCallback *callback,
2066e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim						   void *callbackData = NULL,
2076e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim						   const char *startNS = 0,
2086e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim						   const char *startingPath = 0);
2096e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
2106e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		#if qDNGXMPDocOps
2116e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
2126e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		void DocOpsOpenXMP (const char *srcMIMI);
2136e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
2146e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		void DocOpsPrepareForSave (const char *srcMIMI,
2156e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim								   const char *dstMIMI,
2166e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim								   bool newPath = true);
2176e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
2186e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		void DocOpsUpdateMetadata (const char *srcMIMI);
2196e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
2206e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		#endif
2216e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
2226e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim	private:
2236e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
2246e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		void ClearMeta ();
2256e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
2266e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		void MakeMeta ();
2276e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
2286e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		void NeedMeta ();
2296e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
2306e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		// Hidden assignment operator.
2316e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
2326e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim		dng_xmp_sdk & operator= (const dng_xmp_sdk &sdk);
2336e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
2346e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim	};
2356e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
236327c6d5fa60ff1df8a421499edff3c6445a9d2e6Kinan Hakim#endif
2376e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/
2386e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
2396e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim#endif
2406e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim
2416e09dfbee0b1643a5cb2b32d0399c1a0c69551a0Kinan Hakim/*****************************************************************************/
242