Sophie

Sophie

distrib > Mageia > 5 > i586 > media > core-updates > by-pkgid > 8b93c7974abbd359ec3a5ea81eee3220 > files > 889

exiv2-doc-0.24-5.2.mga5.noarch.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.8"/>
<title>Exiv2: Exiv2::XmpParser Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">Exiv2
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.8 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</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>
      <li><a href="examples.html"><span>Examples</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespaceExiv2.html">Exiv2</a></li><li class="navelem"><a class="el" href="classExiv2_1_1XmpParser.html">XmpParser</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="classExiv2_1_1XmpParser-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">Exiv2::XmpParser Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Stateless parser class for XMP packets. Images use this class to parse and serialize XMP packets. The parser uses the XMP toolkit to do the job.  
 <a href="classExiv2_1_1XmpParser.html#details">More...</a></p>

<p><code>#include &lt;xmp.hpp&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:ae372d5a006f3fc79ffae5a324c38330d"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1XmpParser.html#ae372d5a006f3fc79ffae5a324c38330d">XmpFormatFlags</a> { <br />
&#160;&#160;<a class="el" href="classExiv2_1_1XmpParser.html#ae372d5a006f3fc79ffae5a324c38330da6a8855eddec8e25389a823040a5d2898">omitPacketWrapper</a> = 0x0010UL, 
<a class="el" href="classExiv2_1_1XmpParser.html#ae372d5a006f3fc79ffae5a324c38330da7b51cd5b22e4cabd4eac877547e16c7a">readOnlyPacket</a> = 0x0020UL, 
<a class="el" href="classExiv2_1_1XmpParser.html#ae372d5a006f3fc79ffae5a324c38330dad1d601f10197dfbb8d3c3ed6a340f9ff">useCompactFormat</a> = 0x0040UL, 
<a class="el" href="classExiv2_1_1XmpParser.html#ae372d5a006f3fc79ffae5a324c38330dac2a833c27e0ab665c40063331f00b14e">includeThumbnailPad</a> = 0x0100UL, 
<br />
&#160;&#160;<a class="el" href="classExiv2_1_1XmpParser.html#ae372d5a006f3fc79ffae5a324c38330dac515307dd36921ff42e07a079a33f582">exactPacketLength</a> = 0x0200UL, 
<a class="el" href="classExiv2_1_1XmpParser.html#ae372d5a006f3fc79ffae5a324c38330da4a0fa937b6711ee5d158a58a20a713c1">writeAliasComments</a> = 0x0400UL, 
<a class="el" href="classExiv2_1_1XmpParser.html#ae372d5a006f3fc79ffae5a324c38330da42e71c96b16e0ba40f193e2e5724da40">omitAllFormatting</a> = 0x0800UL
<br />
 }</td></tr>
