<?xml version="1.0"?>
<!-- This file was automatically generated from C sources - DO NOT EDIT!
To affect the contents of this file, edit the original C definitions,
and/or use gtk-doc annotations.  -->
<repository version="1.2"
            xmlns="http://www.gtk.org/introspection/core/1.0"
            xmlns:c="http://www.gtk.org/introspection/c/1.0"
            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
  <include name="GObject" version="2.0"/>
  <package name="gobject-2.0"/>
  <namespace name="GExiv2"
             version="0.10"
             shared-library="libgexiv2.so.2.0"
             c:identifier-prefixes="GExiv2"
             c:symbol-prefixes="gexiv2">
    <callback name="LogHandler" c:type="GExiv2LogHandler">
      <doc xml:space="preserve">The log handler can be set by #gexiv2_log_set_handler.  When set, the log handler will receive
all log messages emitted by Exiv2 and gexiv2.  It's up to the handler to decide where (and if)
the images are displayed or stored.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="level" transfer-ownership="none">
          <doc xml:space="preserve">The #Gexiv2LogLevel for the particular message</doc>
          <type name="LogLevel" c:type="GExiv2LogLevel"/>
        </parameter>
        <parameter name="msg" transfer-ownership="none">
          <doc xml:space="preserve">The log message</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </callback>
    <enumeration name="LogLevel" c:type="GExiv2LogLevel">
      <member name="debug" value="0" c:identifier="GEXIV2_LOG_LEVEL_DEBUG">
      </member>
      <member name="info" value="1" c:identifier="GEXIV2_LOG_LEVEL_INFO">
      </member>
      <member name="warn" value="2" c:identifier="GEXIV2_LOG_LEVEL_WARN">
      </member>
      <member name="error" value="3" c:identifier="GEXIV2_LOG_LEVEL_ERROR">
      </member>
      <member name="mute" value="4" c:identifier="GEXIV2_LOG_LEVEL_MUTE">
      </member>
    </enumeration>
    <constant name="MAJOR_VERSION" value="0" c:type="GEXIV2_MAJOR_VERSION">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="MICRO_VERSION" value="3" c:type="GEXIV2_MICRO_VERSION">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="MINOR_VERSION" value="10" c:type="GEXIV2_MINOR_VERSION">
      <type name="gint" c:type="gint"/>
    </constant>
    <class name="Metadata"
           c:symbol-prefix="metadata"
           c:type="GExiv2Metadata"
           parent="GObject.Object"
           glib:type-name="GExiv2Metadata"
           glib:get-type="gexiv2_metadata_get_type"
           glib:type-struct="MetadataClass">
      <doc xml:space="preserve">An object holding all the Exiv2 metadata.  Previews, if present, are also available.

As gexiv2 is only a wrapper around Exiv2, it's better to read its documentaiton to understand
the full scope of what it offers: http://www.exiv2.org/

In particular, rather than providing a getter/setter method pair for every metadata value
available for images (of which there are thousands), Exiv2 uses a dotted addressing scheme.
For example, to access a photo's EXIF Orientation field, the caller passes to Exiv2
"Exif.Photo.Orientation".  These &lt;em&gt;tags&lt;/em&gt; (in Exiv2 parlance) are key to using Exiv2 (and
therefore gexiv2) to its fullest.

A full reference for all supported Exiv2 tags can be found at http://www.exiv2.org/metadata.html</doc>
      <constructor name="new" c:identifier="gexiv2_metadata_new">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A fully constructed #GExiv2Metadata ready to be used</doc>
          <type name="Metadata" c:type="GExiv2Metadata*"/>
        </return-value>
      </constructor>
      <function name="get_tag_description"
                c:identifier="gexiv2_metadata_get_tag_description">
        <doc xml:space="preserve">The Exiv2 Tag Reference can be found at http://exiv2.org/metadata.html</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The tag's description</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">An Exiv2 tag</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="get_tag_label"
                c:identifier="gexiv2_metadata_get_tag_label">
        <doc xml:space="preserve">The Exiv2 Tag Reference can be found at http://exiv2.org/metadata.html</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The tag's label</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">An Exiv2 tag</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="get_tag_type"
                c:identifier="gexiv2_metadata_get_tag_type">
        <doc xml:space="preserve">The names of the various Exiv2 tag types can be found at Exiv2::TypeId,
