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