You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
242 lines
6.0 KiB
242 lines
6.0 KiB
/*****************************************************************************/
|
|
// 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
|
|
|
|
/*****************************************************************************/
|