http://exiv2.org/doc/namespaceExiv2.html#5153319711f35fe81cbc13f4b852450c

The Exiv2 Tag Reference can be found at http://exiv2.org/metadata.html</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The tag's type name.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">An Exiv2 tag</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="is_exif_tag" c:identifier="gexiv2_metadata_is_exif_tag">
        <doc xml:space="preserve">The Exiv2 Tag Reference can be found at http://exiv2.org/metadata.html</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE if the Exiv2 tag is for the EXIF domain.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">An Exiv2 tag</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="is_iptc_tag" c:identifier="gexiv2_metadata_is_iptc_tag">
        <doc xml:space="preserve">The Exiv2 Tag Reference can be found at http://exiv2.org/metadata.html</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE if the Exiv2 tag is for the IPTC domain.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">An Exiv2 tag</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="is_xmp_tag" c:identifier="gexiv2_metadata_is_xmp_tag">
        <doc xml:space="preserve">The Exiv2 Tag Reference can be found at http://exiv2.org/metadata.html</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE if the Exiv2 tag is for the XMP domain.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">An Exiv2 tag</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="register_xmp_namespace"
                c:identifier="gexiv2_metadata_register_xmp_namespace">
        <return-value transfer-ownership="none" skip="1">
          <doc xml:space="preserve">Boolean success value</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">XMP URI name (should end in /)</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="prefix" transfer-ownership="none">
            <doc xml:space="preserve">XMP namespace prefix</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="unregister_all_xmp_namespaces"
                c:identifier="gexiv2_metadata_unregister_all_xmp_namespaces">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </function>
      <function name="unregister_xmp_namespace"
                c:identifier="gexiv2_metadata_unregister_xmp_namespace">
        <return-value transfer-ownership="none" skip="1">
          <doc xml:space="preserve">Boolean success value</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">XMP URI name (should end in /)</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <method name="clear" c:identifier="gexiv2_metadata_clear">
        <doc xml:space="preserve">Removes all tags for all domains (EXIF, IPTC, and XMP).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="clear_comment"
              c:identifier="gexiv2_metadata_clear_comment">
        <doc xml:space="preserve">This is a composite clear method that will clear a number of fields.  See
#gexiv2_metadata_get_comment for more informtion.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="clear_exif" c:identifier="gexiv2_metadata_clear_exif">
        <doc xml:space="preserve">Clears all EXIF metadata from the loaded image.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="clear_iptc" c:identifier="gexiv2_metadata_clear_iptc">
        <doc xml:space="preserve">Clears all IPTC metadata from the loaded image.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="clear_tag" c:identifier="gexiv2_metadata_clear_tag">
        <doc xml:space="preserve">Removes the Exiv2 tag from the metadata object.

The Exiv2 Tag Reference can be found at http://exiv2.org/metadata.html</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE if the tag was present.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">Exiv2 tag</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="clear_xmp" c:identifier="gexiv2_metadata_clear_xmp">
        <doc xml:space="preserve">Clears all XMP metadata from the loaded image.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="delete_gps_info"
              c:identifier="gexiv2_metadata_delete_gps_info">
        <doc xml:space="preserve">Removes all GPS metadata from the loaded image</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="erase_exif_thumbnail"
              c:identifier="gexiv2_metadata_erase_exif_thumbnail">
        <doc xml:space="preserve">Removes the EXIF thumbnail from the loaded image.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="gexiv2_metadata_free">
        <doc xml:space="preserve">Destroys the #GExiv2Metadata object and frees all associated memory.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="from_app1_segment"
              c:identifier="gexiv2_metadata_from_app1_segment"
              throws="1">
        <doc xml:space="preserve">Load only an EXIF buffer, typically stored in a JPEG's APP1 segment.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Boolean success indicator.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">A buffer containing the data to be read</doc>
            <array length="1" zero-terminated="0" c:type="guint8*">
              <type name="guint8" c:type="guint8"/>
            </array>
          </parameter>
          <parameter name="n_data" transfer-ownership="none" skip="1">
            <doc xml:space="preserve">The length of the buffer</doc>
            <type name="glong" c:type="glong"/>
          </parameter>
        </parameters>
      </method>
      <method name="generate_xmp_packet"
              c:identifier="gexiv2_metadata_generate_xmp_packet">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">Encode the XMP packet and return as a NUL-terminated string.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="xmp_format_flags" transfer-ownership="none">
            <type name="XmpFormatFlags" c:type="GExiv2XmpFormatFlags"/>
          </parameter>
          <parameter name="padding" transfer-ownership="none">
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_comment" c:identifier="gexiv2_metadata_get_comment">
        <doc xml:space="preserve">A composite accessor that uses the first available metadata field from a list of well-known
