<?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="gexiv2"/>
  <c:include name="gexiv2/gexiv2.h"/>
  <namespace name="GExiv2"
             version="0.10"
             shared-library="libgexiv2.so.2"
             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"
                 glib:type-name="GExiv2LogLevel"
                 glib:get-type="gexiv2_gexiv2_log_level_get_type"
                 c:type="GExiv2LogLevel">
      <doc xml:space="preserve">GExiv2 log levels</doc>
      <member name="debug"
              value="0"
              c:identifier="GEXIV2_LOG_LEVEL_DEBUG"
              glib:nick="debug">
        <doc xml:space="preserve">Log level for debugging</doc>
      </member>
      <member name="info"
              value="1"
              c:identifier="GEXIV2_LOG_LEVEL_INFO"
              glib:nick="info">
        <doc xml:space="preserve">Log level for informational messages</doc>
      </member>
      <member name="warn"
              value="2"
              c:identifier="GEXIV2_LOG_LEVEL_WARN"
              glib:nick="warn">
        <doc xml:space="preserve">Log level for warning messages</doc>
      </member>
      <member name="error"
              value="3"
              c:identifier="GEXIV2_LOG_LEVEL_ERROR"
              glib:nick="error">
        <doc xml:space="preserve">Log level for error messages</doc>
      </member>
      <member name="mute"
              value="4"
              c:identifier="GEXIV2_LOG_LEVEL_MUTE"
              glib:nick="mute">
        <doc xml:space="preserve">Suppress all log messages</doc>
      </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="8" 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 documentation to understand
the full scope of what it offers: &lt;ulink url="http://www.exiv2.org/"&gt;&lt;/ulink&gt;

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;emphasis&gt;tags&lt;/emphasis&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
&lt;ulink url="http://www.exiv2.org/metadata.html"&gt;&lt;/ulink&gt;</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 &lt;ulink url="http://exiv2.org/metadata.html"&gt;&lt;/ulink&gt;</doc>
        <return-value transfer-ownership="none" nullable="1">
          <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 &lt;ulink url="http://exiv2.org/metadata.html"&gt;&lt;/ulink&gt;</doc>
        <return-value transfer-ownership="none" nullable="1">
          <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,
&lt;ulink url="http://exiv2.org/doc/namespaceExiv2.html#5153319711f35fe81cbc13f4b852450c"&gt;&lt;/ulink&gt;

The Exiv2 Tag Reference can be found at &lt;ulink url="http://exiv2.org/metadata.html"&gt;&lt;/ulink&gt;</doc>
        <return-value transfer-ownership="none" nullable="1">
          <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 &lt;ulink url="http://exiv2.org/metadata.html"&gt;&lt;/ulink&gt;</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 &lt;ulink url="http://exiv2.org/metadata.html"&gt;&lt;/ulink&gt;</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 &lt;ulink url="http://exiv2.org/metadata.html"&gt;&lt;/ulink&gt;</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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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 information.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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 &lt;ulink url="http://exiv2.org/metadata.html"&gt;&lt;/ulink&gt;</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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="gexiv2_metadata_free"
              deprecated="1"
              deprecated-version="0.10.3">
        <doc xml:space="preserve">Destroys the #GExiv2Metadata object and frees all associated memory.</doc>
        <doc-deprecated xml:space="preserve">Use g_object_unref() instead.</doc-deprecated>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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">
        <doc xml:space="preserve">Encode the XMP packet as a %NULL-terminated string.</doc>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve">Encode the XMP packet and return as a %NULL-terminated string.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="xmp_format_flags" transfer-ownership="none">
            <doc xml:space="preserve">One of #GExiv2XmpFormatFlags</doc>
            <type name="XmpFormatFlags" c:type="GExiv2XmpFormatFlags"/>
          </parameter>
          <parameter name="padding" transfer-ownership="none">
            <doc xml:space="preserve">The padding (FIXME: Add documentation)</doc>
            <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).

MWG guidelines refer to these as &lt;emphasis&gt;Description&lt;/emphasis&gt;: a textual description of a resource's content.

These fields are:

- Exif.Image.ImageDescription  (MWG Guidelines)
- Exif.Photo.UserComment
- Exif.Image.XPComment
- Iptc.Application2.Caption    (MWG Guidelines)
- Xmp.dc.description           (MWG Guidelines)
- Xmp.acdsee.notes             (Commonly requested, read only)

&lt;note&gt;Note that in the EXIF specification Exif.Image.ImageDescription is
described  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.
&lt;/note&gt;

For fine-grained control, it's recommended to use Exiv2 tags directly rather than this method,
which is more useful for quick or casual use.</doc>
        <return-value transfer-ownership="full" nullable="1">
          <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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_exif_tag_rational"
              c:identifier="gexiv2_metadata_get_exif_tag_rational">
        <doc xml:space="preserve">Fetch EXIF @tag represented by a fraction. @nom will contain the numerator,