<tr class="memdesc:ae372d5a006f3fc79ffae5a324c38330d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Options to control the format of the serialized XMP packet.  <a href="classExiv2_1_1XmpParser.html#ae372d5a006f3fc79ffae5a324c38330d">More...</a><br /></td></tr>
<tr class="separator:ae372d5a006f3fc79ffae5a324c38330d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9563fed47019b19b5a291b58d9b43883"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1XmpParser.html#a9563fed47019b19b5a291b58d9b43883">XmpLockFct</a> )(void *pLockData, bool lockUnlock)</td></tr>
<tr class="memdesc:a9563fed47019b19b5a291b58d9b43883"><td class="mdescLeft">&#160;</td><td class="mdescRight">Lock/unlock function type.  <a href="#a9563fed47019b19b5a291b58d9b43883">More...</a><br /></td></tr>
<tr class="separator:a9563fed47019b19b5a291b58d9b43883"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a53995152072367fba238ceadfacbaff0"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1XmpParser.html#a53995152072367fba238ceadfacbaff0">decode</a> (<a class="el" href="classExiv2_1_1XmpData.html">XmpData</a> &amp;xmpData, const std::string &amp;xmpPacket)</td></tr>
<tr class="memdesc:a53995152072367fba238ceadfacbaff0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decode XMP metadata from an XMP packet <em>xmpPacket</em> into <em>xmpData</em>. The format of the XMP packet must follow the XMP specification. This method clears any previous contents of <em>xmpData</em>.  <a href="#a53995152072367fba238ceadfacbaff0">More...</a><br /></td></tr>
<tr class="separator:a53995152072367fba238ceadfacbaff0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a39ca42868bff6886b42cf322fb40e7c8"><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1XmpParser.html#a39ca42868bff6886b42cf322fb40e7c8">encode</a> (std::string &amp;xmpPacket, const <a class="el" href="classExiv2_1_1XmpData.html">XmpData</a> &amp;xmpData, uint16_t formatFlags=<a class="el" href="classExiv2_1_1XmpParser.html#ae372d5a006f3fc79ffae5a324c38330dad1d601f10197dfbb8d3c3ed6a340f9ff">useCompactFormat</a>, uint32_t padding=0)</td></tr>
<tr class="memdesc:a39ca42868bff6886b42cf322fb40e7c8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encode (serialize) XMP metadata from <em>xmpData</em> into a string xmpPacket. The XMP packet returned in the string follows the XMP specification. This method only modifies <em>xmpPacket</em> if the operations succeeds (return code 0).  <a href="#a39ca42868bff6886b42cf322fb40e7c8">More...</a><br /></td></tr>
<tr class="separator:a39ca42868bff6886b42cf322fb40e7c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a18bee575f3e2c24ef465e4bc513d2b09"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1XmpParser.html#a18bee575f3e2c24ef465e4bc513d2b09">initialize</a> (<a class="el" href="classExiv2_1_1XmpParser.html#a9563fed47019b19b5a291b58d9b43883">XmpParser::XmpLockFct</a> xmpLockFct=0, void *pLockData=0)</td></tr>
<tr class="memdesc:a18bee575f3e2c24ef465e4bc513d2b09"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize the XMP Toolkit.  <a href="#a18bee575f3e2c24ef465e4bc513d2b09">More...</a><br /></td></tr>
<tr class="separator:a18bee575f3e2c24ef465e4bc513d2b09"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6c0f4a9eeef2aed456346a206981b4c"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classExiv2_1_1XmpParser.html#ae6c0f4a9eeef2aed456346a206981b4c">terminate</a> ()</td></tr>
<tr class="memdesc:ae6c0f4a9eeef2aed456346a206981b4c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Terminate the XMP Toolkit and unregister custom namespaces.  <a href="#ae6c0f4a9eeef2aed456346a206981b4c">More...</a><br /></td></tr>
<tr class="separator:ae6c0f4a9eeef2aed456346a206981b4c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Stateless parser class for XMP packets. Images use this class to parse and serialize XMP packets. The parser uses the XMP toolkit to do the job. </p>
</div><h2 class="groupheader">Member Typedef Documentation</h2>
<a class="anchor" id="a9563fed47019b19b5a291b58d9b43883"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef void(* Exiv2::XmpParser::XmpLockFct)(void *pLockData, bool lockUnlock)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Lock/unlock function type. </p>
<p>A function of this type can be passed to <a class="el" href="classExiv2_1_1XmpParser.html#a18bee575f3e2c24ef465e4bc513d2b09" title="Initialize the XMP Toolkit. ">initialize()</a> to make subsequent registration of XMP namespaces thread-safe. See the <a class="el" href="classExiv2_1_1XmpParser.html#a18bee575f3e2c24ef465e4bc513d2b09" title="Initialize the XMP Toolkit. ">initialize()</a> function for more information.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">pLockData</td><td>Pointer to the pLockData passed to <a class="el" href="classExiv2_1_1XmpParser.html#a18bee575f3e2c24ef465e4bc513d2b09" title="Initialize the XMP Toolkit. ">initialize()</a> </td></tr>
    <tr><td class="paramname">lockUnlock</td><td>Indicates whether to lock (true) or unlock (false) </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<h2 class="groupheader">Member Enumeration Documentation</h2>
