00001 #ifndef __XMP_Const_h__
00002 #define __XMP_Const_h__ 1
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "XMP_Environment.h"
00019
00020 #include <stddef.h>
00021
00022 #if XMP_MacBuild // ! No stdint.h on Windows and some UNIXes.
00023 #include <stdint.h>
00024 #endif
00025
00026 #if __cplusplus
00027 extern "C" {
00028 #endif
00029
00030
00037
00038
00039
00040
00041
00042
00043
00044
00045 #if XMP_MacBuild
00046
00047 typedef int8_t XMP_Int8;
00048 typedef int16_t XMP_Int16;
00049 typedef int32_t XMP_Int32;
00050 typedef int64_t XMP_Int64;
00051
00052 typedef uint8_t XMP_Uns8;
00053 typedef uint16_t XMP_Uns16;
00054 typedef uint32_t XMP_Uns32;
00055 typedef uint64_t XMP_Uns64;
00056
00057 #else
00058
00059 typedef signed char XMP_Int8;
00060 typedef signed short XMP_Int16;
00061 typedef signed long XMP_Int32;
00062 typedef signed long long XMP_Int64;
00063
00064 typedef unsigned char XMP_Uns8;
00065 typedef unsigned short XMP_Uns16;
00066 typedef unsigned long XMP_Uns32;
00067 typedef unsigned long long XMP_Uns64;
00068
00069 #endif
00070
00071 typedef XMP_Uns8 XMP_Bool;
00072
00073
00074
00075 #if 0 // *** Enable after internal compiles work.
00076 typedef XMP_Int8 XMPInt8;
00077 typedef XMP_Int16 XMPInt16;
00078 typedef XMP_Int32 XMPInt32;
00079 typedef XMP_Int64 XMPInt64;
00080 typedef XMP_Uns8 XMPUns8;
00081 typedef XMP_Uns16 XMPUns16;
00082 typedef XMP_Uns32 XMPUns32;
00083 typedef XMP_Uns64 XMPUns64;
00084 typedef XMP_Bool XMPBool;
00085 #endif
00086
00095 typedef struct __XMPMeta__ * XMPMetaRef;
00096 typedef struct __XMPIterator__ * XMPIteratorRef;
00097
00098
00099
00131 typedef const char * XMP_StringPtr;
00132 typedef XMP_Uns32 XMP_StringLen;
00133 typedef XMP_Int32 XMP_Index;
00134 typedef XMP_Uns32 XMP_OptionBits;
00135
00148 #define kXMP_TrueStr "True"
00149 #define kXMP_FalseStr "False"
00150
00155
00156
00189 struct XMP_DateTime {
00190 XMP_Int32 year;
00191 XMP_Int32 month;
00192 XMP_Int32 day;
00193 XMP_Int32 hour;
00194 XMP_Int32 minute;
00195 XMP_Int32 second;
00196 XMP_Int32 tzSign;
00197 XMP_Int32 tzHour;
00198 XMP_Int32 tzMinute;
00199 XMP_Int32 nanoSecond;
00200 };
00201
00202 enum {
00203 kXMP_TimeWestOfUTC = -1,
00204 kXMP_TimeIsUTC = 0,
00205 kXMP_TimeEastOfUTC = +1
00206 };
00207
00208
00209
00210
00211
00212
00272 #define kXMP_NS_XMP "http://ns.adobe.com/xap/1.0/"
00273
00274 #define kXMP_NS_XMP_Rights "http://ns.adobe.com/xap/1.0/rights/"
00275 #define kXMP_NS_XMP_MM "http://ns.adobe.com/xap/1.0/mm/"
00276 #define kXMP_NS_XMP_BJ "http://ns.adobe.com/xap/1.0/bj/"
00277
00278 #define kXMP_NS_PDF "http://ns.adobe.com/pdf/1.3/"
00279 #define kXMP_NS_Photoshop "http://ns.adobe.com/photoshop/1.0/"
00280 #define kXMP_NS_PSAlbum "http://ns.adobe.com/album/1.0/"
00281 #define kXMP_NS_EXIF "http://ns.adobe.com/exif/1.0/"
00282 #define kXMP_NS_EXIF_Aux "http://ns.adobe.com/exif/1.0/aux/"
00283 #define kXMP_NS_TIFF "http://ns.adobe.com/tiff/1.0/"
00284 #define kXMP_NS_PNG "http://ns.adobe.com/png/1.0/"
00285 #define kXMP_NS_JPEG "http://ns.adobe.com/jpeg/1.0/"
00286 #define kXMP_NS_JP2K "http://ns.adobe.com/jp2k/1.0/"
00287 #define kXMP_NS_CameraRaw "http://ns.adobe.com/camera-raw-settings/1.0/"
00288
00289 #define kXMP_NS_AdobeStockPhoto "http://ns.adobe.com/StockPhoto/1.0/"
00290
00335 #define kXMP_NS_XMP_IdentifierQual "http://ns.adobe.com/xmp/Identifier/qual/1.0/"
00336 #define kXMP_NS_XMP_Dimensions "http://ns.adobe.com/xap/1.0/sType/Dimensions#"
00337 #define kXMP_NS_XMP_Text "http://ns.adobe.com/xap/1.0/t/"
00338 #define kXMP_NS_XMP_PagedFile "http://ns.adobe.com/xap/1.0/t/pg/"
00339 #define kXMP_NS_XMP_Graphics "http://ns.adobe.com/xap/1.0/g/"
00340 #define kXMP_NS_XMP_Image "http://ns.adobe.com/xap/1.0/g/img/"
00341 #define kXMP_NS_XMP_Font "http://ns.adobe.com/xap/1.0/sType/Font#"
00342 #define kXMP_NS_XMP_ResourceEvent "http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
00343 #define kXMP_NS_XMP_ResourceRef "http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
00344 #define kXMP_NS_XMP_ST_Version "http://ns.adobe.com/xap/1.0/sType/Version#"
00345 #define kXMP_NS_XMP_ST_Job "http://ns.adobe.com/xap/1.0/sType/Job#"
00346 #define kXMP_NS_XMP_ManifestItem "http://ns.adobe.com/xap/1.0/sType/ManifestItem#"
00347
00348
00349 #define kXMP_NS_XMP_T "http://ns.adobe.com/xap/1.0/t/"
00350 #define kXMP_NS_XMP_T_PG "http://ns.adobe.com/xap/1.0/t/pg/"
00351 #define kXMP_NS_XMP_G_IMG "http://ns.adobe.com/xap/1.0/g/img/"
00352
00382 #define kXMP_NS_DC "http://purl.org/dc/elements/1.1/"
00383 #define kXMP_NS_IPTCCore "http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/"
00384 #define kXMP_NS_RDF "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
00385 #define kXMP_NS_XML "http://www.w3.org/XML/1998/namespace"
00386
00387
00388
00389
00390
00391
00392 #define kXMP_ArrayLastItem ((XMP_Index)(-1L))
00393 #define kXMP_UseNullTermination ((XMP_StringLen)(~0UL))
00394
00395 #define kXMP_NoOptions ((XMP_OptionBits)0UL)
00396
00397 #define XMP_SetOption(var,opt) var |= (opt)
00398 #define XMP_ClearOption(var,opt) var &= ~(opt)
00399 #define XMP_TestOption(var,opt) (((var) & (opt)) != 0)
00400 #define XMP_OptionIsSet(var,opt) (((var) & (opt)) != 0)
00401 #define XMP_OptionIsClear(var,opt) (((var) & (opt)) == 0)
00402
00403 #define XMP_PropIsSimple(opt) (((opt) & kXMP_PropCompositeMask) == 0)
00404 #define XMP_PropIsStruct(opt) (((opt) & kXMP_PropValueIsStruct) != 0)
00405 #define XMP_PropIsArray(opt) (((opt) & kXMP_PropValueIsArray) != 0)
00406 #define XMP_ArrayIsUnordered(opt) (((opt) & kXMP_PropArrayIsOrdered) == 0)
00407 #define XMP_ArrayIsOrdered(opt) (((opt) & kXMP_PropArrayIsOrdered) != 0)
00408 #define XMP_ArrayIsAlternate(opt) (((opt) & kXMP_PropArrayIsAlternate) != 0)
00409 #define XMP_ArrayIsAltText(opt) (((opt) & kXMP_PropArrayIsAltText) != 0)
00410
00411 #define XMP_PropHasQualifiers(opt) (((opt) & kXMP_PropHasQualifiers) != 0)
00412 #define XMP_PropIsQualifier(opt) (((opt) & kXMP_PropIsQualifier) != 0)
00413 #define XMP_PropHasLang(opt) (((opt) & kXMP_PropHasLang) != 0)
00414
00415 #define XMP_NodeIsSchema(opt) (((opt) & kXMP_SchemaNode) != 0)
00416 #define XMP_PropIsAlias(opt) (((opt) & kXMP_PropIsAlias) != 0)
00417
00418
00419
00420 enum {
00421 kXMP_DeleteUnknownProperties = 0x0001UL,
00422 kXMP_RecordDerivedProperties = 0x0002UL
00423 };
00424
00425
00426
00427 enum {
00428
00429
00430 kXMP_PropValueIsURI = 0x00000002UL,
00431
00432
00433 kXMP_PropHasQualifiers = 0x00000010UL,
00434 kXMP_PropIsQualifier = 0x00000020UL,
00435 kXMP_PropHasLang = 0x00000040UL,
00436 kXMP_PropHasType = 0x00000080UL,
00437
00438
00439 kXMP_PropValueIsStruct = 0x00000100UL,
00440 kXMP_PropValueIsArray = 0x00000200UL,
00441 kXMP_PropArrayIsOrdered = 0x00000400UL,
00442 kXMP_PropArrayIsAlternate = 0x00000800UL,
00443
00444
00445 kXMP_PropArrayIsAltText = 0x00001000UL,
00446
00447
00448
00449
00450 kXMP_PropIsAlias = 0x00010000UL,
00451 kXMP_PropHasAliases = 0x00020000UL,
00452 kXMP_PropIsInternal = 0x00040000UL,
00453 kXMP_PropIsStable = 0x00100000UL,
00454 kXMP_PropIsDerived = 0x00200000UL,
00455 kXMP_PropIsStale = 0x00400000UL,
00456
00457
00458
00459
00460
00461
00462 kXMP_PropArrayFormMask = kXMP_PropValueIsArray | kXMP_PropArrayIsOrdered | kXMP_PropArrayIsAlternate | kXMP_PropArrayIsAltText,
00463 kXMP_PropCompositeMask = kXMP_PropValueIsStruct | kXMP_PropArrayFormMask,
00464 kXMP_ImplReservedMask = 0x70000000L
00465 };
00466
00467 #define kXMP_SchemaNode ((XMP_OptionBits)0x80000000UL)
00468
00469 enum {
00470
00471
00472
00473
00474
00475
00476
00477
00478
00479
00480
00481
00482
00483 kXMP_InsertBeforeItem = 0x00004000UL,
00484 kXMP_InsertAfterItem = 0x00008000UL,
00485
00486
00487 kXMP_DeleteExisting = 0x20000000UL,
00488
00489
00490 kXMP_PropValueOptionsMask = kXMP_PropValueIsURI,
00491 kXMP_PropArrayLocationMask = kXMP_InsertBeforeItem | kXMP_InsertAfterItem
00492
00493 };
00494
00495
00496
00497 enum {
00498 kXMP_RequireXMPMeta = 0x0001UL,
00499 kXMP_ParseMoreBuffers = 0x0002UL,
00500 kXMP_StrictAliasing = 0x0004UL
00501 };
00502
00503 enum {
00504
00505
00506
00507 kXMP_OmitPacketWrapper = 0x0010UL,
00508 kXMP_ReadOnlyPacket = 0x0020UL,
00509 kXMP_UseCompactFormat = 0x0040UL,
00510 kXMP_UsePlainXMP = 0x0080UL,
00511
00512 kXMP_IncludeThumbnailPad = 0x0100UL,
00513 kXMP_ExactPacketLength = 0x0200UL,
00514 kXMP_WriteAliasComments = 0x0400UL,
00515
00516 _XMP_LittleEndian_Bit = 0x0001UL,
00517 _XMP_UTF16_Bit = 0x0002UL,
00518 _XMP_UTF32_Bit = 0x0004UL,
00519
00520 kXMP_EncodingMask = 0x0007UL,
00521 kXMP_EncodeUTF8 = 0UL,
00522 kXMP_EncodeUTF16Big = _XMP_UTF16_Bit,
00523 kXMP_EncodeUTF16Little = _XMP_UTF16_Bit | _XMP_LittleEndian_Bit,
00524 kXMP_EncodeUTF32Big = _XMP_UTF32_Bit,
00525 kXMP_EncodeUTF32Little = _XMP_UTF32_Bit | _XMP_LittleEndian_Bit
00526
00527 };
00528
00529
00530
00531 enum {
00532
00533 kXMP_IterClassMask = 0x00FFUL,
00534 kXMP_IterProperties = 0x0000UL,
00535 kXMP_IterAliases = 0x0001UL,
00536 kXMP_IterNamespaces = 0x0002UL,
00537 kXMP_IterPropTraits = 0x0003UL,
00538
00539 kXMP_IterJustChildren = 0x0100UL,
00540 kXMP_IterJustLeafNodes = 0x0200UL,
00541 kXMP_IterJustLeafName = 0x0400UL,
00542 kXMP_IterIncludeAliases = 0x0800UL,
00543
00544 kXMP_IterOmitQualifiers = 0x1000UL
00545
00546 };
00547
00548 enum {
00549 kXMP_IterSkipSubtree = 0x0001UL,
00550 kXMP_IterSkipSiblings = 0x0002UL
00551 };
00552
00553
00554
00555
00556
00557
00558
00572 #if ! __cplusplus
00573
00574 typedef struct XMP_Error {
00575 XMP_Int32 id;
00576 XMP_StringPtr errMsg;
00577 } XMP_Error;
00578
00579 #else
00580
00581 class XMP_Error {
00582 public:
00583 XMP_Error ( XMP_Int32 _id, XMP_StringPtr _errMsg ) : id(_id), errMsg(_errMsg) {};
00584 inline XMP_Int32 GetID() const { return id; };
00585 inline XMP_StringPtr GetErrMsg() const { return errMsg; };
00586 private:
00587 XMP_Int32 id;
00588 XMP_StringPtr errMsg;
00589 };
00590
00591 #endif
00592
00593 enum {
00594
00595
00596 kXMPErr_Unknown = 0,
00597 kXMPErr_TBD = 1,
00598 kXMPErr_Unavailable = 2,
00599 kXMPErr_BadObject = 3,
00600 kXMPErr_BadParam = 4,
00601 kXMPErr_BadValue = 5,
00602 kXMPErr_AssertFailure = 6,
00603 kXMPErr_EnforceFailure = 7,
00604 kXMPErr_Unimplemented = 8,
00605 kXMPErr_InternalFailure = 9,
00606 kXMPErr_Deprecated = 10,
00607 kXMPErr_ExternalFailure = 11,
00608 kXMPErr_UserAbort = 12,
00609 kXMPErr_StdException = 13,
00610 kXMPErr_UnknownException = 14,
00611
00612
00613 kXMPErr_BadSchema = 101,
00614 kXMPErr_BadXPath = 102,
00615 kXMPErr_BadOptions = 103,
00616 kXMPErr_BadIndex = 104,
00617 kXMPErr_BadIterPosition = 105,
00618 kXMPErr_BadParse = 106,
00619 kXMPErr_BadSerialize = 107,
00620 kXMPErr_BadFileFormat = 108,
00621 kXMPErr_NoFileHandler = 109,
00622
00623
00624 kXMPErr_BadXML = 201,
00625 kXMPErr_BadRDF = 202,
00626 kXMPErr_BadXMP = 203,
00627 kXMPErr_EmptyIterator = 204,
00628 kXMPErr_BadUnicode = 205
00629
00630 };
00631
00637
00638
00639
00640
00641
00665 typedef void (* XMP_AssertNotifyProc) ( void * refCon, XMP_StringPtr message );
00666
00685 typedef XMP_Int32 XMP_Status;
00686
00687 typedef XMP_Status (* XMP_TextOutputProc) ( void * refCon,
00688 XMP_StringPtr buffer,
00689 XMP_StringLen bufferSize );
00690
00691
00700 typedef void * (* XMP_AllocateProc) ( size_t size );
00701 typedef void (* XMP_DeleteProc) ( void * ptr );
00702
00708
00709
00710
00711
00712 typedef struct XMP_VersionInfo {
00713 XMP_Uns8 major;
00714 XMP_Uns8 minor;
00715 XMP_Uns8 micro;
00716 XMP_Bool isDebug;
00717 XMP_Uns32 build;
00718 XMP_Uns32 flags;
00719 XMP_StringPtr message;
00720 } XMP_VersionInfo;
00721
00722
00723
00724
00725 #if __cplusplus
00726 }
00727 #endif
00728
00729 #endif