@den the denominator of the fraction on successful return.</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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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">
        <doc xml:space="preserve">Query @self for a list of available EXIF tags</doc>
        <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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_exif_thumbnail"
              c:identifier="gexiv2_metadata_get_exif_thumbnail">
        <doc xml:space="preserve">Get the thumbnail stored in the EXIF data of @self</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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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;emphasis&gt;not&lt;/emphasis&gt; date-time of exposure) as a
rational.  See &lt;ulink url="https://en.wikipedia.org/wiki/Shutter_speed"&gt;&lt;/ulink&gt; 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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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 &lt;ulink url="https://en.wikipedia.org/wiki/F-number"&gt;&lt;/ulink&gt; for more information.
If Exif.Photo.FNumber does not exist, it will fall back to calculating the FNumber from
Exif.Photo.ApertureValue (if available);</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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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 &lt;ulink url="https://en.wikipedia.org/wiki/Flange_focal_distance"&gt;&lt;/ulink&gt; 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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_gps_altitude"
              c:identifier="gexiv2_metadata_get_gps_altitude">
        <doc xml:space="preserve">Convenience function to query the altitude stored in the GPS tags of the
image</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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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">
        <doc xml:space="preserve">Convenience function to query all available GPS information at once.</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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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">
        <doc xml:space="preserve">Query the latitude stored in the GPS tags of @self</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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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">
        <doc xml:space="preserve">Query the longitude stored in the GPS tags of @self</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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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">
        <doc xml:space="preserve">Query @self for a list of available IPTC tags</doc>
        <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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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 &lt;ulink url="https://en.wikipedia.org/wiki/Iso_speed"&gt;&lt;/ulink&gt; 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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_metadata_pixel_height"
              c:identifier="gexiv2_metadata_get_metadata_pixel_height">
        <doc xml:space="preserve">Composite accessor to query the pixel with stored in the metadata. This
might differ from the height of image that is available through
gexiv2_metadata_get_pixel_height()</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Height of images in pixels as stored in the metadata</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_metadata_pixel_width"
              c:identifier="gexiv2_metadata_get_metadata_pixel_width">
        <doc xml:space="preserve">Composite accessor to query the pixel with stored in the metadata. This
might differ from the width of image that is available through
gexiv2_metadata_get_pixel_width()</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Width of images in pixels as stored in the metadata</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_mime_type"
              c:identifier="gexiv2_metadata_get_mime_type">
        <doc xml:space="preserve">Query mime type of currently loaded image.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The MIME type of the loaded image, %NULL if not loaded or unknown.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_orientation"
              c:identifier="gexiv2_metadata_get_orientation">
        <doc xml:space="preserve">The EXIF Orientation field</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">A #GExiv2Orientation value representing the EXIF orientation
value.</doc>
          <type name="Orientation" c:type="GExiv2Orientation"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_pixel_height"
              c:identifier="gexiv2_metadata_get_pixel_height">
        <doc xml:space="preserve">Get the &lt;emphasis&gt;actual&lt;/emphasis&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>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Pixel height of current image</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_pixel_width"
              c:identifier="gexiv2_metadata_get_pixel_width">
        <doc xml:space="preserve">Get the &lt;emphasis&gt;actual&lt;/emphasis&gt; unoriented display width in pixels of the loaded
image. May be different than the width reported by various metadata tags,
i.e. "Exif.Photo.PixelXDimension".</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Pixel width of current image</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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" nullable="1">
          <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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_supports_exif"
              c:identifier="gexiv2_metadata_get_supports_exif">
        <doc xml:space="preserve">Query @self whether it supports writing EXIF metadata.</doc>
        <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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_supports_iptc"
              c:identifier="gexiv2_metadata_get_supports_iptc">
        <doc xml:space="preserve">Query @self whether it supports writing IPTC metadata.</doc>
        <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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_supports_xmp"
              c:identifier="gexiv2_metadata_get_supports_xmp">
        <doc xml:space="preserve">Query @self whether it supports writing XMP metadata.</doc>
        <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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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 &lt;ulink url="http://exiv2.org/metadata.html"&gt;&lt;/ulink&gt;</doc>
        <return-value transfer-ownership="full" nullable="1">
          <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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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 &lt;ulink url="http://exiv2.org/metadata.html"&gt;&lt;/ulink&gt;</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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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 &lt;ulink url="http://exiv2.org/metadata.html"&gt;&lt;/ulink&gt;</doc>
        <return-value transfer-ownership="full" nullable="1">
          <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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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 &lt;ulink url="http://exiv2.org/metadata.html"&gt;&lt;/ulink&gt;</doc>
        <return-value transfer-ownership="full" nullable="1">
          <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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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 &lt;ulink url="http://exiv2.org/metadata.html"&gt;&lt;/ulink&gt;</doc>
        <return-value transfer-ownership="full" nullable="1">
          <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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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" nullable="1">
          <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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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 &lt;ulink url="http://exiv2.org/metadata.html"&gt;&lt;/ulink&gt;</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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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_external"
              c:identifier="gexiv2_metadata_save_external"
              version="0.10.6"
              throws="1">
        <doc xml:space="preserve">Saves the metadata to the specified using an XMP sidecar file.</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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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_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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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 information.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="comment" transfer-ownership="none">
            <doc xml:space="preserve">Comment string to set. Must not be %NULL</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">
        <doc xml:space="preserve">Set EXIF @tag represented by a fraction, with @nom being the numerator,