locations to find the photo's comment (or description).  These fields are:

Exif.Image.ImageDescription
Exif.Photo.UserComment
Exif.Image.XPComment
Iptc.Application2.Caption

Note that Exif.Image.ImageDescription is &lt;em&gt;not&lt;/em&gt; technically a description field and is
described in the EXIF specification as "the title of the image".  Also, it does not support
two-byte character codes for encoding.  However, it's still used here for legacy reasons.

For fine-grained control, it's recommened to use Exiv2 tags directly rather than this method,
which is more useful for quick or casual use.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">The photo's comment field.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_exif_tag_rational"
              c:identifier="gexiv2_metadata_get_exif_tag_rational">
        <return-value transfer-ownership="none" skip="1">
          <doc xml:space="preserve">Boolean success value</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">The tag you want the rational value for</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="nom"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">The numerator</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="den"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">The denominator</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_exif_tags"
              c:identifier="gexiv2_metadata_get_exif_tags">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A list of the available EXIF tags in the
loaded image</doc>
          <array c:type="gchar**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_exif_thumbnail"
              c:identifier="gexiv2_metadata_get_exif_thumbnail">
        <return-value transfer-ownership="none" skip="1">
          <doc xml:space="preserve">Boolean success value</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="buffer"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Where to store the thumbnail data</doc>
            <array length="1" zero-terminated="0" c:type="guint8**">
              <type name="guint8" c:type="guint8*"/>
            </array>
          </parameter>
          <parameter name="size"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     skip="1">
            <doc xml:space="preserve">Size of the thumbnail's buffer</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_exposure_time"
              c:identifier="gexiv2_metadata_get_exposure_time">
        <doc xml:space="preserve">Returns the exposure time in seconds (shutter speed, &lt;em&gt;not&lt;/em&gt; date-time of exposure) as a
rational.  See https://en.wikipedia.org/wiki/Shutter_speed for more information.</doc>
        <return-value transfer-ownership="none" skip="1">
          <doc xml:space="preserve">Boolean success value</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="nom"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">The numerator</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="den"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">The denominator</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_fnumber" c:identifier="gexiv2_metadata_get_fnumber">
        <doc xml:space="preserve">See https://en.wikipedia.org/wiki/F-number for more information.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The exposure Fnumber as a gdouble, or -1.0 if tag is not present or invalid.</doc>
          <type name="gdouble" c:type="gdouble"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_focal_length"
              c:identifier="gexiv2_metadata_get_focal_length">
        <doc xml:space="preserve">See https://en.wikipedia.org/wiki/Flange_focal_distance for more information.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The focal length as a gdouble, or -1.0 if tag is not present or invalid.</doc>
          <type name="gdouble" c:type="gdouble"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_gps_altitude"
              c:identifier="gexiv2_metadata_get_gps_altitude">
        <return-value transfer-ownership="none" skip="1">
          <doc xml:space="preserve">Boolean success value</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="altitude"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Variable to store the altitude value</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_gps_info" c:identifier="gexiv2_metadata_get_gps_info">
        <return-value transfer-ownership="none" skip="1">
          <doc xml:space="preserve">Boolean success value.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="longitude"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Storage for longitude value</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
          <parameter name="latitude"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Storage for latitude value</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
          <parameter name="altitude"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Storage for altitude value</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_gps_latitude"
              c:identifier="gexiv2_metadata_get_gps_latitude">
        <return-value transfer-ownership="none" skip="1">
          <doc xml:space="preserve">Boolean success value</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="latitude"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Variable to store the latitude value</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_gps_longitude"
              c:identifier="gexiv2_metadata_get_gps_longitude">
        <return-value transfer-ownership="none" skip="1">
          <doc xml:space="preserve">Boolean success value</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="longitude"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Variable to store the longitude value</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_iptc_tags"
              c:identifier="gexiv2_metadata_get_iptc_tags">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A list of the available IPTC tags</doc>
          <array c:type="gchar**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_iso_speed"
              c:identifier="gexiv2_metadata_get_iso_speed">
        <doc xml:space="preserve">See https://en.wikipedia.org/wiki/Iso_speed for more information.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The ISO speed rating as a gint, or 0 if tag is not present or invalid.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_mime_type"
              c:identifier="gexiv2_metadata_get_mime_type">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_orientation"
              c:identifier="gexiv2_metadata_get_orientation">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The EXIF Orientation field.</doc>
          <type name="Orientation" c:type="GExiv2Orientation"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_pixel_height"
              c:identifier="gexiv2_metadata_get_pixel_height">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The &lt;em&gt;actual&lt;/em&gt; unoriented display height in pixels of the loaded image.  This may