<a class="anchor" id="ae372d5a006f3fc79ffae5a324c38330d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="classExiv2_1_1XmpParser.html#ae372d5a006f3fc79ffae5a324c38330d">Exiv2::XmpParser::XmpFormatFlags</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Options to control the format of the serialized XMP packet. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="ae372d5a006f3fc79ffae5a324c38330da6a8855eddec8e25389a823040a5d2898"></a>omitPacketWrapper&#160;</td><td class="fielddoc">
<p>Omit the XML packet wrapper. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="ae372d5a006f3fc79ffae5a324c38330da7b51cd5b22e4cabd4eac877547e16c7a"></a>readOnlyPacket&#160;</td><td class="fielddoc">
<p>Default is a writeable packet. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="ae372d5a006f3fc79ffae5a324c38330dad1d601f10197dfbb8d3c3ed6a340f9ff"></a>useCompactFormat&#160;</td><td class="fielddoc">
<p>Use a compact form of RDF. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="ae372d5a006f3fc79ffae5a324c38330dac2a833c27e0ab665c40063331f00b14e"></a>includeThumbnailPad&#160;</td><td class="fielddoc">
<p>Include a padding allowance for a thumbnail image. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="ae372d5a006f3fc79ffae5a324c38330dac515307dd36921ff42e07a079a33f582"></a>exactPacketLength&#160;</td><td class="fielddoc">
<p>The padding parameter is the overall packet length. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="ae372d5a006f3fc79ffae5a324c38330da4a0fa937b6711ee5d158a58a20a713c1"></a>writeAliasComments&#160;</td><td class="fielddoc">
<p>Show aliases as XML comments. </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="ae372d5a006f3fc79ffae5a324c38330da42e71c96b16e0ba40f193e2e5724da40"></a>omitAllFormatting&#160;</td><td class="fielddoc">
<p>Omit all formatting whitespace. </p>
</td></tr>
</table>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a53995152072367fba238ceadfacbaff0"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int Exiv2::XmpParser::decode </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classExiv2_1_1XmpData.html">XmpData</a> &amp;&#160;</td>
          <td class="paramname"><em>xmpData</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>xmpPacket</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Decode XMP metadata from an XMP packet <em>xmpPacket</em> into <em>xmpData</em>. The format of the XMP packet must follow the XMP specification. This method clears any previous contents of <em>xmpData</em>. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">xmpData</td><td>Container for the decoded XMP properties </td></tr>
    <tr><td class="paramname">xmpPacket</td><td>The raw XMP packet to decode </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if successful;<br />
 1 if XMP support has not been compiled-in;<br />
 2 if the XMP toolkit failed to initialize;<br />
 3 if the XMP toolkit failed and raised an XMP_Error </dd></dl>

<p>References <a class="el" href="classExiv2_1_1XmpData.html#a8ce28ae5c68a30b8e646c7ddfed75843">Exiv2::XmpData::add()</a>, <a class="el" href="classExiv2_1_1XmpData.html#ab7e69abc3ee547aacb45893aa8d83051">Exiv2::XmpData::clear()</a>, <a class="el" href="error_8hpp.html#a3b67d3a20351fe4c1da14ca3f2c6f704">EXV_ERROR</a>, <a class="el" href="classExiv2_1_1XmpParser.html#a18bee575f3e2c24ef465e4bc513d2b09">initialize()</a>, <a class="el" href="classExiv2_1_1XmpProperties.html#a9242436f9f9475216b21ea0c4643c357">Exiv2::XmpProperties::prefix()</a>, <a class="el" href="classExiv2_1_1XmpProperties.html#ae58ee081625b7924563e93a1ba184fec">Exiv2::XmpProperties::registerNs()</a>, and <a class="el" href="namespaceExiv2.html#a5153319711f35fe81cbc13f4b852450ca2d79fb07c9ec891f281968dad43c1e25">Exiv2::string</a>.</p>

<p>Referenced by <a class="el" href="classExiv2_1_1Internal_1_1TiffDecoder.html#ae5504e0c2926277b0d6587bf182984c7">Exiv2::Internal::TiffDecoder::decodeXmp()</a>, <a class="el" href="classExiv2_1_1XmpSidecar.html#afaacbbda6639f45f89d967f2c3bcc76c">Exiv2::XmpSidecar::readMetadata()</a>, <a class="el" href="classExiv2_1_1Jp2Image.html#a4bf3d9ed94a4be4e5d931a812c6d58bf">Exiv2::Jp2Image::readMetadata()</a>, <a class="el" href="classExiv2_1_1EpsImage.html#a18a8c0284898635b301e63d8a14effc5">Exiv2::EpsImage::readMetadata()</a>, and <a class="el" href="classExiv2_1_1JpegBase.html#ad6e281a6e5e863c93fbb123f0b38bc4c">Exiv2::JpegBase::readMetadata()</a>.</p>