@den the denominator of the fraction.</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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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">
        <doc xml:space="preserve">Convenience function to query all available GPS information at once.</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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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_metadata_pixel_height"
              c:identifier="gexiv2_metadata_set_metadata_pixel_height">
        <doc xml:space="preserve">Update the image's metadata with @height</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve">The width of the image as it should be put into the metadata.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_metadata_pixel_width"
              c:identifier="gexiv2_metadata_set_metadata_pixel_width">
        <doc xml:space="preserve">Composite setter to update the image's metadata with @width</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <type name="Metadata" c:type="GExiv2Metadata*"/>
          </instance-parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">The width of the image as it should be put into the metadata.</doc>
            <type name="gint" c:type="gint"/>
          </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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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 &lt;ulink url="http://exiv2.org/metadata.html"&gt;&lt;/ulink&gt;</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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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 &lt;ulink url="http://exiv2.org/metadata.html"&gt;&lt;/ulink&gt;</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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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 &lt;ulink url="http://exiv2.org/metadata.html"&gt;&lt;/ulink&gt;</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">
            <doc xml:space="preserve">An instance of #GExiv2Metadata</doc>
            <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"
                 glib:type-name="GExiv2Orientation"
                 glib:get-type="gexiv2_gexiv2_orientation_get_type"
                 c:type="GExiv2Orientation">
      <doc xml:space="preserve">The orientation of an image is defined as the location of it's x,y origin.  More than rotation,
orientation allows for every variation of rotation, flips, and mirroring to be described in
3 bits of data.