be different than the height reported by various metadata tags, i.e. "Exif.Photo.PixelYDimension".</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_pixel_width"
              c:identifier="gexiv2_metadata_get_pixel_width">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The &lt;em&gt;actual&lt;/em&gt; unoriented display width in pixels of the loaded image.  This may be
different than the width reported by various metadata tags, i.e. "Exif.Photo.PixelXDimension".</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_preview_image"
              c:identifier="gexiv2_metadata_get_preview_image">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A #GExiv2PreviewImage instance for the particular
#GExiv2PreviewProperties.</doc>
          <type name="PreviewImage" c:type="GExiv2PreviewImage*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="props" transfer-ownership="none">
            <doc xml:space="preserve">A #GExiv2PreviewProperties instance</doc>
            <type name="PreviewProperties" c:type="GExiv2PreviewProperties*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_preview_properties"
              c:identifier="gexiv2_metadata_get_preview_properties">
        <doc xml:space="preserve">An image may have stored one or more previews, often of different qualities, sometimes of
different image formats than the containing image.  This call returns the properties of all
previews Exiv2 finds within the loaded image.  Use #gexiv2_metadata_get_preview_image to
load a particular preview into memory.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">An array of
#GExiv2PreviewProperties instances, one for each preview present in the loaded image.</doc>
          <array c:type="GExiv2PreviewProperties**">
            <type name="PreviewProperties" c:type="GExiv2PreviewProperties*"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_supports_exif"
              c:identifier="gexiv2_metadata_get_supports_exif">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE if the loaded image type supports writing EXIF metadata.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_supports_iptc"
              c:identifier="gexiv2_metadata_get_supports_iptc">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE if the loaded image type supports writing IPTC metadata.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_supports_xmp"
              c:identifier="gexiv2_metadata_get_supports_xmp">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE if the loaded image type supports writing XMP metadata.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_tag_interpreted_string"
              c:identifier="gexiv2_metadata_get_tag_interpreted_string">
        <doc xml:space="preserve">An interpreted string is one fit for user display.  It may display units or use formatting
appropriate to the type of data the tag holds.

The Exiv2 Tag Reference can be found at http://exiv2.org/metadata.html</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">The tag's interpreted value as a string</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">Exiv2 tag name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_tag_long" c:identifier="gexiv2_metadata_get_tag_long">
        <doc xml:space="preserve">The Exiv2 Tag Reference can be found at http://exiv2.org/metadata.html</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The tag's value as a glong</doc>
          <type name="glong" c:type="glong"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">Exiv2 tag name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_tag_multiple"
              c:identifier="gexiv2_metadata_get_tag_multiple">
        <doc xml:space="preserve">The Exiv2 Tag Reference can be found at http://exiv2.org/metadata.html</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">The multiple string values of