</div>
</div>
<a class="anchor" id="a39ca42868bff6886b42cf322fb40e7c8"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int Exiv2::XmpParser::encode </td>
          <td>(</td>
          <td class="paramtype">std::string &amp;&#160;</td>
          <td class="paramname"><em>xmpPacket</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classExiv2_1_1XmpData.html">XmpData</a> &amp;&#160;</td>
          <td class="paramname"><em>xmpData</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint16_t&#160;</td>
          <td class="paramname"><em>formatFlags</em> = <code><a class="el" href="classExiv2_1_1XmpParser.html#ae372d5a006f3fc79ffae5a324c38330dad1d601f10197dfbb8d3c3ed6a340f9ff">useCompactFormat</a></code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>padding</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Encode (serialize) XMP metadata from <em>xmpData</em> into a string xmpPacket. The XMP packet returned in the string follows the XMP specification. This method only modifies <em>xmpPacket</em> if the operations succeeds (return code 0). </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">xmpPacket</td><td>Reference to a string to hold the encoded XMP packet. </td></tr>
    <tr><td class="paramname">xmpData</td><td>XMP properties to encode. </td></tr>
    <tr><td class="paramname">formatFlags</td><td>Flags that control the format of the XMP packet, see enum XmpFormatFlags. </td></tr>
    <tr><td class="paramname">padding</td><td>Padding length. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if successful;<br />
 1 if XMP support has not been compiled-in;<br />
 2 if the XMP toolkit failed to initialize;<br />
 3 if the XMP toolkit failed and raised an XMP_Error </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="xmpsample_8cpp-example.html#a22">xmpsample.cpp</a>.</dd>
</dl>
<p>References <a class="el" href="classExiv2_1_1XmpData.html#ab79f31eb811252976d01f2e69fa063a2">Exiv2::XmpData::begin()</a>, <a class="el" href="classExiv2_1_1XmpData.html#a43064f07800d084d5c4f9413c704f298">Exiv2::XmpData::empty()</a>, <a class="el" href="classExiv2_1_1XmpData.html#a232b8897f5d90a6bc087d7d010e80b92">Exiv2::XmpData::end()</a>, <a class="el" href="error_8hpp.html#a3b67d3a20351fe4c1da14ca3f2c6f704">EXV_ERROR</a>, <a class="el" href="classExiv2_1_1XmpParser.html#a18bee575f3e2c24ef465e4bc513d2b09">initialize()</a>, <a class="el" href="namespaceExiv2.html#a5153319711f35fe81cbc13f4b852450ca52dce1d022dd8927bc651d2e51dc1bcd">Exiv2::langAlt</a>, <a class="el" href="classExiv2_1_1XmpProperties.html#a6b558be19460be890e68d93faa77fac1">Exiv2::XmpProperties::ns()</a>, <a class="el" href="classExiv2_1_1XmpProperties.html#a5184fa01ff867af9a3d65848b95b1994">Exiv2::XmpProperties::nsRegistry_</a>, <a class="el" href="namespaceExiv2.html#a5153319711f35fe81cbc13f4b852450ca2d79fb07c9ec891f281968dad43c1e25">Exiv2::string</a>, <a class="el" href="namespaceExiv2.html#aeb5a1b7e0a14e8671707d5be16cbda24">Exiv2::toString()</a>, <a class="el" href="classExiv2_1_1LangAltValue.html#ae466310e854d707c1e5f5a44730a27c9">Exiv2::LangAltValue::value_</a>, <a class="el" href="namespaceExiv2.html#a5153319711f35fe81cbc13f4b852450ca627dda12626324231bb87883d8efc5df">Exiv2::xmpAlt</a>, <a class="el" href="classExiv2_1_1XmpValue.html#afa940e92a938b8350edf0b41912db2b7">Exiv2::XmpValue::xmpArrayType()</a>, <a class="el" href="namespaceExiv2.html#a5153319711f35fe81cbc13f4b852450caa5e7700549d4b079db70605d945447af">Exiv2::xmpBag</a>, <a class="el" href="namespaceExiv2.html#a5153319711f35fe81cbc13f4b852450ca969c20e44455272599e3a273471546e8">Exiv2::xmpSeq</a>, <a class="el" href="classExiv2_1_1XmpValue.html#a179ee99bb4cde4d8f91786de9625f13d">Exiv2::XmpValue::xmpStruct()</a>, and <a class="el" href="namespaceExiv2.html#a5153319711f35fe81cbc13f4b852450ca77cea60f60ef2c6f0f986137c5404c02">Exiv2::xmpText</a>.</p>

<p>Referenced by <a class="el" href="classExiv2_1_1XmpSidecar.html#ac19b2de60b6af08602da62ef3f937ee0">Exiv2::XmpSidecar::writeMetadata()</a>, and <a class="el" href="classExiv2_1_1EpsImage.html#a0043b000b9213e8f816db5170f558619">Exiv2::EpsImage::writeMetadata()</a>.</p>

</div>
</div>
<a class="anchor" id="a18bee575f3e2c24ef465e4bc513d2b09"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool Exiv2::XmpParser::initialize </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classExiv2_1_1XmpParser.html#a9563fed47019b19b5a291b58d9b43883">XmpParser::XmpLockFct</a>&#160;</td>
          <td class="paramname"><em>xmpLockFct</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>pLockData</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Initialize the XMP Toolkit. </p>
<p>Calling this method is usually not needed, as <a class="el" href="classExiv2_1_1XmpParser.html#a39ca42868bff6886b42cf322fb40e7c8" title="Encode (serialize) XMP metadata from xmpData into a string xmpPacket. The XMP packet returned in the ...">encode()</a> and <a class="el" href="classExiv2_1_1XmpParser.html#a53995152072367fba238ceadfacbaff0" title="Decode XMP metadata from an XMP packet xmpPacket into xmpData. The format of the XMP packet must foll...">decode()</a> will initialize the XMP Toolkit if necessary.</p>
<p>The function takes optional pointers to a callback function <em>xmpLockFct</em> and related data <em>pLockData</em> that the parser uses when XMP namespaces are subsequently registered.</p>
<p>The <a class="el" href="classExiv2_1_1XmpParser.html#a18bee575f3e2c24ef465e4bc513d2b09" title="Initialize the XMP Toolkit. ">initialize()</a> function itself still is not thread-safe and needs to be called in a thread-safe manner (e.g., on program startup), but if used with suitable additional locking parameters, any subsequent registration of namespaces will be thread-safe.</p>
<p>Example usage on Windows using a critical section:</p>
<div class="fragment"><div class="line"><span class="keywordtype">void</span> main()</div>
<div class="line">{</div>
<div class="line">    <span class="keyword">struct </span>XmpLock</div>
<div class="line">    {</div>
<div class="line">        CRITICAL_SECTION cs;</div>
<div class="line">        XmpLock()  { InitializeCriticalSection(&amp;cs); }</div>
<div class="line">        ~XmpLock() { DeleteCriticalSection(&amp;cs); }</div>
<div class="line"></div>
<div class="line">        <span class="keyword">static</span> <span class="keywordtype">void</span> LockUnlock(<span class="keywordtype">void</span>* pData, <span class="keywordtype">bool</span> fLock)</div>
<div class="line">        {</div>
<div class="line">            XmpLock* pThis = <span class="keyword">reinterpret_cast&lt;</span>XmpLock*<span class="keyword">&gt;</span>(pData);</div>
<div class="line">            <span class="keywordflow">if</span> (pThis)</div>
<div class="line">            {</div>
<div class="line">                (fLock) ? EnterCriticalSection(&amp;pThis-&gt;cs)</div>
<div class="line">                        : LeaveCriticalSection(&amp;pThis-&gt;cs);</div>
<div class="line">            }</div>
<div class="line">        }</div>
<div class="line">    } xmpLock;</div>
<div class="line"></div>
<div class="line">    <span class="comment">// Pass the locking mechanism to the XMP parser on initialization.</span></div>
<div class="line">    <span class="comment">// Note however that this call itself is still not thread-safe.</span></div>
<div class="line">    <a class="code" href="classExiv2_1_1XmpParser.html#a18bee575f3e2c24ef465e4bc513d2b09">Exiv2::XmpParser::initialize</a>(XmpLock::LockUnlock, &amp;xmpLock);</div>
<div class="line"></div>
<div class="line">    <span class="comment">// Program continues here, subsequent registrations of XMP </span></div>
<div class="line">    <span class="comment">// namespaces are serialized using xmpLock.</span></div>
<div class="line"></div>
<div class="line">}</div>
</div><!-- fragment --><dl class="section return"><dt>Returns</dt><dd>True if the initialization was successful, else false. </dd></dl>

<p>Referenced by <a class="el" href="classExiv2_1_1XmpParser.html#a53995152072367fba238ceadfacbaff0">decode()</a>, and <a class="el" href="classExiv2_1_1XmpParser.html#a39ca42868bff6886b42cf322fb40e7c8">encode()</a>.</p>

</div>
</div>
<a class="anchor" id="ae6c0f4a9eeef2aed456346a206981b4c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void Exiv2::XmpParser::terminate </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Terminate the XMP Toolkit and unregister custom namespaces. </p>
<p>Call this method when the <a class="el" href="classExiv2_1_1XmpParser.html" title="Stateless parser class for XMP packets. Images use this class to parse and serialize XMP packets...">XmpParser</a> is no longer needed to allow the XMP Toolkit to cleanly shutdown. </p>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="xmpsample_8cpp-example.html#a24">xmpsample.cpp</a>.</dd>
</dl>
<p>References <a class="el" href="classExiv2_1_1XmpProperties.html#a6758ab102c4b9d1330c184971fe56962">Exiv2::XmpProperties::unregisterNs()</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="xmp_8hpp.html">xmp.hpp</a></li>
<li>xmp.cpp</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Oct 26 2017 16:50:15 for Exiv2 by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.8
</small></address>
</body>
</html>