A handy primer to orientation can be found at
&lt;ulink url="http://jpegclub.org/exif_orientation.html"&gt;&lt;/ulink&gt;</doc>
      <member name="unspecified"
              value="0"
              c:identifier="GEXIV2_ORIENTATION_UNSPECIFIED"
              glib:nick="unspecified">
        <doc xml:space="preserve">The orientation of the image is unknown</doc>
      </member>
      <member name="normal"
              value="1"
              c:identifier="GEXIV2_ORIENTATION_NORMAL"
              glib:nick="normal">
        <doc xml:space="preserve">The orientation of the image is without any rotation.</doc>
      </member>
      <member name="hflip"
              value="2"
              c:identifier="GEXIV2_ORIENTATION_HFLIP"
              glib:nick="hflip">
        <doc xml:space="preserve">The image is flipped on its horizontal axis</doc>
      </member>
      <member name="rot_180"
              value="3"
              c:identifier="GEXIV2_ORIENTATION_ROT_180"
              glib:nick="rot-180">
        <doc xml:space="preserve">The image is rotated by 180 degrees</doc>
      </member>
      <member name="vflip"
              value="4"
              c:identifier="GEXIV2_ORIENTATION_VFLIP"
              glib:nick="vflip">
        <doc xml:space="preserve">The Image is flipped on its vertical axis</doc>
      </member>
      <member name="rot_90_hflip"
              value="5"
              c:identifier="GEXIV2_ORIENTATION_ROT_90_HFLIP"
              glib:nick="rot-90-hflip">
        <doc xml:space="preserve">The image is rotated by 90 degrees clockwise and flipped on its horizontal axis</doc>
      </member>
      <member name="rot_90"
              value="6"
              c:identifier="GEXIV2_ORIENTATION_ROT_90"
              glib:nick="rot-90">
        <doc xml:space="preserve">The image is rotated by 90 degrees clockwise</doc>
      </member>
      <member name="rot_90_vflip"
              value="7"
              c:identifier="GEXIV2_ORIENTATION_ROT_90_VFLIP"
              glib:nick="rot-90-vflip">
        <doc xml:space="preserve">The image is rotated by 90 degrees clockwise and flipped on its vertical axis</doc>
      </member>
      <member name="rot_270"
              value="8"
              c:identifier="GEXIV2_ORIENTATION_ROT_270"
              glib:nick="rot-270">
        <doc xml:space="preserve">The image is rotated 270 degrees clockwise</doc>
      </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"
              deprecated="1"
              deprecated-version="0.10.3">
        <doc xml:space="preserve">Releases the preview image and all associated memory.</doc>
        <doc-deprecated xml:space="preserve">Use g_object_unref() instead.</doc-deprecated>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #GExiv2PreviewImage</doc>
            <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">
            <doc xml:space="preserve">An instance of #GExiv2PreviewImage</doc>
            <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">
            <doc xml:space="preserve">An instance of #GExiv2PreviewImage</doc>
            <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">
            <doc xml:space="preserve">An instance of #GExiv2PreviewImage</doc>
            <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">
            <doc xml:space="preserve">An instance of #GExiv2PreviewImage</doc>
            <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">
            <doc xml:space="preserve">An instance of #GExiv2PreviewImage</doc>
            <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">
            <doc xml:space="preserve">An instance of #GExiv2PreviewImage</doc>
            <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">
            <doc xml:space="preserve">An instance of #GExiv2PreviewProperties</doc>
            <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">
            <doc xml:space="preserve">An instance of #GExiv2PreviewProperties</doc>
            <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">
            <doc xml:space="preserve">An instance of #GExiv2PreviewProperties</doc>
            <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">
            <doc xml:space="preserve">An instance of #GExiv2PreviewProperties</doc>
            <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">
            <doc xml:space="preserve">An instance of #GExiv2PreviewProperties</doc>
            <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"
                 glib:type-name="GExiv2StructureType"
                 glib:get-type="gexiv2_gexiv2_structure_type_get_type"
                 c:type="GExiv2StructureType">
      <doc xml:space="preserve">Used in gexiv2_metadata_set_xmp_tag_struct() to determine the array type</doc>
      <member name="none"
              value="0"
              c:identifier="GEXIV2_STRUCTURE_XA_NONE"
              glib:nick="none">
        <doc xml:space="preserve">Structure is not an array</doc>
      </member>
      <member name="alt"
              value="20"
              c:identifier="GEXIV2_STRUCTURE_XA_ALT"
              glib:nick="alt">
        <doc xml:space="preserve">A list of alternative values</doc>
      </member>
      <member name="bag"
              value="21"
              c:identifier="GEXIV2_STRUCTURE_XA_BAG"
              glib:nick="bag">
        <doc xml:space="preserve">An unordered list of values</doc>
      </member>
      <member name="seq"
              value="22"
              c:identifier="GEXIV2_STRUCTURE_XA_SEQ"
              glib:nick="seq">
        <doc xml:space="preserve">An ordered list of values</doc>
      </member>
      <member name="lang"
              value="23"
              c:identifier="GEXIV2_STRUCTURE_XA_LANG"
              glib:nick="lang">
        <doc xml:space="preserve">Not supported. For completeness only</doc>
      </member>
    </enumeration>
    <bitfield name="XmpFormatFlags"
              glib:type-name="GExiv2XmpFormatFlags"
              glib:get-type="gexiv2_gexiv2_xmp_format_flags_get_type"
              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"
              glib:nick="omit-packet-wrapper">
        <doc xml:space="preserve">Omit the XML packet wrapper.</doc>
      </member>
      <member name="read_only_packet"
              value="32"
              c:identifier="GEXIV2_READ_ONLY_PACKET"
              glib:nick="read-only-packet">
        <doc xml:space="preserve">Default is a writeable packet.</doc>
      </member>
      <member name="use_compact_format"
              value="64"
              c:identifier="GEXIV2_USE_COMPACT_FORMAT"
              glib:nick="use-compact-format">
        <doc xml:space="preserve">Use a compact form of RDF.</doc>
      </member>
      <member name="include_thumbnail_pad"
              value="256"
              c:identifier="GEXIV2_INCLUDE_THUMBNAIL_PAD"
              glib:nick="include-thumbnail-pad">
        <doc xml:space="preserve">Include a padding allowance for a thumbnail image.</doc>
      </member>
      <member name="exact_packet_length"
              value="512"
              c:identifier="GEXIV2_EXACT_PACKET_LENGTH"
              glib:nick="exact-packet-length">
        <doc xml:space="preserve">The padding parameter is the overall packet length.</doc>
      </member>
      <member name="write_alias_comments"
              value="1024"
              c:identifier="GEXIV2_WRITE_ALIAS_COMMENTS"
              glib:nick="write-alias-comments">
        <doc xml:space="preserve">Show aliases as XML comments.</doc>
      </member>
      <member name="omit_all_formatting"
              value="2048"
              c:identifier="GEXIV2_OMIT_ALL_FORMATTING"
              glib:nick="omit-all-formatting">
        <doc xml:space="preserve">Omit all formatting whitespace.</doc>
      </member>
    </bitfield>
    <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>