the tag</doc>
          <array c:type="gchar**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">Exiv2 tag name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_tag_raw" c:identifier="gexiv2_metadata_get_tag_raw">
        <doc xml:space="preserve">The Exiv2 Tag Reference can be found at http://exiv2.org/metadata.html</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">The tag's raw value as a byte array</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">Exiv2 tag name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_tag_string"
              c:identifier="gexiv2_metadata_get_tag_string">
        <doc xml:space="preserve">The Exiv2 Tag Reference can be found at http://exiv2.org/metadata.html</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">The tag's value as a string</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">Exiv2 tag name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_xmp_packet"
              c:identifier="gexiv2_metadata_get_xmp_packet">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">The currently-encoded XMP packet (see gexiv2_metadata_generate_xmp_packet).</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_xmp_tags" c:identifier="gexiv2_metadata_get_xmp_tags">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A list of the available XMP tags</doc>
          <array c:type="gchar**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="has_exif" c:identifier="gexiv2_metadata_has_exif">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE if EXIF metadata is present in the loaded image</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="has_iptc" c:identifier="gexiv2_metadata_has_iptc">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE if IPTC metadata is present in the loaded image</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="has_tag" c:identifier="gexiv2_metadata_has_tag">
        <doc xml:space="preserve">The Exiv2 Tag Reference can be found at http://exiv2.org/metadata.html</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE if the tag is present.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">Exiv2 tag</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="has_xmp" c:identifier="gexiv2_metadata_has_xmp">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE if XMP metadata is present in the loaded image</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="open_buf"
              c:identifier="gexiv2_metadata_open_buf"
              throws="1">
        <doc xml:space="preserve">The buffer must be an image format supported by Exiv2.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Boolean success indicator</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">A buffer containing the data to be read</doc>
            <array length="1" zero-terminated="0" c:type="guint8*">
              <type name="guint8" c:type="guint8"/>
            </array>
          </parameter>
          <parameter name="n_data" transfer-ownership="none" skip="1">
            <doc xml:space="preserve">The length of the buffer</doc>
            <type name="glong" c:type="glong"/>
          </parameter>
        </parameters>
      </method>
      <method name="open_path"
              c:identifier="gexiv2_metadata_open_path"
              throws="1">
        <doc xml:space="preserve">The file must be an image format supported by Exiv2.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Boolean success indicator</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve">Path to the file you want to open</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="open_stream"
              c:identifier="gexiv2_metadata_open_stream"
              introspectable="0"
              throws="1">
        <doc xml:space="preserve">The stream must be an image format supported by Exiv2.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Boolean success indicator</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="cb" transfer-ownership="none">
            <doc xml:space="preserve">A #ManagedStreamCallbacks struct offering stream access.</doc>
            <type c:type="ManagedStreamCallbacks*"/>
          </parameter>
        </parameters>
      </method>
      <method name="save_file"
              c:identifier="gexiv2_metadata_save_file"
              throws="1">
        <doc xml:space="preserve">Saves the metadata to the specified file by reading the file into memory,copying this object's
metadata into the image, then writing the image back out.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Boolean success indicator.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve">Path to the file you want to save to.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="save_stream"
              c:identifier="gexiv2_metadata_save_stream"
              introspectable="0"
              throws="1">
        <doc xml:space="preserve">Saves the metadata to the stream by reading the stream into memory,copying this object's
metadata into the image, then writing the image as a stream back out.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Boolean success indicator.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="cb" transfer-ownership="none">
            <doc xml:space="preserve">A #ManagedStreamCallbacks struct offering stream access.</doc>
            <type c:type="ManagedStreamCallbacks*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_comment" c:identifier="gexiv2_metadata_set_comment">
        <doc xml:space="preserve">This is a composite setter that will set a number of fields to the supplied value.  See
