00001 #ifndef __TXMPUtils_hpp__
00002 #define __TXMPUtils_hpp__ 1
00003
00004 #if ( ! __XMP_hpp__ )
00005 #error "Do not directly include, use XMP.hpp"
00006 #endif
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00024
00025
00026
00047
00048
00049 template <class tStringObj> class TXMPUtils {
00050
00051 public:
00052
00053
00054
00055
00056
00057
00092
00093
00109
00110 static void ComposeArrayItemPath ( XMP_StringPtr schemaNS,
00111 XMP_StringPtr arrayName,
00112 XMP_Index itemIndex,
00113 tStringObj * fullPath );
00114
00115
00133
00134 static void ComposeStructFieldPath ( XMP_StringPtr schemaNS,
00135 XMP_StringPtr structName,
00136 XMP_StringPtr fieldNS,
00137 XMP_StringPtr fieldName,
00138 tStringObj * fullPath );
00139
00140
00159
00160 static void ComposeQualifierPath ( XMP_StringPtr schemaNS,
00161 XMP_StringPtr propName,
00162 XMP_StringPtr qualNS,
00163 XMP_StringPtr qualName,
00164 tStringObj * fullPath );
00165
00166
00190
00191 static void ComposeLangSelector ( XMP_StringPtr schemaNS,
00192 XMP_StringPtr arrayName,
00193 XMP_StringPtr langName,
00194 tStringObj * fullPath );
00195
00196
00220
00221 static void ComposeLangSelector ( XMP_StringPtr schemaNS,
00222 XMP_StringPtr arrayName,
00223 const tStringObj & langName,
00224 tStringObj * fullPath );
00225
00226
00260
00261 static void ComposeFieldSelector ( XMP_StringPtr schemaNS,
00262 XMP_StringPtr arrayName,
00263 XMP_StringPtr fieldNS,
00264 XMP_StringPtr fieldName,
00265 XMP_StringPtr fieldValue,
00266 tStringObj * fullPath );
00267
00268
00302
00303 static void ComposeFieldSelector ( XMP_StringPtr schemaNS,
00304 XMP_StringPtr arrayName,
00305 XMP_StringPtr fieldNS,
00306 XMP_StringPtr fieldName,
00307 const tStringObj & fieldValue,
00308 tStringObj * fullPath );
00309
00311
00312
00324
00325
00334
00335 static void ConvertFromBool ( bool binValue,
00336 tStringObj * strValue );
00337
00338
00346
00347 static void ConvertFromInt ( long binValue,
00348 XMP_StringPtr format,
00349 tStringObj * strValue );
00350
00358
00359 static void ConvertFromInt64 ( long long binValue,
00360 XMP_StringPtr format,
00361 tStringObj * strValue );
00362
00363
00371
00372 static void ConvertFromFloat ( double binValue,
00373 XMP_StringPtr format,
00374 tStringObj * strValue );
00375
00376
00407
00408 static void ConvertFromDate ( const XMP_DateTime & binValue,
00409 tStringObj * strValue );
00410
00411
00421
00422 static bool ConvertToBool ( XMP_StringPtr strValue );
00423
00424
00433
00434 static bool ConvertToBool ( const tStringObj & strValue );
00435
00436
00442
00443 static long ConvertToInt ( XMP_StringPtr strValue );
00444
00445
00454
00455 static long ConvertToInt ( const tStringObj & strValue );
00456
00457
00463
00464 static long long ConvertToInt64 ( XMP_StringPtr strValue );
00465
00466
00475
00476 static long long ConvertToInt64 ( const tStringObj & strValue );
00477
00478
00484
00485 static double ConvertToFloat ( XMP_StringPtr strValue );
00486
00487
00496
00497 static double ConvertToFloat ( const tStringObj & strValue );
00498
00499
00532
00533 static void ConvertToDate ( XMP_StringPtr strValue,
00534 XMP_DateTime * binValue );
00535
00536
00548
00549 static void ConvertToDate ( const tStringObj & strValue,
00550 XMP_DateTime * binValue );
00551
00553
00554
00560
00561
00569
00570 static void CurrentDateTime ( XMP_DateTime * time );
00571
00572
00578
00579 static void SetTimeZone ( XMP_DateTime * time );
00580
00581
00588
00589 static void ConvertToUTCTime ( XMP_DateTime * time );
00590
00591
00598
00599 static void ConvertToLocalTime ( XMP_DateTime * time );
00600
00601
00612
00613 static int CompareDateTime ( const XMP_DateTime & left,
00614 const XMP_DateTime & right );
00615
00617
00618
00623
00624
00632
00633 static void EncodeToBase64 ( XMP_StringPtr rawStr,
00634 XMP_StringLen rawLen,
00635 tStringObj * encodedStr );
00636
00637
00646
00647 static void EncodeToBase64 ( const tStringObj & rawStr,
00648 tStringObj * encodedStr );
00649
00650
00658
00659 static void DecodeFromBase64 ( XMP_StringPtr encodedStr,
00660 XMP_StringLen encodedLen,
00661 tStringObj * rawStr );
00662
00663
00672
00673 static void DecodeFromBase64 ( const tStringObj & encodedStr,
00674 tStringObj * rawStr );
00675
00677
00678
00679
00687
00688
00707
00708 static void PackageForJPEG ( const TXMPMeta<tStringObj> & xmpObj,
00709 tStringObj * standardXMP,
00710 tStringObj * extendedXMP,
00711 tStringObj * extendedDigest );
00712
00713
00727
00728 static void MergeFromJPEG ( TXMPMeta<tStringObj> * fullXMP,
00729 const TXMPMeta<tStringObj> & extendedXMP );
00730
00732
00733
00740
00741
00765
00766 static void CatenateArrayItems ( const TXMPMeta<tStringObj> & xmpObj,
00767 XMP_StringPtr schemaNS,
00768 XMP_StringPtr arrayName,
00769 XMP_StringPtr separator,
00770 XMP_StringPtr quotes,
00771 XMP_OptionBits options,
00772 tStringObj * catedStr );
00773
00774
00792
00793 static void SeparateArrayItems ( TXMPMeta<tStringObj> * xmpObj,
00794 XMP_StringPtr schemaNS,
00795 XMP_StringPtr arrayName,
00796 XMP_OptionBits options,
00797 XMP_StringPtr catedStr );
00798
00799
00805
00806 static void SeparateArrayItems ( TXMPMeta<tStringObj> * xmpObj,
00807 XMP_StringPtr schemaNS,
00808 XMP_StringPtr arrayName,
00809 XMP_OptionBits options,
00810 const tStringObj & catedStr );
00811
00812
00843
00844 static void RemoveProperties ( TXMPMeta<tStringObj> * xmpObj,
00845 XMP_StringPtr schemaNS = 0,
00846 XMP_StringPtr propName = 0,
00847 XMP_OptionBits options = 0 );
00848
00849
00920
00921 static void AppendProperties ( const TXMPMeta<tStringObj> & source,
00922 TXMPMeta<tStringObj> * dest,
00923 XMP_OptionBits options = 0 );
00924
00925
00946
00947 static void DuplicateSubtree ( const TXMPMeta<tStringObj> & source,
00948 TXMPMeta<tStringObj> * dest,
00949 XMP_StringPtr sourceNS,
00950 XMP_StringPtr sourceRoot,
00951 XMP_StringPtr destNS = 0,
00952 XMP_StringPtr destRoot = 0,
00953 XMP_OptionBits options = 0 );
00954
00956
00957
00958
00959
00960
00961 };
00962
00963
00964
00965 #endif // __TXMPUtils_hpp__