summaryrefslogtreecommitdiff
path: root/docs/API/classTXMPFiles.html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/API/classTXMPFiles.html')
-rw-r--r--docs/API/classTXMPFiles.html1191
1 files changed, 1191 insertions, 0 deletions
diff --git a/docs/API/classTXMPFiles.html b/docs/API/classTXMPFiles.html
new file mode 100644
index 0000000..22b1063
--- /dev/null
+++ b/docs/API/classTXMPFiles.html
@@ -0,0 +1,1191 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+<title>XMP-Toolkit-SDK-4.4.2: TXMPFiles&lt; tStringObj &gt; Class Template Reference</title>
+<link href="xmp.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<img src="xmp_tagline_small.jpg" width="125" height="50" border="0"><p>
+<!-- Generated by Doxygen 1.5.6 -->
+<script type="text/javascript">
+<!--
+function changeDisplayState (e){
+ var num=this.id.replace(/[^[0-9]/g,'');
+ var button=this.firstChild;
+ var sectionDiv=document.getElementById('dynsection'+num);
+ if (sectionDiv.style.display=='none'||sectionDiv.style.display==''){
+ sectionDiv.style.display='block';
+ button.src='open.gif';
+ }else{
+ sectionDiv.style.display='none';
+ button.src='closed.gif';
+ }
+}
+function initDynSections(){
+ var divs=document.getElementsByTagName('div');
+ var sectionCounter=1;
+ for(var i=0;i<divs.length-1;i++){
+ if(divs[i].className=='dynheader'&&divs[i+1].className=='dynsection'){
+ var header=divs[i];
+ var section=divs[i+1];
+ var button=header.firstChild;
+ if (button!='IMG'){
+ divs[i].insertBefore(document.createTextNode(' '),divs[i].firstChild);
+ button=document.createElement('img');
+ divs[i].insertBefore(button,divs[i].firstChild);
+ }
+ header.style.cursor='pointer';
+ header.onclick=changeDisplayState;
+ header.id='dynheader'+sectionCounter;
+ button.src='closed.gif';
+ section.id='dynsection'+sectionCounter;
+ section.style.display='none';
+ section.style.marginLeft='14px';
+ sectionCounter++;
+ }
+ }
+}
+window.onload = initDynSections;
+-->
+</script>
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>TXMPFiles&lt; tStringObj &gt; Class Template Reference</h1><!-- doxytag: class="TXMPFiles" -->API for access to the main (document-level) metadata in a file.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="TXMPFiles_8hpp-source.html">TXMPFiles.hpp</a>&gt;</code>
+<p>
+
+<p>
+<a href="classTXMPFiles-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>File operations</h2></td></tr>
+<tr><td colspan="2">These functions allow you to open, close, and query files. <br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="XMP__Const_8h.html#300d9a9189cb4ddb6970d05389f5c28e">XMP_FileFormat</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#07b7c4b44fb0e0a7d115ddd5ba22f926">CheckFileFormat</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> filePath)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code><a class="el" href="classTXMPFiles.html#07b7c4b44fb0e0a7d115ddd5ba22f926" title="CheckFileFormat() tries to determine the format of a file.">CheckFileFormat()</a></code> tries to determine the format of a file. <a href="#07b7c4b44fb0e0a7d115ddd5ba22f926"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static <a class="el" href="XMP__Const_8h.html#300d9a9189cb4ddb6970d05389f5c28e">XMP_FileFormat</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#7f505664c41d7304fb757d6009b0751c">CheckPackageFormat</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> folderPath)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code><a class="el" href="classTXMPFiles.html#7f505664c41d7304fb757d6009b0751c" title="CheckPackageFormat() tries to determine the format of a &quot;package&quot; folder...">CheckPackageFormat()</a></code> tries to determine the format of a "package" folder. <a href="#7f505664c41d7304fb757d6009b0751c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#fcd21cfe5d6f13c648c5541e161919cb">OpenFile</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> filePath, <a class="el" href="XMP__Const_8h.html#300d9a9189cb4ddb6970d05389f5c28e">XMP_FileFormat</a> format=kXMP_UnknownFile, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> openFlags=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code><a class="el" href="classTXMPFiles.html#fcd21cfe5d6f13c648c5541e161919cb" title="OpenFile() opens a file for metadata access.">OpenFile()</a></code> opens a file for metadata access. <a href="#fcd21cfe5d6f13c648c5541e161919cb"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#cfef1688f3a62e2f465bb3a27da7b4ac">OpenFile</a> (const tStringObj &amp;filePath, <a class="el" href="XMP__Const_8h.html#300d9a9189cb4ddb6970d05389f5c28e">XMP_FileFormat</a> format=kXMP_UnknownFile, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> openFlags=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code><a class="el" href="classTXMPFiles.html#fcd21cfe5d6f13c648c5541e161919cb" title="OpenFile() opens a file for metadata access.">OpenFile()</a></code> opens a file for metadata access, using a string object <a href="#cfef1688f3a62e2f465bb3a27da7b4ac"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#eca89170c7aa3e2d56e30bff04dd7927">CloseFile</a> (<a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> closeFlags=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classTXMPFiles.html#eca89170c7aa3e2d56e30bff04dd7927" title="CloseFile() explicitly closes an opened file.">CloseFile()</a> explicitly closes an opened file. <a href="#eca89170c7aa3e2d56e30bff04dd7927"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#f9931d081cb19f98c81e41786030765b">GetFileInfo</a> (tStringObj *filePath=0, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> *openFlags=0, <a class="el" href="XMP__Const_8h.html#300d9a9189cb4ddb6970d05389f5c28e">XMP_FileFormat</a> *format=0, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> *handlerFlags=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code><a class="el" href="classTXMPFiles.html#f9931d081cb19f98c81e41786030765b" title="GetFileInfo() retrieves basic information about an opened file.">GetFileInfo()</a></code> retrieves basic information about an opened file. <a href="#f9931d081cb19f98c81e41786030765b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#7b86c130fdbd54b5ac158ec3fee93777">SetAbortProc</a> (<a class="el" href="XMP__Const_8h.html#a2738ce2fca7f1809b12834b1b5e2d0e">XMP_AbortProc</a> abortProc, void *abortArg)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code><a class="el" href="classTXMPFiles.html#7b86c130fdbd54b5ac158ec3fee93777" title="SetAbortProc() registers a callback function used to check for a user-signaled abort...">SetAbortProc()</a></code> registers a callback function used to check for a user-signaled abort. <a href="#7b86c130fdbd54b5ac158ec3fee93777"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Constructors and destructor</div></td></tr>
+<tr><td colspan="2"><div class="groupText">The default constructor initializes an object that is associated with no file. The alternate constructors call <code><a class="el" href="classTXMPFiles.html#fcd21cfe5d6f13c648c5541e161919cb" title="OpenFile() opens a file for metadata access.">OpenFile()</a></code>. <br><br></div></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="14f01e38454178578fd25fff6024fd54"></a><!-- doxytag: member="TXMPFiles::TXMPFiles" ref="14f01e38454178578fd25fff6024fd54" args="()" -->
+&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#14f01e38454178578fd25fff6024fd54">TXMPFiles</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor initializes an object that is associated with no file. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#5eaa92724cc82d933a32eff9c4636739">~TXMPFiles</a> () throw ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destructor; typical virtual destructor. <a href="#5eaa92724cc82d933a32eff9c4636739"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#36abe01988d4ca3939138e871c7b75e7">TXMPFiles</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> filePath, <a class="el" href="XMP__Const_8h.html#300d9a9189cb4ddb6970d05389f5c28e">XMP_FileFormat</a> format=kXMP_UnknownFile, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> openFlags=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Alternate constructor associates the new <code>XMPFiles</code> object with a specific file. <a href="#36abe01988d4ca3939138e871c7b75e7"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#f540b3ea689a6d7381dca4f52132a4ac">TXMPFiles</a> (const tStringObj &amp;filePath, <a class="el" href="XMP__Const_8h.html#300d9a9189cb4ddb6970d05389f5c28e">XMP_FileFormat</a> format=kXMP_UnknownFile, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> openFlags=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Alternate constructor associates the new <code>XMPFiles</code> object with a specific file, using a string object. <a href="#f540b3ea689a6d7381dca4f52132a4ac"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#cf343fb6771b482ca72d467233a6f920">TXMPFiles</a> (const <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt; &amp;original)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy constructor. <a href="#cf343fb6771b482ca72d467233a6f920"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#3f1483fcc92860460d3772216dfaef81">operator=</a> (const <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt; &amp;rhs)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Assignment operator. <a href="#3f1483fcc92860460d3772216dfaef81"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#d986c7b2e2d82eaef6cf6a33e9d09b65">TXMPFiles</a> (<a class="el" href="XMP__Const_8h.html#a4bca98ad67d7a62c60cb13dbbab0f25">XMPFilesRef</a> xmpFilesObj)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Reconstructs a <code><a class="el" href="classTXMPFiles.html" title="API for access to the main (document-level) metadata in a file.">TXMPFiles</a></code> object from an internal reference. <a href="#d986c7b2e2d82eaef6cf6a33e9d09b65"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="XMP__Const_8h.html#a4bca98ad67d7a62c60cb13dbbab0f25">XMPFilesRef</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#311fc36fdf7270fe05b1c531cdbbd009">GetInternalRef</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classTXMPFiles.html#311fc36fdf7270fe05b1c531cdbbd009" title="GetInternalRef() retrieves an internal reference that can be safely passed across...">GetInternalRef()</a> retrieves an internal reference that can be safely passed across DLL boundaries and reconstructed. <a href="#311fc36fdf7270fe05b1c531cdbbd009"></a><br></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Accessing metadata</div></td></tr>
+<tr><td colspan="2"><div class="groupText">These functions allow you to retrieve XMP metadata from open files, so that you can use the <code><a class="el" href="classTXMPMeta.html" title="API for access to the XMP Toolkit core services.">TXMPMeta</a></code> API to manipulate it. The <code><a class="el" href="classTXMPFiles.html#d3f7babdc07c7de0d0cd9a3362b4710a" title="PutXMP() updates the XMP metadata in this object without writing out the file.">PutXMP()</a></code> functions update the XMP packet in memory. Changed XMP is not actually written out to the file until the file is closed. <br><br></div></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#42ca0bbc5ac66a8de1710e03a7ff17b3">GetXMP</a> (SXMPMeta *xmpObj=0, tStringObj *xmpPacket=0, <a class="el" href="structXMP__PacketInfo.html">XMP_PacketInfo</a> *packetInfo=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code><a class="el" href="classTXMPFiles.html#42ca0bbc5ac66a8de1710e03a7ff17b3" title="GetXMP() retrieves the XMP metadata from an open file.">GetXMP()</a></code> retrieves the XMP metadata from an open file. <a href="#42ca0bbc5ac66a8de1710e03a7ff17b3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#4ea1eda39f803322e10b2a554ef8ab06">GetThumbnail</a> (<a class="el" href="structXMP__ThumbnailInfo.html">XMP_ThumbnailInfo</a> *tnailInfo)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code><a class="el" href="classTXMPFiles.html#4ea1eda39f803322e10b2a554ef8ab06" title="GetThumbnail() retrieves the native thumbnail from an open file.">GetThumbnail()</a></code> retrieves the native thumbnail from an open file. <a href="#4ea1eda39f803322e10b2a554ef8ab06"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#d3f7babdc07c7de0d0cd9a3362b4710a">PutXMP</a> (const SXMPMeta &amp;xmpObj)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code><a class="el" href="classTXMPFiles.html#d3f7babdc07c7de0d0cd9a3362b4710a" title="PutXMP() updates the XMP metadata in this object without writing out the file.">PutXMP()</a></code> updates the XMP metadata in this object without writing out the file. <a href="#d3f7babdc07c7de0d0cd9a3362b4710a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#da77eab74c3440659db3122f6ec8b7f4">PutXMP</a> (const tStringObj &amp;xmpPacket)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code><a class="el" href="classTXMPFiles.html#d3f7babdc07c7de0d0cd9a3362b4710a" title="PutXMP() updates the XMP metadata in this object without writing out the file.">PutXMP()</a></code> updates the XMP metadata in this object without writing out the file, using a string object for input. <a href="#da77eab74c3440659db3122f6ec8b7f4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#502ed01119e0421413e773f4f42683ec">PutXMP</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> xmpPacket, <a class="el" href="XMP__Const_8h.html#9f7dcc184f901c713274edfdac5bcc9a">XMP_StringLen</a> xmpLength=kXMP_UseNullTermination)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code><a class="el" href="classTXMPFiles.html#d3f7babdc07c7de0d0cd9a3362b4710a" title="PutXMP() updates the XMP metadata in this object without writing out the file.">PutXMP()</a></code> updates the XMP metadata in this object without writing out the file, using a string object and optional length. <a href="#502ed01119e0421413e773f4f42683ec"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#29a11a1539d6300da3fb4c7e9ea02bb6">CanPutXMP</a> (const SXMPMeta &amp;xmpObj)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code><a class="el" href="classTXMPFiles.html#29a11a1539d6300da3fb4c7e9ea02bb6" title="CanPutXMP() reports whether this file can be updated with a specific XMP packet.">CanPutXMP()</a></code> reports whether this file can be updated with a specific XMP packet. <a href="#29a11a1539d6300da3fb4c7e9ea02bb6"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#1d3f32c2b95659ada198775e2f67c808">CanPutXMP</a> (const tStringObj &amp;xmpPacket)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code><a class="el" href="classTXMPFiles.html#29a11a1539d6300da3fb4c7e9ea02bb6" title="CanPutXMP() reports whether this file can be updated with a specific XMP packet.">CanPutXMP()</a></code> reports whether this file can be updated with a specific XMP packet, passed in a string object. <a href="#1d3f32c2b95659ada198775e2f67c808"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#2303dfcc00f108bda202600e3da9c109">CanPutXMP</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> xmpPacket, <a class="el" href="XMP__Const_8h.html#9f7dcc184f901c713274edfdac5bcc9a">XMP_StringLen</a> xmpLength=kXMP_UseNullTermination)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code><a class="el" href="classTXMPFiles.html#29a11a1539d6300da3fb4c7e9ea02bb6" title="CanPutXMP() reports whether this file can be updated with a specific XMP packet.">CanPutXMP()</a></code> reports whether this file can be updated with a specific XMP packet, passed in a string object. <a href="#2303dfcc00f108bda202600e3da9c109"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Initialization and termination</div></td></tr>
+<tr><td colspan="2"><div class="groupText">A <code><a class="el" href="classTXMPFiles.html" title="API for access to the main (document-level) metadata in a file.">TXMPFiles</a></code> object must be initialized before use and can be terminated when done. <br><br></div></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#6e521c034728b59ab55213a9d8203d1e">GetVersionInfo</a> (<a class="el" href="structXMP__VersionInfo.html">XMP_VersionInfo</a> *versionInfo)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code><a class="el" href="classTXMPFiles.html#6e521c034728b59ab55213a9d8203d1e" title="GetVersionInfo() retrieves version information for the XMPFiles component.">GetVersionInfo()</a></code> retrieves version information for the XMPFiles component. <a href="#6e521c034728b59ab55213a9d8203d1e"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#0874bbbf41c9490abfb613bfe297327d">Initialize</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initializes the XMPFiles library; must be called before creating an <code>SXMPFiles</code> object. <a href="#0874bbbf41c9490abfb613bfe297327d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#794e1830a84a6328eaa1995ba5aa6874">Initialize</a> (<a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initializes the XMPFiles library; must be called before creating an <code>SXMPFiles</code> object. <a href="#794e1830a84a6328eaa1995ba5aa6874"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#1e8de80c252b60b332dc4bc524139fd8">Terminate</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Terminates use of the XMPFiles library. <a href="#1e8de80c252b60b332dc4bc524139fd8"></a><br></td></tr>
+<tr><td colspan="2"><div class="groupHeader">File handler information</div></td></tr>
+<tr><td colspan="2"><div class="groupText">Call this static function from the concrete class, <code>SXMPFiles</code>, to obtain information about the file handlers for the XMPFiles component. <br><br></div></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">*static bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#cb9e16a1477ec67fa6da6d736a9bc131">GetFormatInfo</a> (<a class="el" href="XMP__Const_8h.html#300d9a9189cb4ddb6970d05389f5c28e">XMP_FileFormat</a> format, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> *handlerFlags=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classTXMPFiles.html#cb9e16a1477ec67fa6da6d736a9bc131" title="GetFormatInfo() reports what features are supported for a specific file format.">GetFormatInfo()</a> reports what features are supported for a specific file format. <a href="#cb9e16a1477ec67fa6da6d736a9bc131"></a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<h3>template&lt;class tStringObj&gt;<br>
+ class TXMPFiles&lt; tStringObj &gt;</h3>
+
+API for access to the main (document-level) metadata in a file.
+<p>
+<code><a class="el" href="classTXMPFiles.html" title="API for access to the main (document-level) metadata in a file.">TXMPFiles</a></code> is a template class that provides the API for the Adobe XMP Toolkit's XMPFiles component. This provides convenient access to the main, or document level, XMP for a file. Use it to obtain metadata from a file, which you can then manipulate with the XMP Core component (the classes <code><a class="el" href="classTXMPMeta.html" title="API for access to the XMP Toolkit core services.">TXMPMeta</a></code>, <code><a class="el" href="classTXMPUtils.html" title="API for access to the XMP Toolkit utility services.">TXMPUtils</a></code>, and <code><a class="el" href="classTXMPIterator.html" title="API for access to the XMP Toolkit iteration services.">TXMPIterator</a></code>); and to write new or changed metadata back out to a file.<p>
+The functions allow you to open a file, read and write the metadata, then close the file. While open, portions of the file might be maintained in RAM data structures. Memory usage can vary considerably depending onfile format and access options.<p>
+A file can be opened for read-only or read-write access, with typical exclusion for both modes. Errors result in the throw of an <code>XMPError</code> exception.<p>
+<code><a class="el" href="classTXMPFiles.html" title="API for access to the main (document-level) metadata in a file.">TXMPFiles</a></code> is the template class. It must be instantiated with a string class such as <code>std::string</code>. Read the Toolkit Overview for information about the overall architecture of the XMP API, and the documentation for <code>XMP.hpp</code> for specific instantiation instructions.<p>
+Access these functions through the concrete class, <code>SXMPFiles</code>. <hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" name="5eaa92724cc82d933a32eff9c4636739"></a><!-- doxytag: member="TXMPFiles::~TXMPFiles" ref="5eaa92724cc82d933a32eff9c4636739" args="()" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">virtual <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::~<a class="el" href="classTXMPFiles.html">TXMPFiles</a> </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> throw ()<code> [virtual]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Destructor; typical virtual destructor.
+<p>
+The destructor does not call <code><a class="el" href="classTXMPFiles.html#eca89170c7aa3e2d56e30bff04dd7927" title="CloseFile() explicitly closes an opened file.">CloseFile()</a></code>; pending updates are lost when the destructor is run.<p>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><code><a class="el" href="classTXMPFiles.html#fcd21cfe5d6f13c648c5541e161919cb" title="OpenFile() opens a file for metadata access.">OpenFile()</a></code>, <code><a class="el" href="classTXMPFiles.html#eca89170c7aa3e2d56e30bff04dd7927" title="CloseFile() explicitly closes an opened file.">CloseFile()</a></code> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="36abe01988d4ca3939138e871c7b75e7"></a><!-- doxytag: member="TXMPFiles::TXMPFiles" ref="36abe01988d4ca3939138e871c7b75e7" args="(XMP_StringPtr filePath, XMP_FileFormat format=kXMP_UnknownFile, XMP_OptionBits openFlags=0)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::<a class="el" href="classTXMPFiles.html">TXMPFiles</a> </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>filePath</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#300d9a9189cb4ddb6970d05389f5c28e">XMP_FileFormat</a>&nbsp;</td>
+ <td class="paramname"> <em>format</em> = <code>kXMP_UnknownFile</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a>&nbsp;</td>
+ <td class="paramname"> <em>openFlags</em> = <code>0</code></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Alternate constructor associates the new <code>XMPFiles</code> object with a specific file.
+<p>
+Calls <code><a class="el" href="classTXMPFiles.html#fcd21cfe5d6f13c648c5541e161919cb" title="OpenFile() opens a file for metadata access.">OpenFile()</a></code> to open the specified file after performing a default construct.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>filePath</em>&nbsp;</td><td>The path for the file, specified as a nul-terminated UTF-8 string.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>format</em>&nbsp;</td><td>A format hint for the file, if known.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>openFlags</em>&nbsp;</td><td>Options for how the file is to be opened (for read or read/write, for example). Use a logical OR of these bit-flag constants:</td></tr>
+ </table>
+</dl>
+<ul>
+<li><code><a class="el" href="XMP__Const_8h.html#6b7b47dd702d9e331586d485013fd1ea4c61ec4ed571dbc5f1832ff6772320d2" title="Open for read-only access.">kXMPFiles_OpenForRead</a></code> </li>
+<li><code><a class="el" href="XMP__Const_8h.html#6b7b47dd702d9e331586d485013fd1ea91fa388b3888bcb6a68615537b66a49b" title="Open for reading and writing.">kXMPFiles_OpenForUpdate</a></code> </li>
+<li><code><a class="el" href="XMP__Const_8h.html#6b7b47dd702d9e331586d485013fd1eaa58279b2b1311242e7374117f455bb96" title="Only the XMP is wanted, allows space/time optimizations.">kXMPFiles_OpenOnlyXMP</a></code> </li>
+<li><code><a class="el" href="XMP__Const_8h.html#6b7b47dd702d9e331586d485013fd1eaca2002b03d2a88da0203bf52a3122063" title="Cache thumbnail if possible, TXMPFiles::GetThumbnail() will be called.">kXMPFiles_OpenCacheTNail</a></code> </li>
+<li><code><a class="el" href="XMP__Const_8h.html#6b7b47dd702d9e331586d485013fd1ea0bef4db2ecdaf82a85df9e9d417aab18" title="Be strict about locating XMP and reconciling with other forms.">kXMPFiles_OpenStrictly</a></code> </li>
+<li><code><a class="el" href="XMP__Const_8h.html#6b7b47dd702d9e331586d485013fd1eaf6332435c7fc89cb0b7381e13fe43646" title="Require the use of a smart handler.">kXMPFiles_OpenUseSmartHandler</a></code> </li>
+<li><code><a class="el" href="XMP__Const_8h.html#6b7b47dd702d9e331586d485013fd1ea77b47c63e579b28cbd25083ceb58c285" title="Force packet scanning, do not use a smart handler.">kXMPFiles_OpenUsePacketScanning</a></code> </li>
+<li><code><a class="el" href="XMP__Const_8h.html#6b7b47dd702d9e331586d485013fd1ea77f34b1873bb2584feabe26a2c8f1182" title="Only packet scan files &quot;known&quot; to need scanning.">kXMPFiles_OpenLimitedScanning</a></code> </li>
+<li><code><a class="el" href="XMP__Const_8h.html#6b7b47dd702d9e331586d485013fd1eafaccd8151900b2c7fc3e7de598a92d34" title="Set if calling from background thread.">kXMPFiles_OpenInBackground</a></code> </li>
+</ul>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>The new <code><a class="el" href="classTXMPFiles.html" title="API for access to the main (document-level) metadata in a file.">TXMPFiles</a></code> object. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="f540b3ea689a6d7381dca4f52132a4ac"></a><!-- doxytag: member="TXMPFiles::TXMPFiles" ref="f540b3ea689a6d7381dca4f52132a4ac" args="(const tStringObj &amp;filePath, XMP_FileFormat format=kXMP_UnknownFile, XMP_OptionBits openFlags=0)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::<a class="el" href="classTXMPFiles.html">TXMPFiles</a> </td>
+ <td>(</td>
+ <td class="paramtype">const tStringObj &amp;&nbsp;</td>
+ <td class="paramname"> <em>filePath</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#300d9a9189cb4ddb6970d05389f5c28e">XMP_FileFormat</a>&nbsp;</td>
+ <td class="paramname"> <em>format</em> = <code>kXMP_UnknownFile</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a>&nbsp;</td>
+ <td class="paramname"> <em>openFlags</em> = <code>0</code></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Alternate constructor associates the new <code>XMPFiles</code> object with a specific file, using a string object.
+<p>
+Overloads the basic form of the function, allowing you to pass a string object for the file path. It is otherwise identical; see details in the canonical form.
+</div>
+</div><p>
+<a class="anchor" name="cf343fb6771b482ca72d467233a6f920"></a><!-- doxytag: member="TXMPFiles::TXMPFiles" ref="cf343fb6771b482ca72d467233a6f920" args="(const TXMPFiles&lt; tStringObj &gt; &amp;original)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::<a class="el" href="classTXMPFiles.html">TXMPFiles</a> </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt; &amp;&nbsp;</td>
+ <td class="paramname"> <em>original</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copy constructor.
+<p>
+Increments an internal reference count but does not perform a deep copy.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>original</em>&nbsp;</td><td>The existing <code><a class="el" href="classTXMPFiles.html" title="API for access to the main (document-level) metadata in a file.">TXMPFiles</a></code> object to copy.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>The new <code><a class="el" href="classTXMPFiles.html" title="API for access to the main (document-level) metadata in a file.">TXMPFiles</a></code> object. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="d986c7b2e2d82eaef6cf6a33e9d09b65"></a><!-- doxytag: member="TXMPFiles::TXMPFiles" ref="d986c7b2e2d82eaef6cf6a33e9d09b65" args="(XMPFilesRef xmpFilesObj)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::<a class="el" href="classTXMPFiles.html">TXMPFiles</a> </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#a4bca98ad67d7a62c60cb13dbbab0f25">XMPFilesRef</a>&nbsp;</td>
+ <td class="paramname"> <em>xmpFilesObj</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Reconstructs a <code><a class="el" href="classTXMPFiles.html" title="API for access to the main (document-level) metadata in a file.">TXMPFiles</a></code> object from an internal reference.
+<p>
+This constructor creates a new <code><a class="el" href="classTXMPFiles.html" title="API for access to the main (document-level) metadata in a file.">TXMPFiles</a></code> object that refers to the underlying reference object of an existing <code><a class="el" href="classTXMPFiles.html" title="API for access to the main (document-level) metadata in a file.">TXMPFiles</a></code> object. Use to safely pass <code>SXMPFiles</code> references across DLL boundaries.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>xmpFilesObj</em>&nbsp;</td><td>The underlying reference object, obtained from some other XMP object with <code><a class="el" href="classTXMPFiles.html#311fc36fdf7270fe05b1c531cdbbd009" title="GetInternalRef() retrieves an internal reference that can be safely passed across...">TXMPFiles::GetInternalRef()</a></code>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>The new object. </dd></dl>
+
+</div>
+</div><p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="6e521c034728b59ab55213a9d8203d1e"></a><!-- doxytag: member="TXMPFiles::GetVersionInfo" ref="6e521c034728b59ab55213a9d8203d1e" args="(XMP_VersionInfo *versionInfo)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">static void <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::GetVersionInfo </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structXMP__VersionInfo.html">XMP_VersionInfo</a> *&nbsp;</td>
+ <td class="paramname"> <em>versionInfo</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<code><a class="el" href="classTXMPFiles.html#6e521c034728b59ab55213a9d8203d1e" title="GetVersionInfo() retrieves version information for the XMPFiles component.">GetVersionInfo()</a></code> retrieves version information for the XMPFiles component.
+<p>
+Can be called before <code><a class="el" href="classTXMPFiles.html#0874bbbf41c9490abfb613bfe297327d" title="Initializes the XMPFiles library; must be called before creating an SXMPFiles object...">Initialize()</a></code>. This function is static; make the call directly from the concrete class (<code>SXMPFiles</code>).<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>versionInfo</em>&nbsp;</td><td>[out] A buffer in which to return the version information. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="0874bbbf41c9490abfb613bfe297327d"></a><!-- doxytag: member="TXMPFiles::Initialize" ref="0874bbbf41c9490abfb613bfe297327d" args="()" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">static bool <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::Initialize </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Initializes the XMPFiles library; must be called before creating an <code>SXMPFiles</code> object.
+<p>
+The main action is to activate the available smart file handlers. Must be called before using any methods except <code><a class="el" href="classTXMPFiles.html#6e521c034728b59ab55213a9d8203d1e" title="GetVersionInfo() retrieves version information for the XMPFiles component.">GetVersionInfo()</a></code>.<p>
+This function is static; make the call directly from the concrete class (<code>SXMPFiles</code>).<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>True on success. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="794e1830a84a6328eaa1995ba5aa6874"></a><!-- doxytag: member="TXMPFiles::Initialize" ref="794e1830a84a6328eaa1995ba5aa6874" args="(XMP_OptionBits options)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">static bool <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::Initialize </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a>&nbsp;</td>
+ <td class="paramname"> <em>options</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Initializes the XMPFiles library; must be called before creating an <code>SXMPFiles</code> object.
+<p>
+This overload of <a class="el" href="classTXMPFiles.html#0874bbbf41c9490abfb613bfe297327d" title="Initializes the XMPFiles library; must be called before creating an SXMPFiles object...">TXMPFiles::Initialize()</a> accepts option bits to customize the initialization actions. At this time only one option is defined, <code>kXMPFiles_NoQuickTimeInit</code>. This option prevents calling the QuickTime initialization on Windows, which can be slow. The MOV file handler on Windows uses Apple's QuickTime SDK for the actual file I/O.<p>
+The main action is to activate the available smart file handlers. Must be called before using any methods except <code><a class="el" href="classTXMPFiles.html#6e521c034728b59ab55213a9d8203d1e" title="GetVersionInfo() retrieves version information for the XMPFiles component.">GetVersionInfo()</a></code>.<p>
+This function is static; make the call directly from the concrete class (<code>SXMPFiles</code>).<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>options</em>&nbsp;</td><td>Option flags to control the initialization actions.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>True on success. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="1e8de80c252b60b332dc4bc524139fd8"></a><!-- doxytag: member="TXMPFiles::Terminate" ref="1e8de80c252b60b332dc4bc524139fd8" args="()" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">static void <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::Terminate </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Terminates use of the XMPFiles library.
+<p>
+Optional. Deallocates global data structures created by intialization. Its main action is to deallocate heap-allocated global storage, for the benefit of client leak checkers.<p>
+This function is static; make the call directly from the concrete class (<code>SXMPFiles</code>).
+</div>
+</div><p>
+<a class="anchor" name="3f1483fcc92860460d3772216dfaef81"></a><!-- doxytag: member="TXMPFiles::operator=" ref="3f1483fcc92860460d3772216dfaef81" args="(const TXMPFiles&lt; tStringObj &gt; &amp;rhs)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">void <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::operator= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt; &amp;&nbsp;</td>
+ <td class="paramname"> <em>rhs</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Assignment operator.
+<p>
+Increments an internal reference count but does not perform a deep copy.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>rhs</em>&nbsp;</td><td>The existing <code><a class="el" href="classTXMPFiles.html" title="API for access to the main (document-level) metadata in a file.">TXMPFiles</a></code> object. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="311fc36fdf7270fe05b1c531cdbbd009"></a><!-- doxytag: member="TXMPFiles::GetInternalRef" ref="311fc36fdf7270fe05b1c531cdbbd009" args="()" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="XMP__Const_8h.html#a4bca98ad67d7a62c60cb13dbbab0f25">XMPFilesRef</a> <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::GetInternalRef </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<a class="el" href="classTXMPFiles.html#311fc36fdf7270fe05b1c531cdbbd009" title="GetInternalRef() retrieves an internal reference that can be safely passed across...">GetInternalRef()</a> retrieves an internal reference that can be safely passed across DLL boundaries and reconstructed.
+<p>
+Use with the reconstruction constructor to safely pass <code>SXMPFiles</code> references across DLL boundaries where the clients might have used different string types when instantiating <code><a class="el" href="classTXMPFiles.html" title="API for access to the main (document-level) metadata in a file.">TXMPFiles</a></code>.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>The internal reference.</dd></dl>
+<dl class="see" compact><dt><b>See also:</b></dt><dd><code><a class="el" href="classTXMPMeta.html#fbfebded0b85b08bd9c5ba0d7dae07e0" title="Retrieves an internal reference that can be safely passed across DLL boundaries and...">TXMPMeta::GetInternalRef()</a></code> for usage. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="cb9e16a1477ec67fa6da6d736a9bc131"></a><!-- doxytag: member="TXMPFiles::GetFormatInfo" ref="cb9e16a1477ec67fa6da6d736a9bc131" args="(XMP_FileFormat format, XMP_OptionBits *handlerFlags=0)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">* static bool <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::GetFormatInfo </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#300d9a9189cb4ddb6970d05389f5c28e">XMP_FileFormat</a>&nbsp;</td>
+ <td class="paramname"> <em>format</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> *&nbsp;</td>
+ <td class="paramname"> <em>handlerFlags</em> = <code>0</code></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<a class="el" href="classTXMPFiles.html#cb9e16a1477ec67fa6da6d736a9bc131" title="GetFormatInfo() reports what features are supported for a specific file format.">GetFormatInfo()</a> reports what features are supported for a specific file format.
+<p>
+The file handlers for different file formats vary considerably in what features they support. Support depends on both the general capabilities of the format and the implementation of the handler for that format.<p>
+This function is static; make the call directly from the concrete class (<code>SXMPFiles</code>).<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>format</em>&nbsp;</td><td>The file format whose support flags are desired.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>handlerFlags</em>&nbsp;</td><td>[out] A buffer in which to return a logical OR of option bit flags. The following constants are defined:</td></tr>
+ </table>
+</dl>
+<ul>
+<li><code><a class="el" href="XMP__Const_8h.html#80155586fa275b28773c9b203f52caba23a3eb2a5e95292036a93ad6666fa388" title="Can inject first-time XMP into an existing file.">kXMPFiles_CanInjectXMP</a></code> - Can inject first-time XMP into an existing file. </li>
+<li><code><a class="el" href="XMP__Const_8h.html#80155586fa275b28773c9b203f52caba126c9cc056f6569c424431edbcb9521c" title="Can expand XMP or other metadata in an existing file.">kXMPFiles_CanExpand</a></code> - Can expand XMP or other metadata in an existing file. </li>
+<li><code><a class="el" href="XMP__Const_8h.html#80155586fa275b28773c9b203f52caba8957f1ef358b4ab3a1df519903f2ae07" title="Can copy one file to another, writing new metadata.">kXMPFiles_CanRewrite</a></code> - Can copy one file to another, writing new metadata (as in SaveAs) </li>
+<li><code><a class="el" href="XMP__Const_8h.html#80155586fa275b28773c9b203f52cabafc2bc7cfdd28a326788d563ec0357694" title="Supports reconciliation between XMP and other forms.">kXMPFiles_CanReconcile</a></code> - Supports reconciliation between XMP and other forms. </li>
+<li><code><a class="el" href="XMP__Const_8h.html#80155586fa275b28773c9b203f52caba4a183c3ec4994cf09993e5b31dee9733" title="Allows access to just the XMP, ignoring other forms.">kXMPFiles_AllowsOnlyXMP</a></code> - Allows access to just the XMP, ignoring other forms. This is only meaningful if <code><a class="el" href="XMP__Const_8h.html#80155586fa275b28773c9b203f52cabafc2bc7cfdd28a326788d563ec0357694" title="Supports reconciliation between XMP and other forms.">kXMPFiles_CanReconcile</a></code> is set. </li>
+<li><code><a class="el" href="XMP__Const_8h.html#80155586fa275b28773c9b203f52cabaf7fe49636dc1fcc0d6938d4b6fb83a09" title="File handler returns native thumbnail.">kXMPFiles_ReturnsTNail</a></code> - File handler returns native thumbnail information. </li>
+<li><code><a class="el" href="XMP__Const_8h.html#80155586fa275b28773c9b203f52cabadb116eed738d1fcdfe4ab9c1635e08ea" title="File handler returns raw XMP packet information.">kXMPFiles_ReturnsRawPacket</a></code> - File handler returns raw XMP packet information and string.</li>
+</ul>
+Even if <code><a class="el" href="XMP__Const_8h.html#80155586fa275b28773c9b203f52cabadb116eed738d1fcdfe4ab9c1635e08ea" title="File handler returns raw XMP packet information.">kXMPFiles_ReturnsRawPacket</a></code> is set, the returned packet information might have an offset of -1 to indicate an unknown offset. While all file handlers should be able to return the raw packet, some might not know the offset of the packet within the file. This is typical in cases where external libraries are used. These cases might not even allow return of the raw packet.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if the format has explicit "smart" support, false if the format is handled by the default packet scanning plus heuristics. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="07b7c4b44fb0e0a7d115ddd5ba22f926"></a><!-- doxytag: member="TXMPFiles::CheckFileFormat" ref="07b7c4b44fb0e0a7d115ddd5ba22f926" args="(XMP_StringPtr filePath)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="XMP__Const_8h.html#300d9a9189cb4ddb6970d05389f5c28e">XMP_FileFormat</a> <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::CheckFileFormat </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>filePath</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<code><a class="el" href="classTXMPFiles.html#07b7c4b44fb0e0a7d115ddd5ba22f926" title="CheckFileFormat() tries to determine the format of a file.">CheckFileFormat()</a></code> tries to determine the format of a file.
+<p>
+<code>CheckFileFormat</code> tries to determine the format of a file, returning an XMP_FileFormat value. It uses the same logic as <code>OpenFile</code> will use to select a smart handler.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>filePath</em>&nbsp;</td><td>The path for the file, appropriate for the local operating system. Passed as a nul-terminated UTF-8 string. The path is the same as would be passed to <code>OpenFile</code>.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>The file's format if a smart handler would be selected, otherwise <code>kXMP_UnknownFile</code>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="7f505664c41d7304fb757d6009b0751c"></a><!-- doxytag: member="TXMPFiles::CheckPackageFormat" ref="7f505664c41d7304fb757d6009b0751c" args="(XMP_StringPtr folderPath)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">static <a class="el" href="XMP__Const_8h.html#300d9a9189cb4ddb6970d05389f5c28e">XMP_FileFormat</a> <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::CheckPackageFormat </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>folderPath</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<code><a class="el" href="classTXMPFiles.html#7f505664c41d7304fb757d6009b0751c" title="CheckPackageFormat() tries to determine the format of a &quot;package&quot; folder...">CheckPackageFormat()</a></code> tries to determine the format of a "package" folder.
+<p>
+<code>CheckPackageFormat</code> tries to determine the format of a "package" given the name of the top level folder, returning an XMP_FileFormat value. Examples of recognized packages include the video formats P2, XDCAM, or Sony HDV. These packages contain collections of "clips", stored as multiple files in specific subfolders.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>folderPath</em>&nbsp;</td><td>The path for the top level folder, appropriate for the local operating system. Passed as a nul-terminated UTF-8 string. The path is not the same as would be passed to <code>OpenFile</code>. For example the path passed to <code>CheckPackageFormat</code> might be ".../MyMovie", while the path passed to <code>OpenFile</code> would be ".../MyMovie/SomeClip".</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>The package's format if a smart handler would be selected, otherwise <code>kXMP_UnknownFile</code>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="fcd21cfe5d6f13c648c5541e161919cb"></a><!-- doxytag: member="TXMPFiles::OpenFile" ref="fcd21cfe5d6f13c648c5541e161919cb" args="(XMP_StringPtr filePath, XMP_FileFormat format=kXMP_UnknownFile, XMP_OptionBits openFlags=0)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">bool <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::OpenFile </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>filePath</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#300d9a9189cb4ddb6970d05389f5c28e">XMP_FileFormat</a>&nbsp;</td>
+ <td class="paramname"> <em>format</em> = <code>kXMP_UnknownFile</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a>&nbsp;</td>
+ <td class="paramname"> <em>openFlags</em> = <code>0</code></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<code><a class="el" href="classTXMPFiles.html#fcd21cfe5d6f13c648c5541e161919cb" title="OpenFile() opens a file for metadata access.">OpenFile()</a></code> opens a file for metadata access.
+<p>
+Opens a file for the requested forms of metadata access. Opening the file at a minimum causes the raw XMP packet to be read from the file. If the file handler supports legacy metadata reconciliation then legacy metadata is also read, unless <code><a class="el" href="XMP__Const_8h.html#6b7b47dd702d9e331586d485013fd1eaa58279b2b1311242e7374117f455bb96" title="Only the XMP is wanted, allows space/time optimizations.">kXMPFiles_OpenOnlyXMP</a></code> is passed. If the file handler supports native thumbnails and <code><a class="el" href="XMP__Const_8h.html#6b7b47dd702d9e331586d485013fd1eaca2002b03d2a88da0203bf52a3122063" title="Cache thumbnail if possible, TXMPFiles::GetThumbnail() will be called.">kXMPFiles_OpenCacheTNail</a></code> is passed, the native thumbnail is cached.<p>
+If the file is opened for read-only access (passing <code><a class="el" href="XMP__Const_8h.html#6b7b47dd702d9e331586d485013fd1ea4c61ec4ed571dbc5f1832ff6772320d2" title="Open for read-only access.">kXMPFiles_OpenForRead</a></code>), the disk file is closed immediately after reading the data from it; the <code>XMPFiles</code> object, however, remains in the open state. You must call <code><a class="el" href="classTXMPFiles.html#eca89170c7aa3e2d56e30bff04dd7927" title="CloseFile() explicitly closes an opened file.">CloseFile()</a></code> when finished using it. Other methods, such as <code><a class="el" href="classTXMPFiles.html#42ca0bbc5ac66a8de1710e03a7ff17b3" title="GetXMP() retrieves the XMP metadata from an open file.">GetXMP()</a></code>, can only be used between the <code><a class="el" href="classTXMPFiles.html#fcd21cfe5d6f13c648c5541e161919cb" title="OpenFile() opens a file for metadata access.">OpenFile()</a></code> and <code><a class="el" href="classTXMPFiles.html#eca89170c7aa3e2d56e30bff04dd7927" title="CloseFile() explicitly closes an opened file.">CloseFile()</a></code> calls. The <code>XMPFiles</code> destructor does not call <code><a class="el" href="classTXMPFiles.html#eca89170c7aa3e2d56e30bff04dd7927" title="CloseFile() explicitly closes an opened file.">CloseFile()</a></code>; if you call it without closing, any pending updates are lost.<p>
+If the file is opened for update (passing <code><a class="el" href="XMP__Const_8h.html#6b7b47dd702d9e331586d485013fd1ea91fa388b3888bcb6a68615537b66a49b" title="Open for reading and writing.">kXMPFiles_OpenForUpdate</a></code>), the disk file remains open until <code><a class="el" href="classTXMPFiles.html#eca89170c7aa3e2d56e30bff04dd7927" title="CloseFile() explicitly closes an opened file.">CloseFile()</a></code> is called. The disk file is only updated once, when <code><a class="el" href="classTXMPFiles.html#eca89170c7aa3e2d56e30bff04dd7927" title="CloseFile() explicitly closes an opened file.">CloseFile()</a></code> is called, regardless of how many calls are made to <code><a class="el" href="classTXMPFiles.html#d3f7babdc07c7de0d0cd9a3362b4710a" title="PutXMP() updates the XMP metadata in this object without writing out the file.">PutXMP()</a></code>.<p>
+Typically, the XMP is not parsed and legacy reconciliation is not performed until <code><a class="el" href="classTXMPFiles.html#42ca0bbc5ac66a8de1710e03a7ff17b3" title="GetXMP() retrieves the XMP metadata from an open file.">GetXMP()</a></code> is called, but this is not guaranteed. Specific file handlers might do earlier parsing of the XMP. Delayed parsing and early disk file close for read-only access are optimizations to help clients implementing file browsers, so that they can access the file briefly and possibly display a thumbnail, then postpone more expensive XMP processing until later.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>filePath</em>&nbsp;</td><td>The path for the file, appropriate for the local operating system. Passed as a nul-terminated UTF-8 string.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>format</em>&nbsp;</td><td>The format of the file. If the format is unknown (<code><a class="el" href="XMP__Const_8h.html#385c44f6fb256e5716a2302a5b9403882845f95eaaaf492f5011bff05a398719" title="Unknown file format constant: &#39; &#39;.">kXMP_UnknownFile</a></code>) the format is determined from the file content. The first handler to check is guessed from the file's extension. Passing a specific format value is generally just a hint about what file handler to try first (instead of the one based on the extension). If <code><a class="el" href="XMP__Const_8h.html#6b7b47dd702d9e331586d485013fd1ea0bef4db2ecdaf82a85df9e9d417aab18" title="Be strict about locating XMP and reconciling with other forms.">kXMPFiles_OpenStrictly</a></code> is set, then any format other than <code><a class="el" href="XMP__Const_8h.html#385c44f6fb256e5716a2302a5b9403882845f95eaaaf492f5011bff05a398719" title="Unknown file format constant: &#39; &#39;.">kXMP_UnknownFile</a></code> requires that the file actually be that format; otherwise an exception is thrown.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>openFlags</em>&nbsp;</td><td>A set of option flags that describe the desired access. By default (zero) the file is opened for read-only access and the format handler decides on the level of reconciliation that will be performed. A logical OR of these bit-flag constants:</td></tr>
+ </table>
+</dl>
+<ul>
+<li><code><a class="el" href="XMP__Const_8h.html#6b7b47dd702d9e331586d485013fd1ea4c61ec4ed571dbc5f1832ff6772320d2" title="Open for read-only access.">kXMPFiles_OpenForRead</a></code> - Open for read-only access. </li>
+<li><code><a class="el" href="XMP__Const_8h.html#6b7b47dd702d9e331586d485013fd1ea91fa388b3888bcb6a68615537b66a49b" title="Open for reading and writing.">kXMPFiles_OpenForUpdate</a></code> - Open for reading and writing. </li>
+<li><code><a class="el" href="XMP__Const_8h.html#6b7b47dd702d9e331586d485013fd1eaa58279b2b1311242e7374117f455bb96" title="Only the XMP is wanted, allows space/time optimizations.">kXMPFiles_OpenOnlyXMP</a></code> - Only the XMP is wanted, no reconciliation. </li>
+<li><code><a class="el" href="XMP__Const_8h.html#6b7b47dd702d9e331586d485013fd1eaca2002b03d2a88da0203bf52a3122063" title="Cache thumbnail if possible, TXMPFiles::GetThumbnail() will be called.">kXMPFiles_OpenCacheTNail</a></code> - Cache thumbnail if possible, GetThumbnail will be called. </li>
+<li><code><a class="el" href="XMP__Const_8h.html#6b7b47dd702d9e331586d485013fd1ea0bef4db2ecdaf82a85df9e9d417aab18" title="Be strict about locating XMP and reconciling with other forms.">kXMPFiles_OpenStrictly</a></code> - Be strict about locating XMP and reconciling with other forms. By default, a best effort is made to locate the correct XMP and to reconcile XMP with other forms (if reconciliation is done). This option forces stricter rules, resulting in exceptions for errors. The definition of strictness is specific to each handler, there might be no difference. </li>
+<li><code><a class="el" href="XMP__Const_8h.html#6b7b47dd702d9e331586d485013fd1eaf6332435c7fc89cb0b7381e13fe43646" title="Require the use of a smart handler.">kXMPFiles_OpenUseSmartHandler</a></code> - Require the use of a smart handler. </li>
+<li><code><a class="el" href="XMP__Const_8h.html#6b7b47dd702d9e331586d485013fd1ea77b47c63e579b28cbd25083ceb58c285" title="Force packet scanning, do not use a smart handler.">kXMPFiles_OpenUsePacketScanning</a></code> - Force packet scanning, do not use a smart handler.</li>
+</ul>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if the file is succesfully opened and attached to a file handler. False for anticipated problems, such as passing <code><a class="el" href="XMP__Const_8h.html#6b7b47dd702d9e331586d485013fd1eaf6332435c7fc89cb0b7381e13fe43646" title="Require the use of a smart handler.">kXMPFiles_OpenUseSmartHandler</a></code> but not having an appropriate smart handler. Throws an exception for serious problems. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="cfef1688f3a62e2f465bb3a27da7b4ac"></a><!-- doxytag: member="TXMPFiles::OpenFile" ref="cfef1688f3a62e2f465bb3a27da7b4ac" args="(const tStringObj &amp;filePath, XMP_FileFormat format=kXMP_UnknownFile, XMP_OptionBits openFlags=0)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">bool <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::OpenFile </td>
+ <td>(</td>
+ <td class="paramtype">const tStringObj &amp;&nbsp;</td>
+ <td class="paramname"> <em>filePath</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#300d9a9189cb4ddb6970d05389f5c28e">XMP_FileFormat</a>&nbsp;</td>
+ <td class="paramname"> <em>format</em> = <code>kXMP_UnknownFile</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a>&nbsp;</td>
+ <td class="paramname"> <em>openFlags</em> = <code>0</code></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<code><a class="el" href="classTXMPFiles.html#fcd21cfe5d6f13c648c5541e161919cb" title="OpenFile() opens a file for metadata access.">OpenFile()</a></code> opens a file for metadata access, using a string object
+<p>
+Overloads the basic form of the function, allowing you to pass a string object for the file path. It is otherwise identical; see details in the canonical form.
+</div>
+</div><p>
+<a class="anchor" name="eca89170c7aa3e2d56e30bff04dd7927"></a><!-- doxytag: member="TXMPFiles::CloseFile" ref="eca89170c7aa3e2d56e30bff04dd7927" args="(XMP_OptionBits closeFlags=0)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">void <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::CloseFile </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a>&nbsp;</td>
+ <td class="paramname"> <em>closeFlags</em> = <code>0</code> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<a class="el" href="classTXMPFiles.html#eca89170c7aa3e2d56e30bff04dd7927" title="CloseFile() explicitly closes an opened file.">CloseFile()</a> explicitly closes an opened file.
+<p>
+Performs any necessary output to the file and closes it. Files that are opened for update are written to only when closing.<p>
+If the file is opened for read-only access (passing <code><a class="el" href="XMP__Const_8h.html#6b7b47dd702d9e331586d485013fd1ea4c61ec4ed571dbc5f1832ff6772320d2" title="Open for read-only access.">kXMPFiles_OpenForRead</a></code>), the disk file is closed immediately after reading the data from it; the <code>XMPFiles</code> object, however, remains in the open state. You must call <code><a class="el" href="classTXMPFiles.html#eca89170c7aa3e2d56e30bff04dd7927" title="CloseFile() explicitly closes an opened file.">CloseFile()</a></code> when finished using it. Other methods, such as <code><a class="el" href="classTXMPFiles.html#42ca0bbc5ac66a8de1710e03a7ff17b3" title="GetXMP() retrieves the XMP metadata from an open file.">GetXMP()</a></code>, can only be used between the <code><a class="el" href="classTXMPFiles.html#fcd21cfe5d6f13c648c5541e161919cb" title="OpenFile() opens a file for metadata access.">OpenFile()</a></code> and <code><a class="el" href="classTXMPFiles.html#eca89170c7aa3e2d56e30bff04dd7927" title="CloseFile() explicitly closes an opened file.">CloseFile()</a></code> calls. The <code>XMPFiles</code> destructor does not call <code><a class="el" href="classTXMPFiles.html#eca89170c7aa3e2d56e30bff04dd7927" title="CloseFile() explicitly closes an opened file.">CloseFile()</a></code>; if you call it without closing, any pending updates are lost.<p>
+If the file is opened for update (passing <code><a class="el" href="XMP__Const_8h.html#6b7b47dd702d9e331586d485013fd1ea91fa388b3888bcb6a68615537b66a49b" title="Open for reading and writing.">kXMPFiles_OpenForUpdate</a></code>), the disk file remains open until <code><a class="el" href="classTXMPFiles.html#eca89170c7aa3e2d56e30bff04dd7927" title="CloseFile() explicitly closes an opened file.">CloseFile()</a></code> is called. The disk file is only updated once, when <code><a class="el" href="classTXMPFiles.html#eca89170c7aa3e2d56e30bff04dd7927" title="CloseFile() explicitly closes an opened file.">CloseFile()</a></code> is called, regardless of how many calls are made to <code><a class="el" href="classTXMPFiles.html#d3f7babdc07c7de0d0cd9a3362b4710a" title="PutXMP() updates the XMP metadata in this object without writing out the file.">PutXMP()</a></code>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>closeFlags</em>&nbsp;</td><td>Option flags for optional closing actions. This bit-flag constant is defined:</td></tr>
+ </table>
+</dl>
+<ul>
+<li><code><a class="el" href="XMP__Const_8h.html#f9bdc3014f3d54c426b6d2df10de4960dbf8d744f355ef9800a4ec44325baf54" title="Write into a temporary file and swap for crash safety.">kXMPFiles_UpdateSafely</a></code> - Write into a temporary file then swap for crash safety. </li>
+</ul>
+
+</div>
+</div><p>
+<a class="anchor" name="f9931d081cb19f98c81e41786030765b"></a><!-- doxytag: member="TXMPFiles::GetFileInfo" ref="f9931d081cb19f98c81e41786030765b" args="(tStringObj *filePath=0, XMP_OptionBits *openFlags=0, XMP_FileFormat *format=0, XMP_OptionBits *handlerFlags=0)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">bool <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::GetFileInfo </td>
+ <td>(</td>
+ <td class="paramtype">tStringObj *&nbsp;</td>
+ <td class="paramname"> <em>filePath</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> *&nbsp;</td>
+ <td class="paramname"> <em>openFlags</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#300d9a9189cb4ddb6970d05389f5c28e">XMP_FileFormat</a> *&nbsp;</td>
+ <td class="paramname"> <em>format</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> *&nbsp;</td>
+ <td class="paramname"> <em>handlerFlags</em> = <code>0</code></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<code><a class="el" href="classTXMPFiles.html#f9931d081cb19f98c81e41786030765b" title="GetFileInfo() retrieves basic information about an opened file.">GetFileInfo()</a></code> retrieves basic information about an opened file.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>filePath</em>&nbsp;</td><td>[out] A buffer in which to return the path passed to <code><a class="el" href="classTXMPFiles.html#fcd21cfe5d6f13c648c5541e161919cb" title="OpenFile() opens a file for metadata access.">OpenFile()</a></code>. Can be null if value is not wanted.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>openFlags</em>&nbsp;</td><td>[out] A buffer in which to return the option flags passed to <code><a class="el" href="classTXMPFiles.html#fcd21cfe5d6f13c648c5541e161919cb" title="OpenFile() opens a file for metadata access.">OpenFile()</a></code>. Can be null if value is not wanted.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>format</em>&nbsp;</td><td>[out] A buffer in which to return the file format. Can be null if value is not wanted. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>handlerFlags</em>&nbsp;</td><td>[out] A buffer in which to return the handler's capability flags. Can be null if value is not wanted.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if the file object is in the open state; that is, <code><a class="el" href="classTXMPFiles.html#fcd21cfe5d6f13c648c5541e161919cb" title="OpenFile() opens a file for metadata access.">OpenFile()</a></code> has been called but <code><a class="el" href="classTXMPFiles.html#eca89170c7aa3e2d56e30bff04dd7927" title="CloseFile() explicitly closes an opened file.">CloseFile()</a></code> has not. False otherwise. Even if the file object is open, the actual disk file might be closed in the host file-system sense; see <code><a class="el" href="classTXMPFiles.html#fcd21cfe5d6f13c648c5541e161919cb" title="OpenFile() opens a file for metadata access.">OpenFile()</a></code>. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="7b86c130fdbd54b5ac158ec3fee93777"></a><!-- doxytag: member="TXMPFiles::SetAbortProc" ref="7b86c130fdbd54b5ac158ec3fee93777" args="(XMP_AbortProc abortProc, void *abortArg)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">void <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::SetAbortProc </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#a2738ce2fca7f1809b12834b1b5e2d0e">XMP_AbortProc</a>&nbsp;</td>
+ <td class="paramname"> <em>abortProc</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>abortArg</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<code><a class="el" href="classTXMPFiles.html#7b86c130fdbd54b5ac158ec3fee93777" title="SetAbortProc() registers a callback function used to check for a user-signaled abort...">SetAbortProc()</a></code> registers a callback function used to check for a user-signaled abort.
+<p>
+The specified procedure is called periodically to allow a user to cancel time-consuming operations. The callback function should return true to signal an abort, which results in an exception being thrown.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>abortProc</em>&nbsp;</td><td>The callback function.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>abortArg</em>&nbsp;</td><td>A pointer to caller-defined data to pass to the callback function. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="42ca0bbc5ac66a8de1710e03a7ff17b3"></a><!-- doxytag: member="TXMPFiles::GetXMP" ref="42ca0bbc5ac66a8de1710e03a7ff17b3" args="(SXMPMeta *xmpObj=0, tStringObj *xmpPacket=0, XMP_PacketInfo *packetInfo=0)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">bool <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::GetXMP </td>
+ <td>(</td>
+ <td class="paramtype">SXMPMeta *&nbsp;</td>
+ <td class="paramname"> <em>xmpObj</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">tStringObj *&nbsp;</td>
+ <td class="paramname"> <em>xmpPacket</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="structXMP__PacketInfo.html">XMP_PacketInfo</a> *&nbsp;</td>
+ <td class="paramname"> <em>packetInfo</em> = <code>0</code></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<code><a class="el" href="classTXMPFiles.html#42ca0bbc5ac66a8de1710e03a7ff17b3" title="GetXMP() retrieves the XMP metadata from an open file.">GetXMP()</a></code> retrieves the XMP metadata from an open file.
+<p>
+The function reports whether XMP is present in the file; you can choose to retrieve any or all of the parsed XMP, the raw XMP packet,or information about the raw XMP packet. The options provided when the file was opened determine if reconciliation is done with other forms of metadata.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>xmpObj</em>&nbsp;</td><td>[out] An XMP object in which to return the parsed XMP metadata. Can be null.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>xmpPacket</em>&nbsp;</td><td>[out] An string object in which to return the raw XMP packet as stored in the file. Can be null. The encoding of the packet is given in the <code>packetInfo</code>. Returns an empty string if the low level file handler does not provide the raw packet.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>packetInfo</em>&nbsp;</td><td>[out] An string object in which to return the location and form of the raw XMP in the file. <code><a class="el" href="structXMP__PacketInfo.html#039ce6665fe8e08d922a46f266799f75" title="Character format using the values kXMP_Char8Bit, kXMP_Char16BitBig, etc.">XMP_PacketInfo::charForm</a></code> and <code><a class="el" href="structXMP__PacketInfo.html#66845c1d5f3f9f36a1543a7322bd7bd1" title="True if there is a packet wrapper and the trailer says writeable by dumb packet scanners...">XMP_PacketInfo::writeable</a></code> reflect the raw XMP in the file. The parsed XMP property values are always UTF-8. The writeable flag is taken from the packet trailer; it applies only to "format ignorant" writing. The <code><a class="el" href="structXMP__PacketInfo.html" title="XMP packet description.">XMP_PacketInfo</a></code> structure always reflects the state of the XMP in the file. The offset, length, and character form do not change as a result of calling <code><a class="el" href="classTXMPFiles.html#d3f7babdc07c7de0d0cd9a3362b4710a" title="PutXMP() updates the XMP metadata in this object without writing out the file.">PutXMP()</a></code> unless the file is also written. Some file handlers might not return location or contents of the raw packet string. To determine whether one does, check the <code><a class="el" href="XMP__Const_8h.html#80155586fa275b28773c9b203f52cabadb116eed738d1fcdfe4ab9c1635e08ea" title="File handler returns raw XMP packet information.">kXMPFiles_ReturnsRawPacket</a></code> bit returned by <code><a class="el" href="classTXMPFiles.html#cb9e16a1477ec67fa6da6d736a9bc131" title="GetFormatInfo() reports what features are supported for a specific file format.">GetFormatInfo()</a></code>. If the low-level file handler does not provide the raw packet location, <code><a class="el" href="structXMP__PacketInfo.html#20f65fcfd0f3658ab93ff441a9d61d2c" title="Packet offset in the file in bytes, -1 if unknown.">XMP_PacketInfo::offset</a></code> and <code><a class="el" href="structXMP__PacketInfo.html#f526c582b66e24553f2d4b11eb714a44" title="Packet length in the file in bytes, -1 if unknown.">XMP_PacketInfo::length</a></code> are both 0, <code><a class="el" href="structXMP__PacketInfo.html#039ce6665fe8e08d922a46f266799f75" title="Character format using the values kXMP_Char8Bit, kXMP_Char16BitBig, etc.">XMP_PacketInfo::charForm</a></code> is UTF-8, and <code><a class="el" href="structXMP__PacketInfo.html#66845c1d5f3f9f36a1543a7322bd7bd1" title="True if there is a packet wrapper and the trailer says writeable by dumb packet scanners...">XMP_PacketInfo::writeable</a></code> is false.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if the file has XMP, false otherwise. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="4ea1eda39f803322e10b2a554ef8ab06"></a><!-- doxytag: member="TXMPFiles::GetThumbnail" ref="4ea1eda39f803322e10b2a554ef8ab06" args="(XMP_ThumbnailInfo *tnailInfo)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">bool <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::GetThumbnail </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="structXMP__ThumbnailInfo.html">XMP_ThumbnailInfo</a> *&nbsp;</td>
+ <td class="paramname"> <em>tnailInfo</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<code><a class="el" href="classTXMPFiles.html#4ea1eda39f803322e10b2a554ef8ab06" title="GetThumbnail() retrieves the native thumbnail from an open file.">GetThumbnail()</a></code> retrieves the native thumbnail from an open file.
+<p>
+Use this function to obtain native thumbnail information, if the associated file handler supports that and the thumbnail was cached by the call to <code><a class="el" href="classTXMPFiles.html#fcd21cfe5d6f13c648c5541e161919cb" title="OpenFile() opens a file for metadata access.">OpenFile()</a></code>; that is, the <code><a class="el" href="XMP__Const_8h.html#6b7b47dd702d9e331586d485013fd1eaca2002b03d2a88da0203bf52a3122063" title="Cache thumbnail if possible, TXMPFiles::GetThumbnail() will be called.">kXMPFiles_OpenCacheTNail</a></code> option flag was set. The return value reports whether a thumbnail is present in the file.<p>
+The returned thumbnail information can be incomplete, depending on the file format, the file handler's capabilities, and the specific file content.<p>
+<ul>
+<li>The <code><a class="el" href="structXMP__ThumbnailInfo.html#89f158688c90cef1df24bbfb7770a881" title="Full image size in pixels.">XMP_ThumbnailInfo::fullWidth</a></code>, <code>fullHeight</code>, and <code>fullOrientation</code> fields are only meaningful for image files. They are not meaningful for multi-page files such as PDF or InDesign, for dynamic audio or video files, and so on. The field values are zero if not meaningful or not determined. </li>
+<li>The <code><a class="el" href="structXMP__ThumbnailInfo.html#683c74dc7168f0046204ea153de3c179" title="Raw image data from the host file, valid for life of the owning XMPFiles object....">XMP_ThumbnailInfo::tnailImage</a></code> and <code><a class="el" href="structXMP__ThumbnailInfo.html#77072568158233d0c44dd4c8636366ff" title="The size in bytes of the thumbnail image data.">XMP_ThumbnailInfo::tnailSize</a></code> fields might be zero even if a recognized thumbnail is present.</li>
+</ul>
+Being recognized means only that the handler has determined that the file does contain a native thumbnail. The thumbnail data might be of a format that the file handler cannot return as a single contiguous block of thumbnail data. For example, for a TIFF uncompressed thumbnail, the handler might not have logic to gather the various disjoint pieces of the thumbnail from the overall TIFF stream.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>tnailInfo</em>&nbsp;</td><td>[out] Optional. A buffer in which to return information about a recognized native thumbnail, and related information about the primary image if appropriate. Can be null if the information is not desired.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>True if a recognized native thumbnail is present and the thumbnail was cached by the call to <code><a class="el" href="classTXMPFiles.html#fcd21cfe5d6f13c648c5541e161919cb" title="OpenFile() opens a file for metadata access.">OpenFile()</a></code>; that is, the <code><a class="el" href="XMP__Const_8h.html#6b7b47dd702d9e331586d485013fd1eaca2002b03d2a88da0203bf52a3122063" title="Cache thumbnail if possible, TXMPFiles::GetThumbnail() will be called.">kXMPFiles_OpenCacheTNail</a></code> option flag was set. Can return true even if the function cannot retrieve the actual thumbnail image. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="d3f7babdc07c7de0d0cd9a3362b4710a"></a><!-- doxytag: member="TXMPFiles::PutXMP" ref="d3f7babdc07c7de0d0cd9a3362b4710a" args="(const SXMPMeta &amp;xmpObj)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">void <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::PutXMP </td>
+ <td>(</td>
+ <td class="paramtype">const SXMPMeta &amp;&nbsp;</td>
+ <td class="paramname"> <em>xmpObj</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<code><a class="el" href="classTXMPFiles.html#d3f7babdc07c7de0d0cd9a3362b4710a" title="PutXMP() updates the XMP metadata in this object without writing out the file.">PutXMP()</a></code> updates the XMP metadata in this object without writing out the file.
+<p>
+This function supplies new XMP for the file. However, the disk file is not written until the object is closed with <code><a class="el" href="classTXMPFiles.html#eca89170c7aa3e2d56e30bff04dd7927" title="CloseFile() explicitly closes an opened file.">CloseFile()</a></code>. The options provided when the file was opened determine if reconciliation is done with other forms of metadata.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>xmpObj</em>&nbsp;</td><td>The new metadata as an XMP object. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="da77eab74c3440659db3122f6ec8b7f4"></a><!-- doxytag: member="TXMPFiles::PutXMP" ref="da77eab74c3440659db3122f6ec8b7f4" args="(const tStringObj &amp;xmpPacket)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">void <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::PutXMP </td>
+ <td>(</td>
+ <td class="paramtype">const tStringObj &amp;&nbsp;</td>
+ <td class="paramname"> <em>xmpPacket</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<code><a class="el" href="classTXMPFiles.html#d3f7babdc07c7de0d0cd9a3362b4710a" title="PutXMP() updates the XMP metadata in this object without writing out the file.">PutXMP()</a></code> updates the XMP metadata in this object without writing out the file, using a string object for input.
+<p>
+Overloads the basic form of the function, allowing you to pass the metadata as a string object instead of an XMP object. It is otherwise identical; see details in the canonical form.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>xmpPacket</em>&nbsp;</td><td>The new metadata as a string object containing a complete XMP packet. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="502ed01119e0421413e773f4f42683ec"></a><!-- doxytag: member="TXMPFiles::PutXMP" ref="502ed01119e0421413e773f4f42683ec" args="(XMP_StringPtr xmpPacket, XMP_StringLen xmpLength=kXMP_UseNullTermination)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">void <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::PutXMP </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>xmpPacket</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#9f7dcc184f901c713274edfdac5bcc9a">XMP_StringLen</a>&nbsp;</td>
+ <td class="paramname"> <em>xmpLength</em> = <code>kXMP_UseNullTermination</code></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<code><a class="el" href="classTXMPFiles.html#d3f7babdc07c7de0d0cd9a3362b4710a" title="PutXMP() updates the XMP metadata in this object without writing out the file.">PutXMP()</a></code> updates the XMP metadata in this object without writing out the file, using a string object and optional length.
+<p>
+Overloads the basic form of the function, allowing you to pass the metadata as a string object instead of an XMP object. It is otherwise identical; see details in the canonical form.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>xmpPacket</em>&nbsp;</td><td>The new metadata as a <code>const char *</code> string containing an XMP packet.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>xmpLength</em>&nbsp;</td><td>Optional. The number of bytes in the string. If not supplied, the string is assumed to be nul-terminated. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="29a11a1539d6300da3fb4c7e9ea02bb6"></a><!-- doxytag: member="TXMPFiles::CanPutXMP" ref="29a11a1539d6300da3fb4c7e9ea02bb6" args="(const SXMPMeta &amp;xmpObj)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">bool <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::CanPutXMP </td>
+ <td>(</td>
+ <td class="paramtype">const SXMPMeta &amp;&nbsp;</td>
+ <td class="paramname"> <em>xmpObj</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<code><a class="el" href="classTXMPFiles.html#29a11a1539d6300da3fb4c7e9ea02bb6" title="CanPutXMP() reports whether this file can be updated with a specific XMP packet.">CanPutXMP()</a></code> reports whether this file can be updated with a specific XMP packet.
+<p>
+Use to determine if the file can probably be updated with a given set of XMP metadata. This depends on the size of the packet, the options with which the file was opened, and the capabilities of the handler for the file format. The function obtains the length of the serialized packet for the provided XMP, but does not keep it or modify it, and does not cause the file to be written when closed. This is implemented roughly as follows:<p>
+<pre>
+ bool CanPutXMP ( XMP_StringPtr xmpPacket )
+ {
+ XMP_FileFormat format;
+ this-&gt;GetFileInfo ( 0, &amp;format, 0 );</pre><p>
+<pre> XMP_OptionBits formatFlags;
+ GetFormatInfo ( format, &amp;formatFlags );</pre><p>
+<pre> if ( (formatFlags &amp; kXMPFiles_CanInjectXMP) &amp;&amp; (formatFlags &amp; kXMPFiles_CanExpand) ) return true;</pre><p>
+<pre> <a class="el" href="structXMP__PacketInfo.html" title="XMP packet description.">XMP_PacketInfo</a> packetInfo;
+ bool hasXMP = this-&gt;GetXMP ( 0, 0, &amp;packetInfo );</pre><p>
+<pre> if ( ! hasXMP ) {
+ if ( formatFlags &amp; kXMPFiles_CanInjectXMP ) return true;
+ } else {
+ if ( (formatFlags &amp; kXMPFiles_CanExpand) ||
+ (packetInfo.length &gt;= strlen(xmpPacket)) ) return true;
+ }
+ return false;
+ }
+ </pre><p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>xmpObj</em>&nbsp;</td><td>The proposed new metadata as an XMP object. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="1d3f32c2b95659ada198775e2f67c808"></a><!-- doxytag: member="TXMPFiles::CanPutXMP" ref="1d3f32c2b95659ada198775e2f67c808" args="(const tStringObj &amp;xmpPacket)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">bool <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::CanPutXMP </td>
+ <td>(</td>
+ <td class="paramtype">const tStringObj &amp;&nbsp;</td>
+ <td class="paramname"> <em>xmpPacket</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<code><a class="el" href="classTXMPFiles.html#29a11a1539d6300da3fb4c7e9ea02bb6" title="CanPutXMP() reports whether this file can be updated with a specific XMP packet.">CanPutXMP()</a></code> reports whether this file can be updated with a specific XMP packet, passed in a string object.
+<p>
+Overloads the basic form of the function, allowing you to pass the metadata as a string object instead of an XMP object. It is otherwise identical; see details in the canonical form.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>xmpPacket</em>&nbsp;</td><td>The proposed new metadata as a string object containing an XMP packet. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="2303dfcc00f108bda202600e3da9c109"></a><!-- doxytag: member="TXMPFiles::CanPutXMP" ref="2303dfcc00f108bda202600e3da9c109" args="(XMP_StringPtr xmpPacket, XMP_StringLen xmpLength=kXMP_UseNullTermination)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">bool <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::CanPutXMP </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>xmpPacket</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#9f7dcc184f901c713274edfdac5bcc9a">XMP_StringLen</a>&nbsp;</td>
+ <td class="paramname"> <em>xmpLength</em> = <code>kXMP_UseNullTermination</code></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<code><a class="el" href="classTXMPFiles.html#29a11a1539d6300da3fb4c7e9ea02bb6" title="CanPutXMP() reports whether this file can be updated with a specific XMP packet.">CanPutXMP()</a></code> reports whether this file can be updated with a specific XMP packet, passed in a string object.
+<p>
+Overloads the basic form of the function, allowing you to pass the metadata as a string object instead of an XMP object. It is otherwise identical; see details in the canonical form.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>xmpPacket</em>&nbsp;</td><td>The proposed new metadata as a <code>const char *</code> string containing an XMP packet.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>xmpLength</em>&nbsp;</td><td>Optional. The number of bytes in the string. If not supplied, the string is assumed to be nul-terminated. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="TXMPFiles_8hpp-source.html">TXMPFiles.hpp</a></ul>
+</div>
+<hr size="1"><address style="text-align: right;"><small>
+XMP-Toolkit-SDK-4.4.2 documentation generated by&nbsp;<a href="http://www.doxygen.org/index.html">doxygen</a> 1.5.6</small></address>
+</body>
+</html>