#gexiv2_metadata_get_comment for more informtion.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="comment" transfer-ownership="none">
            <doc xml:space="preserve">Comment string to set</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_exif_tag_rational"
              c:identifier="gexiv2_metadata_set_exif_tag_rational">
        <return-value transfer-ownership="none" skip="1">
          <doc xml:space="preserve">Boolean success value</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">The Exiv2 tag</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="nom" transfer-ownership="none">
            <doc xml:space="preserve">Rational numerator</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="den" transfer-ownership="none">
            <doc xml:space="preserve">Rational denominator</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_exif_thumbnail_from_buffer"
              c:identifier="gexiv2_metadata_set_exif_thumbnail_from_buffer">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve">A buffer containing thumbnail data</doc>
            <array length="1" zero-terminated="0" c:type="guint8*">
              <type name="guint8" c:type="guint8"/>
            </array>
          </parameter>
          <parameter name="size" transfer-ownership="none" skip="1">
            <doc xml:space="preserve">Size of the thumbnail's buffer</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_exif_thumbnail_from_file"
              c:identifier="gexiv2_metadata_set_exif_thumbnail_from_file"
              throws="1">
        <doc xml:space="preserve">Sets or replaces the EXIF thumbnail with the image in the file</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Boolean success value</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve">Path of image file</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_gps_info" c:identifier="gexiv2_metadata_set_gps_info">
        <return-value transfer-ownership="none" skip="1">
          <doc xml:space="preserve">Boolean success value.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="longitude" transfer-ownership="none">
            <doc xml:space="preserve">Longitude value to set or replace current value</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="latitude" transfer-ownership="none">
            <doc xml:space="preserve">Latitude value to set or replace current value</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="altitude" transfer-ownership="none">
            <doc xml:space="preserve">Altitude value to set or replace current value</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_orientation"
              c:identifier="gexiv2_metadata_set_orientation">
        <doc xml:space="preserve">The orientation must be valid and cannot be #GEXIV2_ORIENTATION_UNSPECIFIED.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="orientation" transfer-ownership="none">
            <doc xml:space="preserve">The new #Gexiv2Orientation for the image.</doc>
            <type name="Orientation" c:type="GExiv2Orientation"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_tag_long" c:identifier="gexiv2_metadata_set_tag_long">
        <doc xml:space="preserve">The Exiv2 Tag Reference can be found at http://exiv2.org/metadata.html</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE on success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">Exiv2 tag name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">The value to set or replace the existing value</doc>
            <type name="glong" c:type="glong"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_tag_multiple"
              c:identifier="gexiv2_metadata_set_tag_multiple">
        <doc xml:space="preserve">The Exiv2 Tag Reference can be found at http://exiv2.org/metadata.html</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">Boolean success value</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">Exiv2 tag name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="values" transfer-ownership="none">
            <doc xml:space="preserve">An array of values to set or replace the existing value(s)</doc>
            <array c:type="gchar**">
              <type name="utf8" c:type="gchar*"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="set_tag_string"
              c:identifier="gexiv2_metadata_set_tag_string">
        <doc xml:space="preserve">The Exiv2 Tag Reference can be found at http://exiv2.org/metadata.html</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE on success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve">Exiv2 tag name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">The value to set or replace the existing value</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_xmp_tag_struct"
              c:identifier="gexiv2_metadata_set_xmp_tag_struct">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="tag" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <type name="StructureType" c:type="GExiv2StructureType"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="MetadataPrivate" c:type="GExiv2MetadataPrivate*"/>
      </field>
    </class>
    <record name="MetadataClass"
            c:type="GExiv2MetadataClass"
            glib:is-gtype-struct-for="Metadata">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <record name="MetadataPrivate"
            c:type="GExiv2MetadataPrivate"
            disguised="1">
    </record>
    <enumeration name="Orientation" c:type="GExiv2Orientation">
      <member name="min" value="0" c:identifier="GEXIV2_ORIENTATION_MIN">
      </member>
      <member name="unspecified"
              value="0"
              c:identifier="GEXIV2_ORIENTATION_UNSPECIFIED">
      </member>
      <member name="normal" value="1" c:identifier="GEXIV2_ORIENTATION_NORMAL">
      </member>
      <member name="hflip" value="2" c:identifier="GEXIV2_ORIENTATION_HFLIP">
      </member>
      <member name="rot_180"
              value="3"
              c:identifier="GEXIV2_ORIENTATION_ROT_180">
      </member>
      <member name="vflip" value="4" c:identifier="GEXIV2_ORIENTATION_VFLIP">
      </member>
      <member name="rot_90_hflip"
              value="5"
              c:identifier="GEXIV2_ORIENTATION_ROT_90_HFLIP">
      </member>
      <member name="rot_90" value="6" c:identifier="GEXIV2_ORIENTATION_ROT_90">
      </member>
      <member name="rot_90_vflip"
              value="7"
              c:identifier="GEXIV2_ORIENTATION_ROT_90_VFLIP">
      </member>
      <member name="rot_270"
              value="8"
              c:identifier="GEXIV2_ORIENTATION_ROT_270">
      </member>
      <member name="max" value="8" c:identifier="GEXIV2_ORIENTATION_MAX">
      </member>
    </enumeration>
    <class name="PreviewImage"
           c:symbol-prefix="preview_image"
           c:type="GExiv2PreviewImage"
           parent="GObject.Object"
           glib:type-name="GExiv2PreviewImage"
           glib:get-type="gexiv2_preview_image_get_type"
           glib:type-struct="PreviewImageClass">
      <method name="free" c:identifier="gexiv2_preview_image_free">
        <doc xml:space="preserve">Releases the preview image and all associated memory.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="PreviewImage" c:type="GExiv2PreviewImage*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_data" c:identifier="gexiv2_preview_image_get_data">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The raw image data</doc>
          <array length="0" zero-terminated="0" c:type="guint8*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="PreviewImage" c:type="GExiv2PreviewImage*"/>
          </instance-parameter>
          <parameter name="size"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     skip="1">
            <doc xml:space="preserve">The size of the buffer holding the data</doc>
            <type name="guint32" c:type="guint32*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_extension"
              c:identifier="gexiv2_preview_image_get_extension">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The preview image's recommended file extension.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="PreviewImage" c:type="GExiv2PreviewImage*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_height" c:identifier="gexiv2_preview_image_get_height">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The preview image's display height in pixels.</doc>
          <type name="guint32" c:type="guint32"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="PreviewImage" c:type="GExiv2PreviewImage*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_mime_type"
              c:identifier="gexiv2_preview_image_get_mime_type">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The preview image's MIME type.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="PreviewImage" c:type="GExiv2PreviewImage*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_width" c:identifier="gexiv2_preview_image_get_width">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The preview image's display width in pixels.</doc>
          <type name="guint32" c:type="guint32"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="PreviewImage" c:type="GExiv2PreviewImage*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="write_file" c:identifier="gexiv2_preview_image_write_file">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The number of bytes written to the file.</doc>
          <type name="glong" c:type="glong"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="PreviewImage" c:type="GExiv2PreviewImage*"/>
          </instance-parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve">The file path to write the preview image to.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="PreviewImagePrivate" c:type="GExiv2PreviewImagePrivate*"/>
      </field>
    </class>
    <record name="PreviewImageClass"
            c:type="GExiv2PreviewImageClass"
            glib:is-gtype-struct-for="PreviewImage">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <record name="PreviewImagePrivate"
            c:type="GExiv2PreviewImagePrivate"
            disguised="1">
    </record>
    <class name="PreviewProperties"
           c:symbol-prefix="preview_properties"
           c:type="GExiv2PreviewProperties"
           parent="GObject.Object"
           glib:type-name="GExiv2PreviewProperties"
           glib:get-type="gexiv2_preview_properties_get_type"
           glib:type-struct="PreviewPropertiesClass">
      <method name="get_extension"
              c:identifier="gexiv2_preview_properties_get_extension">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The recommended file extension for the preview image.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="PreviewProperties" c:type="GExiv2PreviewProperties*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_height"
              c:identifier="gexiv2_preview_properties_get_height">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The preview image's display height in pixels.</doc>
          <type name="guint32" c:type="guint32"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="PreviewProperties" c:type="GExiv2PreviewProperties*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_mime_type"
              c:identifier="gexiv2_preview_properties_get_mime_type">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The preview image's MIME type.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="PreviewProperties" c:type="GExiv2PreviewProperties*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_size"
              c:identifier="gexiv2_preview_properties_get_size">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The preview image size in bytes.</doc>
          <type name="guint32" c:type="guint32"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="PreviewProperties" c:type="GExiv2PreviewProperties*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_width"
              c:identifier="gexiv2_preview_properties_get_width">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The preview image's display width in pixels.</doc>
          <type name="guint32" c:type="guint32"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="PreviewProperties" c:type="GExiv2PreviewProperties*"/>
          </instance-parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="PreviewPropertiesPrivate"
              c:type="GExiv2PreviewPropertiesPrivate*"/>
      </field>
    </class>
    <record name="PreviewPropertiesClass"
            c:type="GExiv2PreviewPropertiesClass"
            glib:is-gtype-struct-for="PreviewProperties">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <record name="PreviewPropertiesPrivate"
            c:type="GExiv2PreviewPropertiesPrivate"
            disguised="1">
    </record>
    <enumeration name="StructureType" c:type="GExiv2StructureType">
      <member name="none" value="0" c:identifier="GEXIV2_STRUCTURE_XA_NONE">
      </member>
      <member name="alt" value="20" c:identifier="GEXIV2_STRUCTURE_XA_ALT">
      </member>
      <member name="bag" value="21" c:identifier="GEXIV2_STRUCTURE_XA_BAG">
      </member>
      <member name="seq" value="22" c:identifier="GEXIV2_STRUCTURE_XA_SEQ">
      </member>
      <member name="lang" value="23" c:identifier="GEXIV2_STRUCTURE_XA_LANG">
      </member>
    </enumeration>
    <enumeration name="XmpFormatFlags" c:type="GExiv2XmpFormatFlags">
      <doc xml:space="preserve">Options to control the format of the serialized XMP packet
Taken from: exiv2/src/xmp.hpp</doc>
      <member name="omit_packet_wrapper"
              value="16"
              c:identifier="GEXIV2_OMIT_PACKET_WRAPPER">
      </member>
      <member name="read_only_packet"
              value="32"
              c:identifier="GEXIV2_READ_ONLY_PACKET">
      </member>
      <member name="use_compact_format"
              value="64"
              c:identifier="GEXIV2_USE_COMPACT_FORMAT">
      </member>
      <member name="include_thumbnail_pad"
              value="256"
              c:identifier="GEXIV2_INCLUDE_THUMBNAIL_PAD">
      </member>
      <member name="exact_packet_length"
              value="512"
              c:identifier="GEXIV2_EXACT_PACKET_LENGTH">
      </member>
      <member name="write_alias_comments"
              value="1024"
              c:identifier="GEXIV2_WRITE_ALIAS_COMMENTS">
      </member>
      <member name="omit_all_formatting"
              value="2048"
              c:identifier="GEXIV2_OMIT_ALL_FORMATTING">
      </member>
    </enumeration>
    <function name="get_version" c:identifier="gexiv2_get_version">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">The gexiv2 library's version number as a formatted decimal XXYYZZ, where XX is the
major version, YY is the minor version, and ZZ is the micro version.  For example, version
0.6.1 will be returned as 000601.</doc>
        <type name="gint" c:type="gint"/>
      </return-value>
    </function>
    <function name="initialize" c:identifier="gexiv2_initialize">
      <doc xml:space="preserve">gexiv2 requires initialization before its methods are used.  In particular, this call must be
made in a thread-safe fashion.  Best practice is to call from the application's main thread and
not to use any gexiv2 code until it has returned.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">TRUE if initialized.  If FALSE, gexiv2 should not be used (unable to initialize
properly).</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="log_get_default_handler"
              c:identifier="gexiv2_log_get_default_handler"
              introspectable="0">
      <return-value>
        <doc xml:space="preserve">The default #GExiv2LogHandler, which uses Exiv2's built-in handler.  Exiv2 will send the
message to stderr.</doc>
        <type name="LogHandler" c:type="GExiv2LogHandler"/>
      </return-value>
    </function>
    <function name="log_get_handler"
              c:identifier="gexiv2_log_get_handler"
              introspectable="0">
      <return-value>
        <doc xml:space="preserve">The current #GExiv2LogHandler, or the default if none set.  See
#gexiv2_log_get_default_handler.</doc>
        <type name="LogHandler" c:type="GExiv2LogHandler"/>
      </return-value>
    </function>
    <function name="log_get_level" c:identifier="gexiv2_log_get_level">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">The current #GExiv2LogLevel.  Messages below this level will not be logged.</doc>
        <type name="LogLevel" c:type="GExiv2LogLevel"/>
      </return-value>
    </function>
    <function name="log_set_handler"
              c:identifier="gexiv2_log_set_handler"
              introspectable="0">
      <doc xml:space="preserve">This method is not thread-safe.  It's best to set this before beginning to use gexiv2.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="handler" transfer-ownership="none">
          <doc xml:space="preserve">A #GExiv2LogHandler callback to begin receiving log messages from Exiv2 and gexiv2</doc>
          <type name="LogHandler" c:type="GExiv2LogHandler"/>
        </parameter>
      </parameters>
    </function>
    <function name="log_set_level" c:identifier="gexiv2_log_set_level">
      <doc xml:space="preserve">Log messages below this level will not be logged.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="level" transfer-ownership="none">
          <doc xml:space="preserve">The #GExiv2LogLevel gexiv2 should respect.</doc>
          <type name="LogLevel" c:type="GExiv2LogLevel"/>
        </parameter>
      </parameters>
    </function>
    <function name="log_use_glib_logging"
              c:identifier="gexiv2_log_use_glib_logging">
      <doc xml:space="preserve">When called, gexiv2 will install it's own #GExiv2LogHandler which redirects all Exiv2 and gexiv2
log messages to GLib's logging calls (g_debug, g_message, g_warning, and g_critical for the
respective #GExiv2LogLevel value).  #GEXIV2_LOG_LEVEL_MUTE logs are dropped.

One advantage to using this is that GLib's logging control and handlers can be used rather than
gexiv2's ad hoc scheme.  It also means an application can use GLib logging and have all its
messages routed through the same calls.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
  </namespace>
</repository>
