<?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:doc="http://www.gtk.org/introspection/doc/1.0"
            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
  <include name="GObject" version="2.0"/>
  <include name="Gdk" version="4.0"/>
  <include name="Gsk" version="4.0"/>
  <include name="Gtk" version="4.0"/>
  <package name="shumate-1.0"/>
  <c:include name="shumate/shumate.h"/>
  <doc:format name="unknown"/>
  <namespace name="Shumate"
             version="1.0"
             shared-library="libshumate-1.0.so.1"
             c:identifier-prefixes="Shumate"
             c:symbol-prefixes="shumate">
    <function-macro name="CHECK_VERSION"
                    c:identifier="SHUMATE_CHECK_VERSION"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="shumate/shumate-version.h"
           line="55">Returns %TRUE if the version of the Shumate header files
is the same as or newer than the passed-in version.</doc>
      <source-position filename="shumate/shumate-version.h" line="66"/>
      <parameters>
        <parameter name="major">
          <doc xml:space="preserve"
               filename="shumate/shumate-version.h"
               line="57">major version (e.g. 1 for version 1.2.5)</doc>
        </parameter>
        <parameter name="minor">
          <doc xml:space="preserve"
               filename="shumate/shumate-version.h"
               line="58">minor version (e.g. 2 for version 1.2.5)</doc>
        </parameter>
        <parameter name="micro">
          <doc xml:space="preserve"
               filename="shumate/shumate-version.h"
               line="59">micro version (e.g. 5 for version 1.2.5)</doc>
        </parameter>
      </parameters>
    </function-macro>
    <class name="Compass"
           c:symbol-prefix="compass"
           c:type="ShumateCompass"
           parent="Gtk.Widget"
           glib:type-name="ShumateCompass"
           glib:get-type="shumate_compass_get_type"
           glib:type-struct="CompassClass">
      <doc xml:space="preserve"
           filename="shumate/shumate-compass.c"
           line="20">A widget displaying a compass.

# CSS nodes

```
map-compass
├── revealer
├──── image
```

`ShumateCompass` uses a single CSS node with name map-compass. It also uses an
image named "map-compass".</doc>
      <source-position filename="shumate/shumate-compass.h" line="36"/>
      <implements name="Gtk.Accessible"/>
      <implements name="Gtk.Buildable"/>
      <implements name="Gtk.ConstraintTarget"/>
      <constructor name="new" c:identifier="shumate_compass_new">
        <doc xml:space="preserve"
             filename="shumate/shumate-compass.c"
             line="198">Creates an instance of #ShumateCompass.</doc>
        <source-position filename="shumate/shumate-compass.h" line="38"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-compass.c"
               line="204">a new #ShumateCompass.</doc>
          <type name="Compass" c:type="ShumateCompass*"/>
        </return-value>
        <parameters>
          <parameter name="viewport"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-compass.c"
                 line="200">a #ShumateViewport</doc>
            <type name="Viewport" c:type="ShumateViewport*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_viewport"
              c:identifier="shumate_compass_get_viewport"
              glib:get-property="viewport">
        <doc xml:space="preserve"
             filename="shumate/shumate-compass.c"
             line="245">Gets the viewport used by the compass.</doc>
        <source-position filename="shumate/shumate-compass.h" line="40"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="shumate/shumate-compass.c"
               line="251">The #ShumateViewport used by the compass</doc>
          <type name="Viewport" c:type="ShumateViewport*"/>
        </return-value>
        <parameters>
          <instance-parameter name="compass" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-compass.c"
                 line="247">a #ShumateCompass</doc>
            <type name="Compass" c:type="ShumateCompass*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_viewport"
              c:identifier="shumate_compass_set_viewport"
              glib:set-property="viewport">
        <doc xml:space="preserve"
             filename="shumate/shumate-compass.c"
             line="214">Sets the compass viewport.</doc>
        <source-position filename="shumate/shumate-compass.h" line="41"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="compass" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-compass.c"
                 line="216">a [class@Compass]</doc>
            <type name="Compass" c:type="ShumateCompass*"/>
          </instance-parameter>
          <parameter name="viewport"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-compass.c"
                 line="217">a [class@Viewport]</doc>
            <type name="Viewport" c:type="ShumateViewport*"/>
          </parameter>
        </parameters>
      </method>
      <property name="viewport"
                writable="1"
                transfer-ownership="none"
                setter="set_viewport"
                getter="get_viewport">
        <doc xml:space="preserve"
             filename="shumate/shumate-compass.c"
             line="162">The viewport to use.</doc>
        <type name="Viewport"/>
      </property>
    </class>
    <record name="CompassClass"
            c:type="ShumateCompassClass"
            glib:is-gtype-struct-for="Compass">
      <source-position filename="shumate/shumate-compass.h" line="36"/>
      <field name="parent_class">
        <type name="Gtk.WidgetClass" c:type="GtkWidgetClass"/>
      </field>
    </record>
    <class name="Coordinate"
           c:symbol-prefix="coordinate"
           c:type="ShumateCoordinate"
           parent="GObject.InitiallyUnowned"
           glib:type-name="ShumateCoordinate"
           glib:get-type="shumate_coordinate_get_type"
           glib:type-struct="CoordinateClass">
      <doc xml:space="preserve"
           filename="shumate/shumate-coordinate.c"
           line="20">A simple object implementing [iface@Location].</doc>
      <source-position filename="shumate/shumate-coordinate.h" line="42"/>
      <implements name="Location"/>
      <constructor name="new" c:identifier="shumate_coordinate_new">
        <doc xml:space="preserve"
             filename="shumate/shumate-coordinate.c"
             line="189">Creates a new instance of #ShumateCoordinate.</doc>
        <source-position filename="shumate/shumate-coordinate.h" line="44"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-coordinate.c"
               line="194">the created instance.</doc>
          <type name="Coordinate" c:type="ShumateCoordinate*"/>
        </return-value>
      </constructor>
      <constructor name="new_full" c:identifier="shumate_coordinate_new_full">
        <doc xml:space="preserve"
             filename="shumate/shumate-coordinate.c"
             line="203">Creates a new instance of #ShumateCoordinate initialized with the given
coordinates.</doc>
        <source-position filename="shumate/shumate-coordinate.h" line="46"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-coordinate.c"
               line="211">the created instance.</doc>
          <type name="Coordinate" c:type="ShumateCoordinate*"/>
        </return-value>
        <parameters>
          <parameter name="latitude" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-coordinate.c"
                 line="205">the latitude coordinate</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="longitude" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-coordinate.c"
                 line="206">the longitude coordinate</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </constructor>
      <field name="parent_instance">
        <type name="GObject.InitiallyUnowned" c:type="GInitiallyUnowned"/>
      </field>
    </class>
    <record name="CoordinateClass"
            c:type="ShumateCoordinateClass"
            glib:is-gtype-struct-for="Coordinate">
      <source-position filename="shumate/shumate-coordinate.h" line="42"/>
      <field name="parent_class">
        <type name="GObject.InitiallyUnownedClass"
              c:type="GInitiallyUnownedClass"/>
      </field>
      <field name="padding" readable="0" private="1">
        <array zero-terminated="0" fixed-size="16">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <class name="DataSource"
           c:symbol-prefix="data_source"
           c:type="ShumateDataSource"
           parent="GObject.Object"
           abstract="1"
           glib:type-name="ShumateDataSource"
           glib:get-type="shumate_data_source_get_type"
           glib:type-struct="DataSourceClass">
      <doc xml:space="preserve"
           filename="shumate/shumate-data-source.c"
           line="26">The base class used to retrieve tiles as [struct@GLib.Bytes].</doc>
      <source-position filename="shumate/shumate-data-source.h" line="53"/>
      <virtual-method name="get_tile_data_async"
                      invoker="get_tile_data_async"
                      glib:finish-func="get_tile_data_finish">
        <doc xml:space="preserve"
             filename="shumate/shumate-data-source.c"
             line="218">Gets the data for the tile at the given coordinates.

Some data sources may return data multiple times. For example,
[class@TileDownloader] may return data from a cache, then return updated
data from the network. [signal@ShumateDataSource::received-data] is emitted
each time data is received, then @callback is called after the last update.</doc>
        <source-position filename="shumate/shumate-data-source.h" line="34"/>
        <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"
                 filename="shumate/shumate-data-source.c"
                 line="220">a [class@DataSource]</doc>
            <type name="DataSource" c:type="ShumateDataSource*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="221">the X coordinate to fetch</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="222">the Y coordinate to fetch</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="zoom_level" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="223">the Z coordinate to fetch</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="224">a #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="5">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="225">a #GAsyncReadyCallback to execute upon completion</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     closure="5">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="226">closure data for @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_tile_data_finish"
                      invoker="get_tile_data_finish"
                      throws="1">
        <doc xml:space="preserve"
             filename="shumate/shumate-data-source.c"
             line="251">Gets the final result of a request started with
shumate_data_source_get_tile_data_async().</doc>
        <source-position filename="shumate/shumate-data-source.h" line="41"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="shumate/shumate-data-source.c"
               line="260">The requested data, or %NULL if an
error occurred</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="253">a [class@DataSource]</doc>
            <type name="DataSource" c:type="ShumateDataSource*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="254">a #GAsyncResult provided to callback</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="start_request"
                      invoker="start_request"
                      version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-data-source.c"
             line="274">Begins a request for a tile.</doc>
        <source-position filename="shumate/shumate-data-source.h" line="45"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="shumate/shumate-data-source.c"
               line="284">a [class@DataSourceRequest] object for tracking
the request.</doc>
          <type name="DataSourceRequest" c:type="ShumateDataSourceRequest*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="276">a [class@DataSource]</doc>
            <type name="DataSource" c:type="ShumateDataSource*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="277">X coordinate to request</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="278">Y coordinate to request</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="zoom_level" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="279">zoom level to request</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="280">for cancelling the request</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_max_zoom_level"
              c:identifier="shumate_data_source_get_max_zoom_level"
              glib:get-property="max-zoom-level"
              version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-data-source.c"
             line="348">Gets the data source's maximum zoom level.</doc>
        <source-position filename="shumate/shumate-data-source.h" line="76"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-data-source.c"
               line="354">the maximum zoom level this data source supports</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="350">a [class@DataSource]</doc>
            <type name="DataSource" c:type="ShumateDataSource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_min_zoom_level"
              c:identifier="shumate_data_source_get_min_zoom_level"
              glib:get-property="min-zoom-level"
              version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-data-source.c"
             line="302">Gets the data source's minimum zoom level.</doc>
        <source-position filename="shumate/shumate-data-source.h" line="73"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-data-source.c"
               line="308">the minimum zoom level this data source supports</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="304">a [class@DataSource]</doc>
            <type name="DataSource" c:type="ShumateDataSource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_tile_data_async"
              c:identifier="shumate_data_source_get_tile_data_async"
              glib:finish-func="get_tile_data_finish">
        <doc xml:space="preserve"
             filename="shumate/shumate-data-source.c"
             line="218">Gets the data for the tile at the given coordinates.

Some data sources may return data multiple times. For example,
[class@TileDownloader] may return data from a cache, then return updated
data from the network. [signal@ShumateDataSource::received-data] is emitted
each time data is received, then @callback is called after the last update.</doc>
        <source-position filename="shumate/shumate-data-source.h" line="56"/>
        <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"
                 filename="shumate/shumate-data-source.c"
                 line="220">a [class@DataSource]</doc>
            <type name="DataSource" c:type="ShumateDataSource*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="221">the X coordinate to fetch</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="222">the Y coordinate to fetch</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="zoom_level" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="223">the Z coordinate to fetch</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="224">a #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="5">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="225">a #GAsyncReadyCallback to execute upon completion</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="226">closure data for @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_tile_data_finish"
              c:identifier="shumate_data_source_get_tile_data_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="shumate/shumate-data-source.c"
             line="251">Gets the final result of a request started with
shumate_data_source_get_tile_data_async().</doc>
        <source-position filename="shumate/shumate-data-source.h" line="63"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="shumate/shumate-data-source.c"
               line="260">The requested data, or %NULL if an
error occurred</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="253">a [class@DataSource]</doc>
            <type name="DataSource" c:type="ShumateDataSource*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="254">a #GAsyncResult provided to callback</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_max_zoom_level"
              c:identifier="shumate_data_source_set_max_zoom_level"
              glib:set-property="max-zoom-level"
              version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-data-source.c"
             line="368">Sets the data source's maximum zoom level.</doc>
        <source-position filename="shumate/shumate-data-source.h" line="77"/>
        <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"
                 filename="shumate/shumate-data-source.c"
                 line="370">a [class@DataSource]</doc>
            <type name="DataSource" c:type="ShumateDataSource*"/>
          </instance-parameter>
          <parameter name="zoom_level" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="371">the maximum zoom level</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_min_zoom_level"
              c:identifier="shumate_data_source_set_min_zoom_level"
              glib:set-property="min-zoom-level"
              version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-data-source.c"
             line="322">Sets the data source's minimum zoom level.</doc>
        <source-position filename="shumate/shumate-data-source.h" line="74"/>
        <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"
                 filename="shumate/shumate-data-source.c"
                 line="324">a [class@DataSource]</doc>
            <type name="DataSource" c:type="ShumateDataSource*"/>
          </instance-parameter>
          <parameter name="zoom_level" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="325">the minimum zoom level</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="start_request"
              c:identifier="shumate_data_source_start_request"
              version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-data-source.c"
             line="274">Begins a request for a tile.</doc>
        <source-position filename="shumate/shumate-data-source.h" line="67"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="shumate/shumate-data-source.c"
               line="284">a [class@DataSourceRequest] object for tracking
the request.</doc>
          <type name="DataSourceRequest" c:type="ShumateDataSourceRequest*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="276">a [class@DataSource]</doc>
            <type name="DataSource" c:type="ShumateDataSource*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="277">X coordinate to request</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="278">Y coordinate to request</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="zoom_level" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="279">zoom level to request</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="280">for cancelling the request</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <property name="max-zoom-level"
                version="1.1"
                writable="1"
                construct="1"
                transfer-ownership="none"
                setter="set_max_zoom_level"
                getter="get_max_zoom_level"
                default-value="30">
        <doc xml:space="preserve"
             filename="shumate/shumate-data-source.c"
             line="170">The maximum zoom level</doc>
        <type name="guint" c:type="guint"/>
      </property>
      <property name="min-zoom-level"
                version="1.1"
                writable="1"
                construct="1"
                transfer-ownership="none"
                setter="set_min_zoom_level"
                getter="get_min_zoom_level"
                default-value="0">
        <doc xml:space="preserve"
             filename="shumate/shumate-data-source.c"
             line="156">The minimum zoom level</doc>
        <type name="guint" c:type="guint"/>
      </property>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <glib:signal name="received-data"
                   when="last"
                   deprecated="1"
                   deprecated-version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-data-source.c"
             line="188">Emitted when data is received for any tile. This includes any intermediate
steps, such as data from the file cache, as well as the final result.</doc>
        <doc-deprecated xml:space="preserve">Use [method@DataSource.start_request] and connect to the
notify signals of the resulting [class@DataSourceRequest].</doc-deprecated>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="191">the X coordinate of the tile</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="192">the Y coordinate of the tile</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="zoom_level" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="193">the zoom level of the tile</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="bytes" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="194">the received data</doc>
            <type name="GLib.Bytes"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="DataSourceClass"
            c:type="ShumateDataSourceClass"
            glib:is-gtype-struct-for="DataSource">
      <source-position filename="shumate/shumate-data-source.h" line="53"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="get_tile_data_async">
        <callback name="get_tile_data_async">
          <source-position filename="shumate/shumate-data-source.h" line="34"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="shumate/shumate-data-source.c"
                   line="220">a [class@DataSource]</doc>
              <type name="DataSource" c:type="ShumateDataSource*"/>
            </parameter>
            <parameter name="x" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="shumate/shumate-data-source.c"
                   line="221">the X coordinate to fetch</doc>
              <type name="gint" c:type="int"/>
            </parameter>
            <parameter name="y" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="shumate/shumate-data-source.c"
                   line="222">the Y coordinate to fetch</doc>
              <type name="gint" c:type="int"/>
            </parameter>
            <parameter name="zoom_level" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="shumate/shumate-data-source.c"
                   line="223">the Z coordinate to fetch</doc>
              <type name="gint" c:type="int"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="shumate/shumate-data-source.c"
                   line="224">a #GCancellable</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
            <parameter name="callback"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       scope="async"
                       closure="6">
              <doc xml:space="preserve"
                   filename="shumate/shumate-data-source.c"
                   line="225">a #GAsyncReadyCallback to execute upon completion</doc>
              <type name="Gio.AsyncReadyCallback"
                    c:type="GAsyncReadyCallback"/>
            </parameter>
            <parameter name="user_data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       closure="6">
              <doc xml:space="preserve"
                   filename="shumate/shumate-data-source.c"
                   line="226">closure data for @callback</doc>
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_tile_data_finish">
        <callback name="get_tile_data_finish" throws="1">
          <source-position filename="shumate/shumate-data-source.h" line="41"/>
          <return-value transfer-ownership="full" nullable="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="260">The requested data, or %NULL if an
error occurred</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="shumate/shumate-data-source.c"
                   line="253">a [class@DataSource]</doc>
              <type name="DataSource" c:type="ShumateDataSource*"/>
            </parameter>
            <parameter name="result" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="shumate/shumate-data-source.c"
                   line="254">a #GAsyncResult provided to callback</doc>
              <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="start_request">
        <callback name="start_request">
          <source-position filename="shumate/shumate-data-source.h" line="45"/>
          <return-value transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source.c"
                 line="284">a [class@DataSourceRequest] object for tracking
the request.</doc>
            <type name="DataSourceRequest" c:type="ShumateDataSourceRequest*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="shumate/shumate-data-source.c"
                   line="276">a [class@DataSource]</doc>
              <type name="DataSource" c:type="ShumateDataSource*"/>
            </parameter>
            <parameter name="x" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="shumate/shumate-data-source.c"
                   line="277">X coordinate to request</doc>
              <type name="gint" c:type="int"/>
            </parameter>
            <parameter name="y" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="shumate/shumate-data-source.c"
                   line="278">Y coordinate to request</doc>
              <type name="gint" c:type="int"/>
            </parameter>
            <parameter name="zoom_level" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="shumate/shumate-data-source.c"
                   line="279">zoom level to request</doc>
              <type name="gint" c:type="int"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="shumate/shumate-data-source.c"
                   line="280">for cancelling the request</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="padding" readable="0" private="1">
        <array zero-terminated="0" fixed-size="15">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <class name="DataSourceRequest"
           c:symbol-prefix="data_source_request"
           c:type="ShumateDataSourceRequest"
           version="1.1"
           parent="GObject.Object"
           glib:type-name="ShumateDataSourceRequest"
           glib:get-type="shumate_data_source_request_get_type"
           glib:type-struct="DataSourceRequestClass">
      <doc xml:space="preserve"
           filename="shumate/shumate-data-source-request.c"
           line="23">Represents a request to a [class@DataSource] for a tile.

Data sources can return a tile multiple times. For example, a
[class@TileDownloader] may return cached data first, then later return data
from a network service when it arrives. This allows the map to be rendered
as quickly as possible without waiting for the network unnecessarily.

Conventional async/finish method pairs don't support multiple returns.
Instead, [method@DataSource.start_request] is available, which returns a
[class@DataSourceRequest] whose properties, [property@DataSourceRequest:data]
and [property@DataSourceRequest:error], update as data becomes available.
The [signal@GObject.Object::notify] signal can be used to watch for these
changes. When the request is done and no more data will be returned,
[property@DataSourceRequest:completed] is set to %TRUE.

[class@DataSource] implementations can use a subclass of
[class@DataSourceRequest], but the base class should be sufficient in most
cases.</doc>
      <source-position filename="shumate/shumate-data-source-request.h"
                       line="38"/>
      <constructor name="new"
                   c:identifier="shumate_data_source_request_new"
                   version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-data-source-request.c"
             line="355">Creates a new [class@DataSourceRequest].

Only implementations of [vfunc@DataSource.start_request] should need to
construct a new request object.</doc>
        <source-position filename="shumate/shumate-data-source-request.h"
                         line="40"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="shumate/shumate-data-source-request.c"
               line="366">a new [class@DataSourceRequest]</doc>
          <type name="DataSourceRequest" c:type="ShumateDataSourceRequest*"/>
        </return-value>
        <parameters>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source-request.c"
                 line="357">X coordinate of the requested tile</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source-request.c"
                 line="358">Y coordinate of the requested tile</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="zoom_level" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source-request.c"
                 line="359">Zoom level of the requested tile</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="complete"
              c:identifier="shumate_data_source_request_complete"
              version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-data-source-request.c"
             line="464">Marks the request as complete. No more data or errors may be emitted.

This can only be called if data has been emitted. If there is no data,
use [method@DataSourceRequest.emit_error] instead, which will automatically
complete the request.</doc>
        <source-position filename="shumate/shumate-data-source-request.h"
                         line="58"/>
        <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"
                 filename="shumate/shumate-data-source-request.c"
                 line="466">a [class@DataSourceRequest]</doc>
            <type name="DataSourceRequest" c:type="ShumateDataSourceRequest*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="emit_data"
              c:identifier="shumate_data_source_request_emit_data"
              version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-data-source-request.c"
             line="382">Emits tile data as a response to the request. This sets the
[property@DataSourceRequest:data] property.

If @complete is %TRUE, then [property@DataSourceRequest:completed] is set to
%TRUE as well.</doc>
        <source-position filename="shumate/shumate-data-source-request.h"
                         line="49"/>
        <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"
                 filename="shumate/shumate-data-source-request.c"
                 line="384">a [class@DataSourceRequest]</doc>
            <type name="DataSourceRequest" c:type="ShumateDataSourceRequest*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source-request.c"
                 line="385">the data to emit</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="complete" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source-request.c"
                 line="386">%TRUE to also complete the request, %FALSE otherwise</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="emit_error"
              c:identifier="shumate_data_source_request_emit_error"
              version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-data-source-request.c"
             line="426">Emits a fatal error in response to the request. This completes the request,
so no more data or errors can be emitted after this. Non-fatal errors should
not be reported.

If [property@DataSourceRequest:data] was previously set, it will be cleared.</doc>
        <source-position filename="shumate/shumate-data-source-request.h"
                         line="54"/>
        <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"
                 filename="shumate/shumate-data-source-request.c"
                 line="428">a [class@DataSourceRequest]</doc>
            <type name="DataSourceRequest" c:type="ShumateDataSourceRequest*"/>
          </instance-parameter>
          <parameter name="error" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source-request.c"
                 line="429">an error</doc>
            <type name="GLib.Error" c:type="const GError*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_data"
              c:identifier="shumate_data_source_request_get_data"
              glib:get-property="data"
              version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-data-source-request.c"
             line="300">Gets the latest data from the request.</doc>
        <source-position filename="shumate/shumate-data-source-request.h"
                         line="48"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="shumate/shumate-data-source-request.c"
               line="306">The latest data, if any.</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source-request.c"
                 line="302">a [class@DataSourceRequest]</doc>
            <type name="DataSourceRequest" c:type="ShumateDataSourceRequest*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_error"
              c:identifier="shumate_data_source_request_get_error"
              glib:get-property="error"
              version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-data-source-request.c"
             line="318">Gets the latest error from the request.</doc>
        <source-position filename="shumate/shumate-data-source-request.h"
                         line="53"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="shumate/shumate-data-source-request.c"
               line="324">The latest error, if any.</doc>
          <type name="GLib.Error" c:type="GError*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source-request.c"
                 line="320">a [class@DataSourceRequest]</doc>
            <type name="DataSourceRequest" c:type="ShumateDataSourceRequest*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_x"
              c:identifier="shumate_data_source_request_get_x"
              glib:get-property="x"
              version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-data-source-request.c"
             line="246">Gets the X coordinate of the requested tile.</doc>
        <source-position filename="shumate/shumate-data-source-request.h"
                         line="44"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-data-source-request.c"
               line="252">the X coordinate</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source-request.c"
                 line="248">a [class@DataSourceRequest]</doc>
            <type name="DataSourceRequest" c:type="ShumateDataSourceRequest*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_y"
              c:identifier="shumate_data_source_request_get_y"
              glib:get-property="y"
              version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-data-source-request.c"
             line="264">Gets the Y coordinate of the requested tile.</doc>
        <source-position filename="shumate/shumate-data-source-request.h"
                         line="45"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-data-source-request.c"
               line="270">the Y coordinate</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source-request.c"
                 line="266">a [class@DataSourceRequest]</doc>
            <type name="DataSourceRequest" c:type="ShumateDataSourceRequest*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_zoom_level"
              c:identifier="shumate_data_source_request_get_zoom_level"
              glib:get-property="zoom-level"
              version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-data-source-request.c"
             line="282">Gets the zoom level of the requested tile.</doc>
        <source-position filename="shumate/shumate-data-source-request.h"
                         line="46"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-data-source-request.c"
               line="288">the zoom level</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source-request.c"
                 line="284">a [class@DataSourceRequest]</doc>
            <type name="DataSourceRequest" c:type="ShumateDataSourceRequest*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_completed"
              c:identifier="shumate_data_source_request_is_completed"
              glib:get-property="completed"
              version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-data-source-request.c"
             line="336">Gets whether the request has been completed. Completed requests will not
receive new data or errors.</doc>
        <source-position filename="shumate/shumate-data-source-request.h"
                         line="57"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-data-source-request.c"
               line="343">%TRUE if the request is completed, otherwise %FALSE</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-data-source-request.c"
                 line="338">a [class@DataSourceRequest]</doc>
            <type name="DataSourceRequest" c:type="ShumateDataSourceRequest*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="completed"
                version="1.1"
                transfer-ownership="none"
                getter="is_completed"
                default-value="FALSE">
        <doc xml:space="preserve"
             filename="shumate/shumate-data-source-request.c"
             line="224">%TRUE if the request has been completed, otherwise %FALSE. A completed
request will not receive further updates to either
[property@DataSourceRequest:data] or [property@DataSourceRequest:error].</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="data"
                version="1.1"
                transfer-ownership="none"
                getter="get_data">
        <doc xml:space="preserve"
             filename="shumate/shumate-data-source-request.c"
             line="199">The most recent data for the tile, if available. If an error is emitted,
this will be set to %NULL.</doc>
        <type name="GLib.Bytes"/>
      </property>
      <property name="error"
                version="1.1"
                transfer-ownership="none"
                getter="get_error">
        <doc xml:space="preserve"
             filename="shumate/shumate-data-source-request.c"
             line="212">The error that occurred during the request, if any.</doc>
        <type name="GLib.Error"/>
      </property>
      <property name="x"
                version="1.1"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_x"
                default-value="0">
        <doc xml:space="preserve"
             filename="shumate/shumate-data-source-request.c"
             line="163">The X coordinate of the requested tile.</doc>
        <type name="gint" c:type="gint"/>
      </property>
      <property name="y"
                version="1.1"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_y"
                default-value="0">
        <doc xml:space="preserve"
             filename="shumate/shumate-data-source-request.c"
             line="175">The Y coordinate of the requested tile.</doc>
        <type name="gint" c:type="gint"/>
      </property>
      <property name="zoom-level"
                version="1.1"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_zoom_level"
                default-value="0">
        <doc xml:space="preserve"
             filename="shumate/shumate-data-source-request.c"
             line="187">The zoom level of the requested tile.</doc>
        <type name="gint" c:type="gint"/>
      </property>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="DataSourceRequestClass"
            c:type="ShumateDataSourceRequestClass"
            glib:is-gtype-struct-for="DataSourceRequest">
      <source-position filename="shumate/shumate-data-source-request.h"
                       line="38"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="padding" readable="0" private="1">
        <array zero-terminated="0" fixed-size="16">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <class name="FileCache"
           c:symbol-prefix="file_cache"
           c:type="ShumateFileCache"
           parent="GObject.Object"
           glib:type-name="ShumateFileCache"
           glib:get-type="shumate_file_cache_get_type"
           glib:type-struct="FileCacheClass">
      <doc xml:space="preserve"
           filename="shumate/shumate-file-cache.c"
           line="21">A cache that stores and retrieves tiles from the file system. It is mainly
used by [class@TileDownloader], but can also be used by custom data
sources.

The cache will be filled up to a certain size limit. When this limit is
reached, the cache can be purged, and the tiles that are accessed least are
deleted.

## ETags

The cache can optionally store an ETag string with each tile. This is
useful to avoid redownloading old tiles that haven't changed (for example,
using the HTTP If-None-Match header).</doc>
      <source-position filename="shumate/shumate-file-cache.h" line="54"/>
      <constructor name="new_full" c:identifier="shumate_file_cache_new_full">
        <doc xml:space="preserve"
             filename="shumate/shumate-file-cache.c"
             line="366">Constructor of #ShumateFileCache.</doc>
        <source-position filename="shumate/shumate-file-cache.h" line="56"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="shumate/shumate-file-cache.c"
               line="375">a constructed #ShumateFileCache</doc>
          <type name="FileCache" c:type="ShumateFileCache*"/>
        </return-value>
        <parameters>
          <parameter name="size_limit" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="368">maximum size of the cache in bytes</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="cache_key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="369">an ID for the tileset to store/retrieve</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="cache_dir"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="370">the directory where the cache is created. When cache_dir == NULL,
a cache in ~/.cache/shumate is used.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_cache_dir"
              c:identifier="shumate_file_cache_get_cache_dir"
              glib:get-property="cache-dir">
        <doc xml:space="preserve"
             filename="shumate/shumate-file-cache.c"
             line="412">Gets the directory where the cache database is stored.</doc>
        <source-position filename="shumate/shumate-file-cache.h" line="64"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-file-cache.c"
               line="418">the directory</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="414">a #ShumateFileCache</doc>
            <type name="FileCache" c:type="ShumateFileCache*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_cache_key"
              c:identifier="shumate_file_cache_get_cache_key"
              glib:get-property="cache-key">
        <doc xml:space="preserve"
             filename="shumate/shumate-file-cache.c"
             line="429">Gets the key used to store and retrieve tiles from the cache. Different keys
can be used to store multiple tilesets in the same cache directory.</doc>
        <source-position filename="shumate/shumate-file-cache.h" line="65"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-file-cache.c"
               line="436">the cache key</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="431">a #ShumateFileCache</doc>
            <type name="FileCache" c:type="ShumateFileCache*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_size_limit"
              c:identifier="shumate_file_cache_get_size_limit"
              glib:get-property="size-limit">
        <doc xml:space="preserve"
             filename="shumate/shumate-file-cache.c"
             line="395">Gets the cache size limit in bytes.</doc>
        <source-position filename="shumate/shumate-file-cache.h" line="60"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-file-cache.c"
               line="401">size limit</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="397">a #ShumateFileCache</doc>
            <type name="FileCache" c:type="ShumateFileCache*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_tile_async"
              c:identifier="shumate_file_cache_get_tile_async"
              glib:finish-func="get_tile_finish">
        <doc xml:space="preserve"
             filename="shumate/shumate-file-cache.c"
             line="790">Gets tile data from the cache, if it is available.</doc>
        <source-position filename="shumate/shumate-file-cache.h" line="75"/>
        <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"
                 filename="shumate/shumate-file-cache.c"
                 line="792">a #ShumateFileCache</doc>
            <type name="FileCache" c:type="ShumateFileCache*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="793">the X coordinate of the tile</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="794">the Y coordinate of the tile</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="zoom_level" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="795">the zoom level of the tile</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="796">a #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="5">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="797">a #GAsyncReadyCallback to execute upon completion</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="798">closure data for @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_tile_finish"
              c:identifier="shumate_file_cache_get_tile_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="shumate/shumate-file-cache.c"
             line="881">Gets the tile data from a completed shumate_file_cache_get_tile_async()
operation.

@modtime will be set to the time the tile was added to the cache, or the
latest time it was confirmed to be up to date.

@etag will be set to the data's ETag, if present.</doc>
        <source-position filename="shumate/shumate-file-cache.h" line="82"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="shumate/shumate-file-cache.c"
               line="897">a #GBytes containing the tile data, or %NULL if the tile was not in
the cache or an error occurred</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="883">a #ShumateFileCache</doc>
            <type name="FileCache" c:type="ShumateFileCache*"/>
          </instance-parameter>
          <parameter name="etag"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="884">a location for the data's ETag, or %NULL</doc>
            <type name="utf8" c:type="char**"/>
          </parameter>
          <parameter name="modtime"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="885">a location to return the tile's last modification time, or %NULL</doc>
            <type name="GLib.DateTime" c:type="GDateTime**"/>
          </parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="886">a #GAsyncResult provided to callback</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="mark_up_to_date"
              c:identifier="shumate_file_cache_mark_up_to_date">
        <doc xml:space="preserve"
             filename="shumate/shumate-file-cache.c"
             line="530">Marks a tile in the cache as being up to date, without changing its data.

For example, a network source might call this function when it gets an HTTP
304 Not Modified response.</doc>
        <source-position filename="shumate/shumate-file-cache.h" line="101"/>
        <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"
                 filename="shumate/shumate-file-cache.c"
                 line="532">a #ShumateFileCache</doc>
            <type name="FileCache" c:type="ShumateFileCache*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="533">the X coordinate of the tile</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="534">the Y coordinate of the tile</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="zoom_level" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="535">the zoom level of the tile</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="purge_cache_async"
              c:identifier="shumate_file_cache_purge_cache_async"
              glib:finish-func="purge_cache_finish">
        <doc xml:space="preserve"
             filename="shumate/shumate-file-cache.c"
             line="717">Removes less used tiles from the cache, if necessary, until it fits in
the size limit.</doc>
        <source-position filename="shumate/shumate-file-cache.h" line="67"/>
        <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"
                 filename="shumate/shumate-file-cache.c"
                 line="719">a #ShumateFileCache</doc>
            <type name="FileCache" c:type="ShumateFileCache*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="720">a #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="721">a #GAsyncReadyCallback to execute upon completion</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="722">closure data for @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="purge_cache_finish"
              c:identifier="shumate_file_cache_purge_cache_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="shumate/shumate-file-cache.c"
             line="751">Gets the result of an async operation started using
shumate_file_cache_purge_cache_async().</doc>
        <source-position filename="shumate/shumate-file-cache.h" line="71"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-file-cache.c"
               line="760">%TRUE if any tiles were removed, otherwise %FALSE</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="753">a #ShumateFileCache</doc>
            <type name="FileCache" c:type="ShumateFileCache*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="754">a #GAsyncResult provided to callback</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_size_limit"
              c:identifier="shumate_file_cache_set_size_limit"
              glib:set-property="size-limit">
        <doc xml:space="preserve"
             filename="shumate/shumate-file-cache.c"
             line="447">Sets the cache size limit in bytes.</doc>
        <source-position filename="shumate/shumate-file-cache.h" line="61"/>
        <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"
                 filename="shumate/shumate-file-cache.c"
                 line="449">a #ShumateFileCache</doc>
            <type name="FileCache" c:type="ShumateFileCache*"/>
          </instance-parameter>
          <parameter name="size_limit" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="450">the cache limit in bytes</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="store_tile_async"
              c:identifier="shumate_file_cache_store_tile_async"
              glib:finish-func="store_tile_finish">
        <doc xml:space="preserve"
             filename="shumate/shumate-file-cache.c"
             line="942">Stores a tile in the cache.</doc>
        <source-position filename="shumate/shumate-file-cache.h" line="88"/>
        <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"
                 filename="shumate/shumate-file-cache.c"
                 line="944">a #ShumateFileCache</doc>
            <type name="FileCache" c:type="ShumateFileCache*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="945">the X coordinate of the tile</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="946">the Y coordinate of the tile</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="zoom_level" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="947">the zoom level of the tile</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="bytes" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="948">a #GBytes</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="etag"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="949">an ETag string, or %NULL</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="950">a #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="7">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="951">a #GAsyncReadyCallback to execute upon completion</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="952">closure data for @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="store_tile_finish"
              c:identifier="shumate_file_cache_store_tile_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="shumate/shumate-file-cache.c"
             line="1079">Gets the success value of a completed shumate_file_cache_store_tile_async()
operation.</doc>
        <source-position filename="shumate/shumate-file-cache.h" line="97"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-file-cache.c"
               line="1088">%TRUE if the operation was successful, otherwise %FALSE</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="1081">an #ShumateFileCache</doc>
            <type name="FileCache" c:type="ShumateFileCache*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-file-cache.c"
                 line="1082">a #GAsyncResult provided to callback</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <property name="cache-dir"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_cache_dir"
                default-value="NULL">
        <doc xml:space="preserve"
             filename="shumate/shumate-file-cache.c"
             line="323">The directory where the tile database is stored.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="cache-key"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_cache_key"
                default-value="NULL">
        <doc xml:space="preserve"
             filename="shumate/shumate-file-cache.c"
             line="335">The key used to store and retrieve tiles from the cache. Different keys
can be used to store multiple tilesets in the same cache directory.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="size-limit"
                writable="1"
                construct="1"
                transfer-ownership="none"
                setter="set_size_limit"
                getter="get_size_limit"
                default-value="100000000">
        <doc xml:space="preserve"
             filename="shumate/shumate-file-cache.c"
             line="307">The cache size limit in bytes.

Note: this new value will not be applied until you call shumate_file_cache_purge()</doc>
        <type name="guint" c:type="guint"/>
      </property>
    </class>
    <record name="FileCacheClass"
            c:type="ShumateFileCacheClass"
            glib:is-gtype-struct-for="FileCache">
      <source-position filename="shumate/shumate-file-cache.h" line="54"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <enumeration name="FileCacheError"
                 glib:type-name="ShumateFileCacheError"
                 glib:get-type="shumate_file_cache_error_get_type"
                 c:type="ShumateFileCacheError"
                 glib:error-domain="shumate-file-cache-error-quark">
      <doc xml:space="preserve"
           filename="shumate/shumate-file-cache.h"
           line="43">Error codes in the #SHUMATE_FILE_CACHE_ERROR domain.</doc>
      <member name="failed"
              value="0"
              c:identifier="SHUMATE_FILE_CACHE_ERROR_FAILED"
              glib:nick="failed"
              glib:name="SHUMATE_FILE_CACHE_ERROR_FAILED">
        <doc xml:space="preserve"
             filename="shumate/shumate-file-cache.h"
             line="45">An unspecified error occurred during the operation.</doc>
      </member>
      <function name="quark" c:identifier="shumate_file_cache_error_quark">
        <doc xml:space="preserve"
             filename="shumate/shumate-file-cache.c"
             line="1101">Gets the #ShumateFileCache error quark.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-file-cache.c"
               line="1106">a #GQuark</doc>
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
    </enumeration>
    <enumeration name="GeometryType"
                 version="1.2"
                 glib:type-name="ShumateGeometryType"
                 glib:get-type="shumate_geometry_type_get_type"
                 c:type="ShumateGeometryType">
      <doc xml:space="preserve"
           filename="shumate/shumate-vector-reader-iter.h"
           line="24">A type of geometry.</doc>
      <member name="unknown"
              value="0"
              c:identifier="SHUMATE_GEOMETRY_TYPE_UNKNOWN"
              glib:nick="unknown"
              glib:name="SHUMATE_GEOMETRY_TYPE_UNKNOWN">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-reader-iter.h"
             line="26">Unknown geometry type</doc>
      </member>
      <member name="point"
              value="1"
              c:identifier="SHUMATE_GEOMETRY_TYPE_POINT"
              glib:nick="point"
              glib:name="SHUMATE_GEOMETRY_TYPE_POINT">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-reader-iter.h"
             line="27">A single point</doc>
      </member>
      <member name="multipoint"
              value="2"
              c:identifier="SHUMATE_GEOMETRY_TYPE_MULTIPOINT"
              glib:nick="multipoint"
              glib:name="SHUMATE_GEOMETRY_TYPE_MULTIPOINT">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-reader-iter.h"
             line="28">A collection of points</doc>
      </member>
      <member name="linestring"
              value="3"
              c:identifier="SHUMATE_GEOMETRY_TYPE_LINESTRING"
              glib:nick="linestring"
              glib:name="SHUMATE_GEOMETRY_TYPE_LINESTRING">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-reader-iter.h"
             line="29">A single line</doc>
      </member>
      <member name="multilinestring"
              value="4"
              c:identifier="SHUMATE_GEOMETRY_TYPE_MULTILINESTRING"
              glib:nick="multilinestring"
              glib:name="SHUMATE_GEOMETRY_TYPE_MULTILINESTRING">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-reader-iter.h"
             line="30">A collection of lines</doc>
      </member>
      <member name="polygon"
              value="5"
              c:identifier="SHUMATE_GEOMETRY_TYPE_POLYGON"
              glib:nick="polygon"
              glib:name="SHUMATE_GEOMETRY_TYPE_POLYGON">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-reader-iter.h"
             line="31">A single polygon</doc>
      </member>
      <member name="multipolygon"
              value="6"
              c:identifier="SHUMATE_GEOMETRY_TYPE_MULTIPOLYGON"
              glib:nick="multipolygon"
              glib:name="SHUMATE_GEOMETRY_TYPE_MULTIPOLYGON">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-reader-iter.h"
             line="32">A collection of polygons</doc>
      </member>
    </enumeration>
    <class name="Layer"
           c:symbol-prefix="layer"
           c:type="ShumateLayer"
           parent="Gtk.Widget"
           abstract="1"
           glib:type-name="ShumateLayer"
           glib:get-type="shumate_layer_get_type"
           glib:type-struct="LayerClass">
      <doc xml:space="preserve"
           filename="shumate/shumate-layer.c"
           line="20">Every layer (overlay that moves together with the map) has to inherit this
class and implement its virtual methods.

You can use the same layer to display many types of maps.  In Shumate they
are called map sources.  You can change the [property@MapLayer:map-source]
property at any time to replace the current displayed map.</doc>
      <source-position filename="shumate/shumate-layer.h" line="52"/>
      <implements name="Gtk.Accessible"/>
      <implements name="Gtk.Buildable"/>
      <implements name="Gtk.ConstraintTarget"/>
      <virtual-method name="get_debug_text">
        <doc xml:space="preserve"
             filename="shumate/shumate-layer.h"
             line="39">Returns a string to show in the debug overlay, which can be
enabled in the GTK inspector.</doc>
        <source-position filename="shumate/shumate-layer.h" line="48"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="shumate/shumate-layer.h"
               line="46">a string with debug text</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-layer.h"
                 line="41">a [class@Layer]</doc>
            <type name="Layer" c:type="ShumateLayer*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="get_viewport"
              c:identifier="shumate_layer_get_viewport"
              glib:get-property="viewport">
        <doc xml:space="preserve"
             filename="shumate/shumate-layer.c"
             line="156">Gets the #ShumateViewport used by this layer.</doc>
        <source-position filename="shumate/shumate-layer.h" line="54"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-layer.c"
               line="162">The #ShumateViewport.</doc>
          <type name="Viewport" c:type="ShumateViewport*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-layer.c"
                 line="158">a #ShumateLayer</doc>
            <type name="Layer" c:type="ShumateLayer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="viewport"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_viewport">
        <type name="Viewport"/>
      </property>
      <field name="parent_instance">
        <type name="Gtk.Widget" c:type="GtkWidget"/>
      </field>
    </class>
    <record name="LayerClass"
            c:type="ShumateLayerClass"
            glib:is-gtype-struct-for="Layer">
      <source-position filename="shumate/shumate-layer.h" line="52"/>
      <field name="parent_class">
        <type name="Gtk.WidgetClass" c:type="GtkWidgetClass"/>
      </field>
      <field name="get_debug_text">
        <callback name="get_debug_text">
          <source-position filename="shumate/shumate-layer.h" line="48"/>
          <return-value transfer-ownership="full" nullable="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-layer.h"
                 line="46">a string with debug text</doc>
            <type name="utf8" c:type="char*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="shumate/shumate-layer.h"
                   line="41">a [class@Layer]</doc>
              <type name="Layer" c:type="ShumateLayer*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="padding" readable="0" private="1">
        <array zero-terminated="0" fixed-size="15">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <class name="License"
           c:symbol-prefix="license"
           c:type="ShumateLicense"
           parent="Gtk.Widget"
           glib:type-name="ShumateLicense"
           glib:get-type="shumate_license_get_type"
           glib:type-struct="LicenseClass">
      <doc xml:space="preserve"
           filename="shumate/shumate-license.c"
           line="20">A widget that displays license text.</doc>
      <source-position filename="shumate/shumate-license.h" line="35"/>
      <implements name="Gtk.Accessible"/>
      <implements name="Gtk.Buildable"/>
      <implements name="Gtk.ConstraintTarget"/>
      <constructor name="new" c:identifier="shumate_license_new">
        <doc xml:space="preserve"
             filename="shumate/shumate-license.c"
             line="212">Creates an instance of #ShumateLicense.</doc>
        <source-position filename="shumate/shumate-license.h" line="37"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-license.c"
               line="217">a new #ShumateLicense.</doc>
          <type name="License" c:type="ShumateLicense*"/>
        </return-value>
      </constructor>
      <method name="append_map_source"
              c:identifier="shumate_license_append_map_source">
        <source-position filename="shumate/shumate-license.h" line="47"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="license" transfer-ownership="none">
            <type name="License" c:type="ShumateLicense*"/>
          </instance-parameter>
          <parameter name="map_source" transfer-ownership="none">
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_extra_text"
              c:identifier="shumate_license_get_extra_text"
              glib:get-property="extra-text">
        <doc xml:space="preserve"
             filename="shumate/shumate-license.c"
             line="246">Gets the additional license text.</doc>
        <source-position filename="shumate/shumate-license.h" line="41"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-license.c"
               line="252">the additional license text</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="license" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-license.c"
                 line="248">a #ShumateLicense</doc>
            <type name="License" c:type="ShumateLicense*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_xalign"
              c:identifier="shumate_license_get_xalign"
              glib:get-property="xalign">
        <doc xml:space="preserve"
             filename="shumate/shumate-license.c"
             line="283">Get the license's text horizontal alignment.</doc>
        <source-position filename="shumate/shumate-license.h" line="45"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-license.c"
               line="289">the license's text horizontal alignment.</doc>
          <type name="gfloat" c:type="float"/>
        </return-value>
        <parameters>
          <instance-parameter name="license" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-license.c"
                 line="285">The license</doc>
            <type name="License" c:type="ShumateLicense*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="prepend_map_source"
              c:identifier="shumate_license_prepend_map_source">
        <source-position filename="shumate/shumate-license.h" line="49"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="license" transfer-ownership="none">
            <type name="License" c:type="ShumateLicense*"/>
          </instance-parameter>
          <parameter name="map_source" transfer-ownership="none">
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_map_source"
              c:identifier="shumate_license_remove_map_source">
        <source-position filename="shumate/shumate-license.h" line="51"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="license" transfer-ownership="none">
            <type name="License" c:type="ShumateLicense*"/>
          </instance-parameter>
          <parameter name="map_source" transfer-ownership="none">
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_extra_text"
              c:identifier="shumate_license_set_extra_text"
              glib:set-property="extra-text">
        <doc xml:space="preserve"
             filename="shumate/shumate-license.c"
             line="225">Show the additional license text on the map view.  The text will preceed the
map's licence when displayed. Use "\n" to separate the lines.</doc>
        <source-position filename="shumate/shumate-license.h" line="39"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="license" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-license.c"
                 line="227">a #ShumateLicense</doc>
            <type name="License" c:type="ShumateLicense*"/>
          </instance-parameter>
          <parameter name="text" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-license.c"
                 line="228">the additional license text</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_xalign"
              c:identifier="shumate_license_set_xalign"
              glib:set-property="xalign">
        <doc xml:space="preserve"
             filename="shumate/shumate-license.c"
             line="263">Set the license's text horizontal alignment.</doc>
        <source-position filename="shumate/shumate-license.h" line="43"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="license" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-license.c"
                 line="265">a #ShumateLicense</doc>
            <type name="License" c:type="ShumateLicense*"/>
          </instance-parameter>
          <parameter name="xalign" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-license.c"
                 line="266">The license's text horizontal alignment</doc>
            <type name="gfloat" c:type="float"/>
          </parameter>
        </parameters>
      </method>
      <property name="extra-text"
                writable="1"
                transfer-ownership="none"
                setter="set_extra_text"
                getter="get_extra_text"
                default-value="NULL">
        <doc xml:space="preserve"
             filename="shumate/shumate-license.c"
             line="144">Sets additional text to be displayed in the license area.  The map's
license will be added below it. Your text can have multiple lines, just use
"\n" in between.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="xalign"
                writable="1"
                transfer-ownership="none"
                setter="set_xalign"
                getter="get_xalign"
                default-value="0.500000">
        <doc xml:space="preserve"
             filename="shumate/shumate-license.c"
             line="158">The license's horizontal alignment</doc>
        <type name="gfloat" c:type="gfloat"/>
      </property>
    </class>
    <record name="LicenseClass"
            c:type="ShumateLicenseClass"
            glib:is-gtype-struct-for="License">
      <source-position filename="shumate/shumate-license.h" line="35"/>
      <field name="parent_class">
        <type name="Gtk.WidgetClass" c:type="GtkWidgetClass"/>
      </field>
    </record>
    <interface name="Location"
               c:symbol-prefix="location"
               c:type="ShumateLocation"
               glib:type-name="ShumateLocation"
               glib:get-type="shumate_location_get_type"
               glib:type-struct="LocationInterface">
      <doc xml:space="preserve"
           filename="shumate/shumate-location.c"
           line="20">An interface common to objects having latitude and longitude

By implementing #ShumateLocation the object declares that it has latitude
and longitude and can be used to specify location on the map.</doc>
      <source-position filename="shumate/shumate-location.h" line="81"/>
      <virtual-method name="get_latitude" invoker="get_latitude">
        <doc xml:space="preserve"
             filename="shumate/shumate-location.c"
             line="88">Gets the latitude coordinate in degrees.</doc>
        <source-position filename="shumate/shumate-location.h" line="76"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-location.c"
               line="94">the latitude coordinate in degrees.</doc>
          <type name="gdouble" c:type="double"/>
        </return-value>
        <parameters>
          <instance-parameter name="location" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-location.c"
                 line="90">a #ShumateLocation</doc>
            <type name="Location" c:type="ShumateLocation*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_longitude" invoker="get_longitude">
        <doc xml:space="preserve"
             filename="shumate/shumate-location.c"
             line="103">Gets the longitude coordinate in degrees.</doc>
        <source-position filename="shumate/shumate-location.h" line="77"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-location.c"
               line="109">the longitude coordinate in degrees.</doc>
          <type name="gdouble" c:type="double"/>
        </return-value>
        <parameters>
          <instance-parameter name="location" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-location.c"
                 line="105">a #ShumateLocation</doc>
            <type name="Location" c:type="ShumateLocation*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_location" invoker="set_location">
        <doc xml:space="preserve"
             filename="shumate/shumate-location.c"
             line="69">Sets the coordinates of the location</doc>
        <source-position filename="shumate/shumate-location.h" line="78"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="location" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-location.c"
                 line="71">a #ShumateLocation</doc>
            <type name="Location" c:type="ShumateLocation*"/>
          </instance-parameter>
          <parameter name="latitude" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-location.c"
                 line="72">the latitude in degrees</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="longitude" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-location.c"
                 line="73">the longitude in degrees</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="distance"
              c:identifier="shumate_location_distance"
              version="1.2">
        <doc xml:space="preserve"
             filename="shumate/shumate-location.c"
             line="119">Calculates the distance in meters between two locations.

This function uses the great-circle distance formula, which assumes
Earth is a perfect sphere. This limits the accuracy of the result,
but is good enough for most purposes.</doc>
        <source-position filename="shumate/shumate-location.h" line="89"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-location.c"
               line="130">the distance in meters between @self and @other</doc>
          <type name="gdouble" c:type="double"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-location.c"
                 line="121">a [iface@Location]</doc>
            <type name="Location" c:type="ShumateLocation*"/>
          </instance-parameter>
          <parameter name="other" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-location.c"
                 line="122">a [iface@Location]</doc>
            <type name="Location" c:type="ShumateLocation*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_latitude"
              c:identifier="shumate_location_get_latitude"
              glib:get-property="latitude">
        <doc xml:space="preserve"
             filename="shumate/shumate-location.c"
             line="88">Gets the latitude coordinate in degrees.</doc>
        <source-position filename="shumate/shumate-location.h" line="86"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-location.c"
               line="94">the latitude coordinate in degrees.</doc>
          <type name="gdouble" c:type="double"/>
        </return-value>
        <parameters>
          <instance-parameter name="location" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-location.c"
                 line="90">a #ShumateLocation</doc>
            <type name="Location" c:type="ShumateLocation*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_longitude"
              c:identifier="shumate_location_get_longitude"
              glib:get-property="longitude">
        <doc xml:space="preserve"
             filename="shumate/shumate-location.c"
             line="103">Gets the longitude coordinate in degrees.</doc>
        <source-position filename="shumate/shumate-location.h" line="87"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-location.c"
               line="109">the longitude coordinate in degrees.</doc>
          <type name="gdouble" c:type="double"/>
        </return-value>
        <parameters>
          <instance-parameter name="location" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-location.c"
                 line="105">a #ShumateLocation</doc>
            <type name="Location" c:type="ShumateLocation*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_location" c:identifier="shumate_location_set_location">
        <doc xml:space="preserve"
             filename="shumate/shumate-location.c"
             line="69">Sets the coordinates of the location</doc>
        <source-position filename="shumate/shumate-location.h" line="83"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="location" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-location.c"
                 line="71">a #ShumateLocation</doc>
            <type name="Location" c:type="ShumateLocation*"/>
          </instance-parameter>
          <parameter name="latitude" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-location.c"
                 line="72">the latitude in degrees</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="longitude" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-location.c"
                 line="73">the longitude in degrees</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </method>
      <property name="latitude"
                writable="1"
                transfer-ownership="none"
                getter="get_latitude"
                default-value="0.000000">
        <doc xml:space="preserve"
             filename="shumate/shumate-location.c"
             line="53">The latitude coordonate in degrees</doc>
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="longitude"
                writable="1"
                transfer-ownership="none"
                getter="get_longitude"
                default-value="0.000000">
        <doc xml:space="preserve"
             filename="shumate/shumate-location.c"
             line="39">The longitude coordonate in degrees</doc>
        <type name="gdouble" c:type="gdouble"/>
      </property>
    </interface>
    <record name="LocationInterface"
            c:type="ShumateLocationInterface"
            glib:is-gtype-struct-for="Location">
      <doc xml:space="preserve"
           filename="shumate/shumate-location.h"
           line="62">An interface common to objects having latitude and longitude.</doc>
      <source-position filename="shumate/shumate-location.h" line="81"/>
      <field name="g_iface" readable="0" private="1">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="get_latitude">
        <doc xml:space="preserve"
             filename="shumate/shumate-location.h"
             line="64">virtual function for obtaining latitude.</doc>
        <callback name="get_latitude">
          <source-position filename="shumate/shumate-location.h" line="76"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-location.c"
                 line="94">the latitude coordinate in degrees.</doc>
            <type name="gdouble" c:type="double"/>
          </return-value>
          <parameters>
            <parameter name="location" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="shumate/shumate-location.c"
                   line="90">a #ShumateLocation</doc>
              <type name="Location" c:type="ShumateLocation*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_longitude">
        <doc xml:space="preserve"
             filename="shumate/shumate-location.h"
             line="65">virtual function for obtaining longitude.</doc>
        <callback name="get_longitude">
          <source-position filename="shumate/shumate-location.h" line="77"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-location.c"
                 line="109">the longitude coordinate in degrees.</doc>
            <type name="gdouble" c:type="double"/>
          </return-value>
          <parameters>
            <parameter name="location" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="shumate/shumate-location.c"
                   line="105">a #ShumateLocation</doc>
              <type name="Location" c:type="ShumateLocation*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_location">
        <doc xml:space="preserve"
             filename="shumate/shumate-location.h"
             line="66">virtual function for setting position.</doc>
        <callback name="set_location">
          <source-position filename="shumate/shumate-location.h" line="78"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="location" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="shumate/shumate-location.c"
                   line="71">a #ShumateLocation</doc>
              <type name="Location" c:type="ShumateLocation*"/>
            </parameter>
            <parameter name="latitude" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="shumate/shumate-location.c"
                   line="72">the latitude in degrees</doc>
              <type name="gdouble" c:type="double"/>
            </parameter>
            <parameter name="longitude" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="shumate/shumate-location.c"
                   line="73">the longitude in degrees</doc>
              <type name="gdouble" c:type="double"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <constant name="MAJOR_VERSION" value="1" c:type="SHUMATE_MAJOR_VERSION">
      <doc xml:space="preserve"
           filename="shumate/shumate-version.h"
           line="34">The major version of libshumate (1, if %SHUMATE_VERSION is 1.2.3)</doc>
      <source-position filename="shumate/shumate-version.h" line="39"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="MAP_SOURCE_MFF_RELIEF"
              value="mff-relief"
              c:type="SHUMATE_MAP_SOURCE_MFF_RELIEF">
      <doc xml:space="preserve"
           filename="shumate/shumate-map-source-registry.h"
           line="68">Maps for Free Relief</doc>
      <source-position filename="shumate/shumate-map-source-registry.h"
                       line="73"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="MAP_SOURCE_OSM_CYCLE_MAP"
              value="osm-cyclemap"
              c:type="SHUMATE_MAP_SOURCE_OSM_CYCLE_MAP">
      <doc xml:space="preserve"
           filename="shumate/shumate-map-source-registry.h"
           line="56">OpenStreetMap Cycle Map</doc>
      <source-position filename="shumate/shumate-map-source-registry.h"
                       line="61"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="MAP_SOURCE_OSM_MAPNIK"
              value="osm-mapnik"
              c:type="SHUMATE_MAP_SOURCE_OSM_MAPNIK">
      <doc xml:space="preserve"
           filename="shumate/shumate-map-source-registry.h"
           line="50">OpenStreetMap Mapnik</doc>
      <source-position filename="shumate/shumate-map-source-registry.h"
                       line="55"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="MAP_SOURCE_OSM_TRANSPORT_MAP"
              value="osm-transportmap"
              c:type="SHUMATE_MAP_SOURCE_OSM_TRANSPORT_MAP">
      <doc xml:space="preserve"
           filename="shumate/shumate-map-source-registry.h"
           line="62">OpenStreetMap Transport Map</doc>
      <source-position filename="shumate/shumate-map-source-registry.h"
                       line="67"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="MAP_SOURCE_OWM_CLOUDS"
              value="owm-clouds"
              c:type="SHUMATE_MAP_SOURCE_OWM_CLOUDS">
      <doc xml:space="preserve"
           filename="shumate/shumate-map-source-registry.h"
           line="74">OpenWeatherMap clouds layer</doc>
      <source-position filename="shumate/shumate-map-source-registry.h"
                       line="79"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="MAP_SOURCE_OWM_PRECIPITATION"
              value="owm-precipitation"
              c:type="SHUMATE_MAP_SOURCE_OWM_PRECIPITATION">
      <doc xml:space="preserve"
           filename="shumate/shumate-map-source-registry.h"
           line="80">OpenWeatherMap precipitation</doc>
      <source-position filename="shumate/shumate-map-source-registry.h"
                       line="85"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="MAP_SOURCE_OWM_PRESSURE"
              value="owm-pressure"
              c:type="SHUMATE_MAP_SOURCE_OWM_PRESSURE">
      <doc xml:space="preserve"
           filename="shumate/shumate-map-source-registry.h"
           line="86">OpenWeatherMap sea level pressure</doc>
      <source-position filename="shumate/shumate-map-source-registry.h"
                       line="91"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="MAP_SOURCE_OWM_TEMPERATURE"
              value="owm-temperature"
              c:type="SHUMATE_MAP_SOURCE_OWM_TEMPERATURE">
      <doc xml:space="preserve"
           filename="shumate/shumate-map-source-registry.h"
           line="98">OpenWeatherMap temperature</doc>
      <source-position filename="shumate/shumate-map-source-registry.h"
                       line="103"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="MAP_SOURCE_OWM_WIND"
              value="owm-wind"
              c:type="SHUMATE_MAP_SOURCE_OWM_WIND">
      <doc xml:space="preserve"
           filename="shumate/shumate-map-source-registry.h"
           line="92">OpenWeatherMap wind</doc>
      <source-position filename="shumate/shumate-map-source-registry.h"
                       line="97"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="MAX_LATITUDE"
              value="85.0511287798"
              c:type="SHUMATE_MAX_LATITUDE">
      <doc xml:space="preserve"
           filename="shumate/shumate-location.h"
           line="38">The maximal possible latitude value.</doc>
      <source-position filename="shumate/shumate-location.h" line="43"/>
      <type name="gdouble" c:type="gdouble"/>
    </constant>
    <constant name="MAX_LONGITUDE"
              value="180.0"
              c:type="SHUMATE_MAX_LONGITUDE">
      <doc xml:space="preserve"
           filename="shumate/shumate-location.h"
           line="52">The maximal possible longitude value.</doc>
      <source-position filename="shumate/shumate-location.h" line="57"/>
      <type name="gdouble" c:type="gdouble"/>
    </constant>
    <constant name="MICRO_VERSION" value="0" c:type="SHUMATE_MICRO_VERSION">
      <doc xml:space="preserve"
           filename="shumate/shumate-version.h"
           line="48">The micro version of libshumate (3, if %SHUMATE_VERSION is 1.2.3)</doc>
      <source-position filename="shumate/shumate-version.h" line="53"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="MINOR_VERSION" value="4" c:type="SHUMATE_MINOR_VERSION">
      <doc xml:space="preserve"
           filename="shumate/shumate-version.h"
           line="41">The minor version of libshumate (2, if %SHUMATE_VERSION is 1.2.3)</doc>
      <source-position filename="shumate/shumate-version.h" line="46"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="MIN_LATITUDE"
              value="-85.0511287798"
              c:type="SHUMATE_MIN_LATITUDE">
      <doc xml:space="preserve"
           filename="shumate/shumate-location.h"
           line="31">The minimal possible latitude value.</doc>
      <source-position filename="shumate/shumate-location.h" line="36"/>
      <type name="gdouble" c:type="gdouble"/>
    </constant>
    <constant name="MIN_LONGITUDE"
              value="-180.0"
              c:type="SHUMATE_MIN_LONGITUDE">
      <doc xml:space="preserve"
           filename="shumate/shumate-location.h"
           line="45">The minimal possible longitude value.</doc>
      <source-position filename="shumate/shumate-location.h" line="50"/>
      <type name="gdouble" c:type="gdouble"/>
    </constant>
    <class name="Map"
           c:symbol-prefix="map"
           c:type="ShumateMap"
           parent="Gtk.Widget"
           glib:type-name="ShumateMap"
           glib:get-type="shumate_map_get_type"
           glib:type-struct="MapClass">
      <doc xml:space="preserve"
           filename="shumate/shumate-map.c"
           line="24">The Map widget is a [class@Gtk.Widget] that show and allows interaction with
the user.

This is the base widget and doesn't have advanced features. You can check the
[class@Shumate.SimpleMap] for a ready-to-use widget.

By default, a [class@Shumate.Viewport] is created and can be accessed with
[method@Shumate.Map.get_viewport].

Unless created with [ctor@Shumate.Map.new_simple], the widget doesn't hold any
layer and won't show anything. A [class@Shumate.Layer] can be added or removed
using the [method@Shumate.Map.add_layer] or [method@Shumate.Map.remove_layer]
methods.</doc>
      <source-position filename="shumate/shumate-map.h" line="39"/>
      <implements name="Gtk.Accessible"/>
      <implements name="Gtk.Buildable"/>
      <implements name="Gtk.ConstraintTarget"/>
      <constructor name="new" c:identifier="shumate_map_new">
        <doc xml:space="preserve"
             filename="shumate/shumate-map.c"
             line="1020">Creates an instance of #ShumateMap.</doc>
        <source-position filename="shumate/shumate-map.h" line="41"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-map.c"
               line="1025">a new #ShumateMap ready to be used as a #GtkWidget.</doc>
          <type name="Map" c:type="ShumateMap*"/>
        </return-value>
      </constructor>
      <constructor name="new_simple" c:identifier="shumate_map_new_simple">
        <source-position filename="shumate/shumate-map.h" line="42"/>
        <return-value transfer-ownership="none">
          <type name="Map" c:type="ShumateMap*"/>
        </return-value>
      </constructor>
      <method name="add_layer" c:identifier="shumate_map_add_layer">
        <doc xml:space="preserve"
             filename="shumate/shumate-map.c"
             line="1262">Adds a new layer to the view</doc>
        <source-position filename="shumate/shumate-map.h" line="76"/>
        <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"
                 filename="shumate/shumate-map.c"
                 line="1264">a #ShumateMap</doc>
            <type name="Map" c:type="ShumateMap*"/>
          </instance-parameter>
          <parameter name="layer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map.c"
                 line="1265">a #ShumateLayer</doc>
            <type name="Layer" c:type="ShumateLayer*"/>
          </parameter>
        </parameters>
      </method>
      <method name="center_on" c:identifier="shumate_map_center_on">
        <doc xml:space="preserve"
             filename="shumate/shumate-map.c"
             line="1069">Centers the map on these coordinates.</doc>
        <source-position filename="shumate/shumate-map.h" line="46"/>
        <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"
                 filename="shumate/shumate-map.c"
                 line="1071">a #ShumateMap</doc>
            <type name="Map" c:type="ShumateMap*"/>
          </instance-parameter>
          <parameter name="latitude" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map.c"
                 line="1072">the longitude to center the map at</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="longitude" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map.c"
                 line="1073">the longitude to center the map at</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_animate_zoom"
              c:identifier="shumate_map_get_animate_zoom"
              glib:get-property="animate-zoom">
        <doc xml:space="preserve"
             filename="shumate/shumate-map.c"
             line="1428">Checks whether the view animates zoom level changes.</doc>
        <source-position filename="shumate/shumate-map.h" line="87"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-map.c"
               line="1434">TRUE if the view animates zooms, FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map.c"
                 line="1430">a #ShumateMap</doc>
            <type name="Map" c:type="ShumateMap*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_go_to_duration"
              c:identifier="shumate_map_get_go_to_duration"
              glib:get-property="go-to-duration">
        <doc xml:space="preserve"
             filename="shumate/shumate-map.c"
             line="1225">Get the 'go-to-duration' property.</doc>
        <source-position filename="shumate/shumate-map.h" line="67"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-map.c"
               line="1231">the animation duration when calling [method@Map.go_to],
  in milliseconds.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map.c"
                 line="1227">a #ShumateMap</doc>
            <type name="Map" c:type="ShumateMap*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_state"
              c:identifier="shumate_map_get_state"
              glib:get-property="state">
        <doc xml:space="preserve"
             filename="shumate/shumate-map.c"
             line="1444">Gets the view's state.</doc>
        <source-position filename="shumate/shumate-map.h" line="88"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-map.c"
               line="1450">the state.</doc>
          <type name="State" c:type="ShumateState"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map.c"
                 line="1446">a #ShumateMap</doc>
            <type name="Map" c:type="ShumateMap*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_viewport"
              c:identifier="shumate_map_get_viewport"
              glib:get-property="viewport">
        <doc xml:space="preserve"
             filename="shumate/shumate-map.c"
             line="1053">Get the #ShumateViewport used by this view.</doc>
        <source-position filename="shumate/shumate-map.h" line="44"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-map.c"
               line="1059">the #ShumateViewport</doc>
          <type name="Viewport" c:type="ShumateViewport*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map.c"
                 line="1055">a #ShumateMap</doc>
            <type name="Map" c:type="ShumateMap*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_zoom_on_double_click"
              c:identifier="shumate_map_get_zoom_on_double_click"
              glib:get-property="zoom-on-double-click">
        <doc xml:space="preserve"
             filename="shumate/shumate-map.c"
             line="1411">Checks whether the view zooms on double click.</doc>
        <source-position filename="shumate/shumate-map.h" line="86"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-map.c"
               line="1417">TRUE if the view zooms on double click, FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map.c"
                 line="1413">a #ShumateMap</doc>
            <type name="Map" c:type="ShumateMap*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="go_to" c:identifier="shumate_map_go_to">
        <doc xml:space="preserve"
             filename="shumate/shumate-map.c"
             line="1109">Move from the current position to these coordinates. All tiles in the
intermediate view WILL be loaded!</doc>
        <source-position filename="shumate/shumate-map.h" line="50"/>
        <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"
                 filename="shumate/shumate-map.c"
                 line="1111">a #ShumateMap</doc>
            <type name="Map" c:type="ShumateMap*"/>
          </instance-parameter>
          <parameter name="latitude" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map.c"
                 line="1112">the longitude to center the map at</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="longitude" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map.c"
                 line="1113">the longitude to center the map at</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </method>
      <method name="go_to_full" c:identifier="shumate_map_go_to_full">
        <doc xml:space="preserve"
             filename="shumate/shumate-map.c"
             line="1135">Move from the current position to these coordinates and zoom to the given
zoom level. All tiles in the intermediate view WILL be loaded!</doc>
        <source-position filename="shumate/shumate-map.h" line="53"/>
        <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"
                 filename="shumate/shumate-map.c"
                 line="1137">a #ShumateMap</doc>
            <type name="Map" c:type="ShumateMap*"/>
          </instance-parameter>
          <parameter name="latitude" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map.c"
                 line="1138">the longitude to center the map at</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="longitude" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map.c"
                 line="1139">the longitude to center the map at</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="zoom_level" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map.c"
                 line="1140">the zoom level to end at</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </method>
      <method name="go_to_full_with_duration"
              c:identifier="shumate_map_go_to_full_with_duration">
        <doc xml:space="preserve"
             filename="shumate/shumate-map.c"
             line="1165">Move from the current position to these coordinates and zoom to the given
zoom level. The given duration is used instead of the map's default [property@Map:go-to-duration].
All tiles in the intermediate view WILL be loaded!</doc>
        <source-position filename="shumate/shumate-map.h" line="57"/>
        <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"
                 filename="shumate/shumate-map.c"
                 line="1167">a #ShumateMap</doc>
            <type name="Map" c:type="ShumateMap*"/>
          </instance-parameter>
          <parameter name="latitude" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map.c"
                 line="1168">the longitude to center the map at</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="longitude" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map.c"
                 line="1169">the longitude to center the map at</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="zoom_level" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map.c"
                 line="1170">the zoom level to end at</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="duration_ms" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map.c"
                 line="1171">animation duration in milliseconds</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="insert_layer_above"
              c:identifier="shumate_map_insert_layer_above">
        <doc xml:space="preserve"
             filename="shumate/shumate-map.c"
             line="1303">Adds @layer to @self above @next_sibling or, if @next_sibling is %NULL, at
the bottom of the layer list.</doc>
        <source-position filename="shumate/shumate-map.h" line="83"/>
        <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"
                 filename="shumate/shumate-map.c"
                 line="1305">a #ShumateMap</doc>
            <type name="Map" c:type="ShumateMap*"/>
          </instance-parameter>
          <parameter name="layer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map.c"
                 line="1306">a #ShumateLayer</doc>
            <type name="Layer" c:type="ShumateLayer*"/>
          </parameter>
          <parameter name="next_sibling"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map.c"
                 line="1307">a #ShumateLayer that is a child of @self, or %NULL</doc>
            <type name="Layer" c:type="ShumateLayer*"/>
          </parameter>
        </parameters>
      </method>
      <method name="insert_layer_behind"
              c:identifier="shumate_map_insert_layer_behind">
        <doc xml:space="preserve"
             filename="shumate/shumate-map.c"
             line="1280">Adds @layer to @self behind @next_sibling or, if @next_sibling is %NULL, at
the top of the layer list.</doc>
        <source-position filename="shumate/shumate-map.h" line="80"/>
        <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"
                 filename="shumate/shumate-map.c"
                 line="1282">a #ShumateMap</doc>
            <type name="Map" c:type="ShumateMap*"/>
          </instance-parameter>
          <parameter name="layer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map.c"
                 line="1283">a #ShumateLayer</doc>
            <type name="Layer" c:type="ShumateLayer*"/>
          </parameter>
          <parameter name="next_sibling"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map.c"
                 line="1284">a #ShumateLayer that is a child of @self, or %NULL</doc>
            <type name="Layer" c:type="ShumateLayer*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_layer" c:identifier="shumate_map_remove_layer">
        <doc xml:space="preserve"
             filename="shumate/shumate-map.c"
             line="1326">Removes the given layer from the view</doc>
        <source-position filename="shumate/shumate-map.h" line="78"/>
        <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"
                 filename="shumate/shumate-map.c"
                 line="1328">a #ShumateMap</doc>
            <type name="Map" c:type="ShumateMap*"/>
          </instance-parameter>
          <parameter name="layer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map.c"
                 line="1329">a #ShumateLayer</doc>
            <type name="Layer" c:type="ShumateLayer*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_animate_zoom"
              c:identifier="shumate_map_set_animate_zoom"
              glib:set-property="animate-zoom">
        <doc xml:space="preserve"
             filename="shumate/shumate-map.c"
             line="1394">Should the view animate zoom level changes.</doc>
        <source-position filename="shumate/shumate-map.h" line="74"/>
        <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"
                 filename="shumate/shumate-map.c"
                 line="1396">a #ShumateMap</doc>
            <type name="Map" c:type="ShumateMap*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map.c"
                 line="1397">a #gboolean</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_go_to_duration"
              c:identifier="shumate_map_set_go_to_duration"
              glib:set-property="go-to-duration">
        <doc xml:space="preserve"
             filename="shumate/shumate-map.c"
             line="1242">Set the duration of the transition of [method@Map.go_to].</doc>
        <source-position filename="shumate/shumate-map.h" line="68"/>
        <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"
                 filename="shumate/shumate-map.c"
                 line="1244">a #ShumateMap</doc>
            <type name="Map" c:type="ShumateMap*"/>
          </instance-parameter>
          <parameter name="duration" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map.c"
                 line="1245">the animation duration, in milliseconds</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_map_source" c:identifier="shumate_map_set_map_source">
        <doc xml:space="preserve"
             filename="shumate/shumate-map.c"
             line="1349">Changes the currently used map source. #g_object_unref() will be called on
the previous one.

As a side effect, changing the primary map source will also clear all
secondary map sources.</doc>
        <source-position filename="shumate/shumate-map.h" line="70"/>
        <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"
                 filename="shumate/shumate-map.c"
                 line="1351">a #ShumateMap</doc>
            <type name="Map" c:type="ShumateMap*"/>
          </instance-parameter>
          <parameter name="map_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map.c"
                 line="1352">a #ShumateMapSource</doc>
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_zoom_on_double_click"
              c:identifier="shumate_map_set_zoom_on_double_click"
              glib:set-property="zoom-on-double-click">
        <doc xml:space="preserve"
             filename="shumate/shumate-map.c"
             line="1376">Should the view zoom in and recenter when the user double click on the map.</doc>
        <source-position filename="shumate/shumate-map.h" line="72"/>
        <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"
                 filename="shumate/shumate-map.c"
                 line="1378">a #ShumateMap</doc>
            <type name="Map" c:type="ShumateMap*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map.c"
                 line="1379">a #gboolean</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="stop_go_to" c:identifier="shumate_map_stop_go_to">
        <doc xml:space="preserve"
             filename="shumate/shumate-map.c"
             line="1087">Stop the go to animation.  The view will stay where it was when the
animation was stopped.</doc>
        <source-position filename="shumate/shumate-map.h" line="66"/>
        <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"
                 filename="shumate/shumate-map.c"
                 line="1089">a #ShumateMap</doc>
            <type name="Map" c:type="ShumateMap*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="zoom_in" c:identifier="shumate_map_zoom_in">
        <doc xml:space="preserve"
             filename="shumate/shumate-map.c"
             line="1489">Zooms the map in. If [property@Map:animate-zoom] is `TRUE`, the change will be animated.</doc>
        <source-position filename="shumate/shumate-map.h" line="63"/>
        <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"
                 filename="shumate/shumate-map.c"
                 line="1491">a [class@Map]</doc>
            <type name="Map" c:type="ShumateMap*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="zoom_out" c:identifier="shumate_map_zoom_out">
        <doc xml:space="preserve"
             filename="shumate/shumate-map.c"
             line="1502">Zooms the map out. If [property@Map:animate-zoom] is `TRUE`, the change will be animated.</doc>
        <source-position filename="shumate/shumate-map.h" line="64"/>
        <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"
                 filename="shumate/shumate-map.c"
                 line="1504">a [class@Map]</doc>
            <type name="Map" c:type="ShumateMap*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="animate-zoom"
                writable="1"
                transfer-ownership="none"
                setter="set_animate_zoom"
                getter="get_animate_zoom"
                default-value="TRUE">
        <doc xml:space="preserve"
             filename="shumate/shumate-map.c"
             line="853">Animate zoom change when zooming in/out.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="go-to-duration"
                writable="1"
                transfer-ownership="none"
                setter="set_go_to_duration"
                getter="get_go_to_duration"
                default-value="0">
        <doc xml:space="preserve"
             filename="shumate/shumate-map.c"
             line="879">The duration of an animation when going to a location, in milliseconds.
A value of 0 means that the duration is calculated automatically for you.

Please note that animation of #shumate_map_ensure_visible also
involves a 'go-to' animation.</doc>
        <type name="guint" c:type="guint"/>
      </property>
      <property name="state"
                transfer-ownership="none"
                getter="get_state"
                default-value="SHUMATE_STATE_NONE">
        <doc xml:space="preserve"
             filename="shumate/shumate-map.c"
             line="865">The view's global state. Useful to inform using if the view is busy loading
tiles or not.</doc>
        <type name="State"/>
      </property>
      <property name="viewport"
                transfer-ownership="none"
                getter="get_viewport">
        <doc xml:space="preserve"
             filename="shumate/shumate-map.c"
             line="896">The viewport, which contains information about the center, rotation, zoom,
etc. of the map.</doc>
        <type name="Viewport"/>
      </property>
      <property name="zoom-on-double-click"
                writable="1"
                transfer-ownership="none"
                setter="set_zoom_on_double_click"
                getter="get_zoom_on_double_click"
                default-value="TRUE">
        <doc xml:space="preserve"
             filename="shumate/shumate-map.c"
             line="841">Should the view zoom in and recenter when the user double click on the map.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <glib:signal name="animation-completed" when="last" detailed="1">
        <doc xml:space="preserve"
             filename="shumate/shumate-map.c"
             line="913">The #ShumateMap::animation-completed signal is emitted when any animation in the view
ends.  This is a detailed signal.  For example, if you want to be signaled
only for go-to animation, you should connect to
"animation-completed::go-to". And for zoom, connect to "animation-completed::zoom".</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="MapClass"
            c:type="ShumateMapClass"
            glib:is-gtype-struct-for="Map">
      <source-position filename="shumate/shumate-map.h" line="39"/>
      <field name="parent_class">
        <type name="Gtk.WidgetClass" c:type="GtkWidgetClass"/>
      </field>
    </record>
    <class name="MapLayer"
           c:symbol-prefix="map_layer"
           c:type="ShumateMapLayer"
           parent="Layer"
           glib:type-name="ShumateMapLayer"
           glib:get-type="shumate_map_layer_get_type"
           glib:type-struct="MapLayerClass">
      <doc xml:space="preserve"
           filename="shumate/shumate-map-layer.c"
           line="33">A [class@Shumate.Layer] implementation that fetches tiles from a [class@Shumate.MapSource]
and draws them as a grid.</doc>
      <source-position filename="shumate/shumate-map-layer.h" line="33"/>
      <implements name="Gtk.Accessible"/>
      <implements name="Gtk.Buildable"/>
      <implements name="Gtk.ConstraintTarget"/>
      <constructor name="new" c:identifier="shumate_map_layer_new">
        <source-position filename="shumate/shumate-map-layer.h" line="35"/>
        <return-value transfer-ownership="none">
          <type name="MapLayer" c:type="ShumateMapLayer*"/>
        </return-value>
        <parameters>
          <parameter name="map_source" transfer-ownership="none">
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </parameter>
          <parameter name="viewport" transfer-ownership="none">
            <type name="Viewport" c:type="ShumateViewport*"/>
          </parameter>
        </parameters>
      </constructor>
      <property name="map-source"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="MapSource"/>
      </property>
      <glib:signal name="map-loaded" when="last" version="1.4">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-layer.c"
             line="846">Emitted when all the tiles in the map view are finished loading.

As the map is panned or zoomed, this signal may be emitted multiple times.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="errors" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-layer.c"
                 line="849">`TRUE` if any visible tiles failed to load</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="symbol-clicked" when="last" version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-layer.c"
             line="827">Emitted when a symbol in the map layer is clicked.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="event" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-layer.c"
                 line="830">a [class@SymbolEvent] with details about the clicked symbol.</doc>
            <type name="SymbolEvent"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="tile-error" when="last" version="1.4">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-layer.c"
             line="867">Emitted when a tile fails to load.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="tile" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-layer.c"
                 line="870">the [class@Tile] that failed to load</doc>
            <type name="Tile"/>
          </parameter>
          <parameter name="error" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-layer.c"
                 line="871">the error that occurred</doc>
            <type name="GLib.Error"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="MapLayerClass"
            c:type="ShumateMapLayerClass"
            glib:is-gtype-struct-for="MapLayer">
      <source-position filename="shumate/shumate-map-layer.h" line="33"/>
      <field name="parent_class">
        <type name="LayerClass" c:type="ShumateLayerClass"/>
      </field>
    </record>
    <enumeration name="MapProjection"
                 glib:type-name="ShumateMapProjection"
                 glib:get-type="shumate_map_projection_get_type"
                 c:type="ShumateMapProjection">
      <doc xml:space="preserve"
           filename="shumate/shumate-map-source.h"
           line="34">Projections supported by the library.</doc>
      <member name="mercator"
              value="0"
              c:identifier="SHUMATE_MAP_PROJECTION_MERCATOR"
              glib:nick="mercator"
              glib:name="SHUMATE_MAP_PROJECTION_MERCATOR">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.h"
             line="36">Currently the only supported projection</doc>
      </member>
    </enumeration>
    <class name="MapSource"
           c:symbol-prefix="map_source"
           c:type="ShumateMapSource"
           parent="GObject.Object"
           abstract="1"
           glib:type-name="ShumateMapSource"
           glib:get-type="shumate_map_source_get_type"
           glib:type-struct="MapSourceClass">
      <doc xml:space="preserve"
           filename="shumate/shumate-map-source.c"
           line="20">The base class for all map sources. Map sources fill [class@Tile] objects
with images from various sources: a web API, for example, or a test pattern
generated on demand.

The most common map source is [class@RasterRenderer], which fetches tiles
using a [class@TileDownloader].</doc>
      <source-position filename="shumate/shumate-map-source.h" line="60"/>
      <virtual-method name="fill_tile_async"
                      invoker="fill_tile_async"
                      glib:finish-func="fill_tile_finish">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="664">Asynchronous version of shumate_map_source_fill_tile().</doc>
        <source-position filename="shumate/shumate-map-source.h" line="49"/>
        <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"
                 filename="shumate/shumate-map-source.c"
                 line="666">a #ShumateMapSource</doc>
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </instance-parameter>
          <parameter name="tile" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="667">a #ShumateTile</doc>
            <type name="Tile" c:type="ShumateTile*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="668">a #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="669">a #GAsyncReadyCallback to execute upon completion</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     closure="3">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="670">closure data for @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="fill_tile_finish"
                      invoker="fill_tile_finish"
                      throws="1">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="688">Gets the success value of a completed shumate_map_source_fill_tile_async()
operation.</doc>
        <source-position filename="shumate/shumate-map-source.h" line="54"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-map-source.c"
               line="697">%TRUE if the tile was filled with valid data, otherwise %FALSE</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="690">a #ShumateMapSource</doc>
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="691">a #GAsyncResult provided to callback</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="fill_tile_async"
              c:identifier="shumate_map_source_fill_tile_async"
              glib:finish-func="fill_tile_finish">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="664">Asynchronous version of shumate_map_source_fill_tile().</doc>
        <source-position filename="shumate/shumate-map-source.h" line="110"/>
        <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"
                 filename="shumate/shumate-map-source.c"
                 line="666">a #ShumateMapSource</doc>
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </instance-parameter>
          <parameter name="tile" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="667">a #ShumateTile</doc>
            <type name="Tile" c:type="ShumateTile*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="668">a #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="669">a #GAsyncReadyCallback to execute upon completion</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="670">closure data for @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="fill_tile_finish"
              c:identifier="shumate_map_source_fill_tile_finish"
              throws="1">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="688">Gets the success value of a completed shumate_map_source_fill_tile_async()
operation.</doc>
        <source-position filename="shumate/shumate-map-source.h" line="115"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-map-source.c"
               line="697">%TRUE if the tile was filled with valid data, otherwise %FALSE</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="690">a #ShumateMapSource</doc>
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="691">a #GAsyncResult provided to callback</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_column_count"
              c:identifier="shumate_map_source_get_column_count">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="830">Gets the number of tiles in a column at this zoom level for this map
source.</doc>
        <source-position filename="shumate/shumate-map-source.h" line="103"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-map-source.c"
               line="838">the number of tiles in a column</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="map_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="832">a #ShumateMapSource</doc>
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </instance-parameter>
          <parameter name="zoom_level" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="833">the zoom level</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_id"
              c:identifier="shumate_map_source_get_id"
              glib:get-property="id">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="307">Gets map source's id.</doc>
        <source-position filename="shumate/shumate-map-source.h" line="62"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-map-source.c"
               line="313">the map source's id.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="map_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="309">a #ShumateMapSource</doc>
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_latitude"
              c:identifier="shumate_map_source_get_latitude">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="786">Gets the latitude corresponding to this y position in the map source's
projection.</doc>
        <source-position filename="shumate/shumate-map-source.h" line="98"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-map-source.c"
               line="795">the latitude</doc>
          <type name="gdouble" c:type="double"/>
        </return-value>
        <parameters>
          <instance-parameter name="map_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="788">a #ShumateMapSource</doc>
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </instance-parameter>
          <parameter name="zoom_level" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="789">the zoom level</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="790">a y position</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_license"
              c:identifier="shumate_map_source_get_license"
              glib:get-property="license">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="391">Gets map source's license.</doc>
        <source-position filename="shumate/shumate-map-source.h" line="68"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-map-source.c"
               line="397">the map source's license.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="map_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="393">a #ShumateMapSource</doc>
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_license_uri"
              c:identifier="shumate_map_source_get_license_uri"
              glib:get-property="license-uri">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="433">Gets map source's license URI.</doc>
        <source-position filename="shumate/shumate-map-source.h" line="71"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-map-source.c"
               line="439">the map source's license URI.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="map_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="435">a #ShumateMapSource</doc>
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_longitude"
              c:identifier="shumate_map_source_get_longitude">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="760">Gets the longitude corresponding to this x position in the map source's
projection.</doc>
        <source-position filename="shumate/shumate-map-source.h" line="95"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-map-source.c"
               line="769">the longitude</doc>
          <type name="gdouble" c:type="double"/>
        </return-value>
        <parameters>
          <instance-parameter name="map_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="762">a #ShumateMapSource</doc>
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </instance-parameter>
          <parameter name="zoom_level" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="763">the zoom level</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="764">a x position</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_max_zoom_level"
              c:identifier="shumate_map_source_get_max_zoom_level"
              glib:get-property="max-zoom-level">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="516">Gets map source's maximum zoom level.</doc>
        <source-position filename="shumate/shumate-map-source.h" line="77"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-map-source.c"
               line="522">the maximum zoom level this map source supports</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="map_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="518">a #ShumateMapSource</doc>
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_meters_per_pixel"
              c:identifier="shumate_map_source_get_meters_per_pixel">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="851">Gets meters per pixel at the position on the map using this map source's projection.</doc>
        <source-position filename="shumate/shumate-map-source.h" line="105"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-map-source.c"
               line="860">the meters per pixel</doc>
          <type name="gdouble" c:type="double"/>
        </return-value>
        <parameters>
          <instance-parameter name="map_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="853">a #ShumateMapSource</doc>
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </instance-parameter>
          <parameter name="zoom_level" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="854">the zoom level</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="latitude" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="855">a latitude</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="longitude" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="856">a longitude</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_min_zoom_level"
              c:identifier="shumate_map_source_get_min_zoom_level"
              glib:get-property="min-zoom-level">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="475">Gets map source's minimum zoom level.</doc>
        <source-position filename="shumate/shumate-map-source.h" line="74"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-map-source.c"
               line="481">the miminum zoom level this map source supports</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="map_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="477">a #ShumateMapSource</doc>
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name"
              c:identifier="shumate_map_source_get_name"
              glib:get-property="name">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="349">Gets map source's name.</doc>
        <source-position filename="shumate/shumate-map-source.h" line="65"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-map-source.c"
               line="355">the map source's name.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="map_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="351">a #ShumateMapSource</doc>
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_projection"
              c:identifier="shumate_map_source_get_projection"
              glib:get-property="projection">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="623">Gets map source's projection.</doc>
        <source-position filename="shumate/shumate-map-source.h" line="85"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-map-source.c"
               line="629">the map source's projection.</doc>
          <type name="MapProjection" c:type="ShumateMapProjection"/>
        </return-value>
        <parameters>
          <instance-parameter name="map_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="625">a #ShumateMapSource</doc>
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_row_count"
              c:identifier="shumate_map_source_get_row_count">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="812">Gets the number of tiles in a row at this zoom level for this map source.</doc>
        <source-position filename="shumate/shumate-map-source.h" line="101"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-map-source.c"
               line="819">the number of tiles in a row</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="map_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="814">a #ShumateMapSource</doc>
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </instance-parameter>
          <parameter name="zoom_level" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="815">the zoom level</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_tile_size"
              c:identifier="shumate_map_source_get_tile_size"
              glib:get-property="tile-size">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="557">Gets map source's tile size.</doc>
        <source-position filename="shumate/shumate-map-source.h" line="80"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-map-source.c"
               line="563">the tile's size (width and height) in pixels for this map source</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="map_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="559">a #ShumateMapSource</doc>
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_tile_size_at_zoom"
              c:identifier="shumate_map_source_get_tile_size_at_zoom">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="575">Gets the apparent size of the map tiles at the given fractional zoom level.

As the map is zoomed in, a tile gets bigger and bigger until, at the next
integer zoom level, it "splits" into four tiles at the next zoom level.
Thus, the size increase follows an exponential curve, base 2.</doc>
        <source-position filename="shumate/shumate-map-source.h" line="81"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-map-source.c"
               line="586">the tile's size (width and height) in pixels for this map source
at this zoom level</doc>
          <type name="gdouble" c:type="double"/>
        </return-value>
        <parameters>
          <instance-parameter name="map_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="577">a #ShumateMapSource</doc>
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </instance-parameter>
          <parameter name="zoom_level" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="578">a zoom level</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_x" c:identifier="shumate_map_source_get_x">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="710">Gets the x position on the map using this map source's projection.
(0, 0) is located at the top left.</doc>
        <source-position filename="shumate/shumate-map-source.h" line="89"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-map-source.c"
               line="719">the x position</doc>
          <type name="gdouble" c:type="double"/>
        </return-value>
        <parameters>
          <instance-parameter name="map_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="712">a #ShumateMapSource</doc>
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </instance-parameter>
          <parameter name="zoom_level" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="713">the zoom level</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="longitude" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="714">a longitude</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_y" c:identifier="shumate_map_source_get_y">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="734">Gets the y position on the map using this map source's projection.
(0, 0) is located at the top left.</doc>
        <source-position filename="shumate/shumate-map-source.h" line="92"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-map-source.c"
               line="743">the y position</doc>
          <type name="gdouble" c:type="double"/>
        </return-value>
        <parameters>
          <instance-parameter name="map_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="736">a #ShumateMapSource</doc>
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </instance-parameter>
          <parameter name="zoom_level" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="737">the zoom level</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="latitude" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="738">a latitude</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_id"
              c:identifier="shumate_map_source_set_id"
              glib:set-property="id">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="325">Sets the map source's id.</doc>
        <source-position filename="shumate/shumate-map-source.h" line="63"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="map_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="327">a #ShumateMapSource</doc>
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="328">an id</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_license"
              c:identifier="shumate_map_source_set_license"
              glib:set-property="license">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="409">Sets the map source's license.</doc>
        <source-position filename="shumate/shumate-map-source.h" line="69"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="map_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="411">a #ShumateMapSource</doc>
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </instance-parameter>
          <parameter name="license" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="412">the licence</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_license_uri"
              c:identifier="shumate_map_source_set_license_uri"
              glib:set-property="license-uri">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="451">Sets the map source's license URI.</doc>
        <source-position filename="shumate/shumate-map-source.h" line="72"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="map_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="453">a #ShumateMapSource</doc>
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </instance-parameter>
          <parameter name="license_uri" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="454">the licence URI</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_max_zoom_level"
              c:identifier="shumate_map_source_set_max_zoom_level"
              glib:set-property="max-zoom-level">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="534">Sets the map source's maximum zoom level.</doc>
        <source-position filename="shumate/shumate-map-source.h" line="78"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="map_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="536">a #ShumateMapSource</doc>
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </instance-parameter>
          <parameter name="zoom_level" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="537">the maximum zoom level</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_min_zoom_level"
              c:identifier="shumate_map_source_set_min_zoom_level"
              glib:set-property="min-zoom-level">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="493">Sets the map source's minimal zoom level.</doc>
        <source-position filename="shumate/shumate-map-source.h" line="75"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="map_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="495">a #ShumateMapSource</doc>
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </instance-parameter>
          <parameter name="zoom_level" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="496">the minimal zoom level</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_name"
              c:identifier="shumate_map_source_set_name"
              glib:set-property="name">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="367">Sets the map source's name.</doc>
        <source-position filename="shumate/shumate-map-source.h" line="66"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="map_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="369">a #ShumateMapSource</doc>
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="370">a name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_projection"
              c:identifier="shumate_map_source_set_projection"
              glib:set-property="projection">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="641">Sets the map source's projection.</doc>
        <source-position filename="shumate/shumate-map-source.h" line="86"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="map_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="643">a #ShumateMapSource</doc>
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </instance-parameter>
          <parameter name="projection" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="644">a #ShumateMapProjection</doc>
            <type name="MapProjection" c:type="ShumateMapProjection"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_tile_size"
              c:identifier="shumate_map_source_set_tile_size"
              glib:set-property="tile-size">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="600">Sets the map source's tile size.</doc>
        <source-position filename="shumate/shumate-map-source.h" line="83"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="map_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="602">a #ShumateMapSource</doc>
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </instance-parameter>
          <parameter name="tile_size" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="603">the tile size</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <property name="id"
                writable="1"
                construct="1"
                transfer-ownership="none"
                setter="set_id"
                getter="get_id"
                default-value="NULL">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="193">The id of the map source</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="license"
                writable="1"
                construct="1"
                transfer-ownership="none"
                setter="set_license"
                getter="get_license"
                default-value="NULL">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="217">The usage license of the map source</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="license-uri"
                writable="1"
                construct="1"
                transfer-ownership="none"
                setter="set_license_uri"
                getter="get_license_uri"
                default-value="NULL">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="229">The usage license's uri for more information</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="max-zoom-level"
                writable="1"
                construct="1"
                transfer-ownership="none"
                setter="set_max_zoom_level"
                getter="get_max_zoom_level"
                default-value="18">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="253">The maximum zoom level</doc>
        <type name="guint" c:type="guint"/>
      </property>
      <property name="min-zoom-level"
                writable="1"
                construct="1"
                transfer-ownership="none"
                setter="set_min_zoom_level"
                getter="get_min_zoom_level"
                default-value="0">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="241">The minimum zoom level</doc>
        <type name="guint" c:type="guint"/>
      </property>
      <property name="name"
                writable="1"
                construct="1"
                transfer-ownership="none"
                setter="set_name"
                getter="get_name"
                default-value="NULL">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="205">The name of the map source</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="projection"
                writable="1"
                construct="1"
                transfer-ownership="none"
                setter="set_projection"
                getter="get_projection"
                default-value="SHUMATE_MAP_PROJECTION_MERCATOR">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="277">The map projection of the map source</doc>
        <type name="MapProjection"/>
      </property>
      <property name="tile-size"
                writable="1"
                construct="1"
                transfer-ownership="none"
                setter="set_tile_size"
                getter="get_tile_size"
                default-value="256">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source.c"
             line="265">The tile size of the map source</doc>
        <type name="guint" c:type="guint"/>
      </property>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="MapSourceClass"
            c:type="ShumateMapSourceClass"
            glib:is-gtype-struct-for="MapSource">
      <source-position filename="shumate/shumate-map-source.h" line="60"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="fill_tile_async">
        <callback name="fill_tile_async">
          <source-position filename="shumate/shumate-map-source.h" line="49"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="shumate/shumate-map-source.c"
                   line="666">a #ShumateMapSource</doc>
              <type name="MapSource" c:type="ShumateMapSource*"/>
            </parameter>
            <parameter name="tile" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="shumate/shumate-map-source.c"
                   line="667">a #ShumateTile</doc>
              <type name="Tile" c:type="ShumateTile*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="shumate/shumate-map-source.c"
                   line="668">a #GCancellable</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
            <parameter name="callback"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       scope="async"
                       closure="4">
              <doc xml:space="preserve"
                   filename="shumate/shumate-map-source.c"
                   line="669">a #GAsyncReadyCallback to execute upon completion</doc>
              <type name="Gio.AsyncReadyCallback"
                    c:type="GAsyncReadyCallback"/>
            </parameter>
            <parameter name="user_data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       closure="4">
              <doc xml:space="preserve"
                   filename="shumate/shumate-map-source.c"
                   line="670">closure data for @callback</doc>
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="fill_tile_finish">
        <callback name="fill_tile_finish" throws="1">
          <source-position filename="shumate/shumate-map-source.h" line="54"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source.c"
                 line="697">%TRUE if the tile was filled with valid data, otherwise %FALSE</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="shumate/shumate-map-source.c"
                   line="690">a #ShumateMapSource</doc>
              <type name="MapSource" c:type="ShumateMapSource*"/>
            </parameter>
            <parameter name="result" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="shumate/shumate-map-source.c"
                   line="691">a #GAsyncResult provided to callback</doc>
              <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="padding" readable="0" private="1">
        <array zero-terminated="0" fixed-size="16">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <class name="MapSourceRegistry"
           c:symbol-prefix="map_source_registry"
           c:type="ShumateMapSourceRegistry"
           parent="GObject.Object"
           glib:type-name="ShumateMapSourceRegistry"
           glib:get-type="shumate_map_source_registry_get_type"
           glib:type-struct="MapSourceRegistryClass">
      <doc xml:space="preserve"
           filename="shumate/shumate-map-source-registry.c"
           line="23">This object allows you to hold [class@MapSource] instances, you can access a
default set of sources with [method@MapSourceRegistry.populate_defaults].

It conveniently implements [iface@Gio.ListModel] to easily integrate with it.</doc>
      <source-position filename="shumate/shumate-map-source-registry.h"
                       line="38"/>
      <implements name="Gio.ListModel"/>
      <constructor name="new" c:identifier="shumate_map_source_registry_new">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source-registry.c"
             line="116">Create a new #ShumateMapSourceRegistry.</doc>
        <source-position filename="shumate/shumate-map-source-registry.h"
                         line="40"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="shumate/shumate-map-source-registry.c"
               line="121">a newly created #ShumateMapSourceRegistry</doc>
          <type name="MapSourceRegistry" c:type="ShumateMapSourceRegistry*"/>
        </return-value>
      </constructor>
      <constructor name="new_with_defaults"
                   c:identifier="shumate_map_source_registry_new_with_defaults">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source-registry.c"
             line="129">Create a new #ShumateMapSourceRegistry with defaults map sources.
This is identical to calling [method@MapSourceRegistry.populate_defaults]
after shumate_map_source_registry_new().</doc>
        <source-position filename="shumate/shumate-map-source-registry.h"
                         line="41"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="shumate/shumate-map-source-registry.c"
               line="136">a newly created #ShumateMapSourceRegistry</doc>
          <type name="MapSourceRegistry" c:type="ShumateMapSourceRegistry*"/>
        </return-value>
      </constructor>
      <method name="add" c:identifier="shumate_map_source_registry_add">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source-registry.c"
             line="350">Adds the #ShumateMapSource to the #ShumateMapSourceRegistry</doc>
        <source-position filename="shumate/shumate-map-source-registry.h"
                         line="45"/>
        <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"
                 filename="shumate/shumate-map-source-registry.c"
                 line="352">a #ShumateMapSourceRegistry</doc>
            <type name="MapSourceRegistry" c:type="ShumateMapSourceRegistry*"/>
          </instance-parameter>
          <parameter name="map_source" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source-registry.c"
                 line="353">a #ShumateMapSource</doc>
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_by_id"
              c:identifier="shumate_map_source_registry_get_by_id">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source-registry.c"
             line="321">Find the #ShumateMapSource with the corresponding id</doc>
        <source-position filename="shumate/shumate-map-source-registry.h"
                         line="43"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="shumate/shumate-map-source-registry.c"
               line="328">the #ShumateMapSource or %NULL if no
map source has been found</doc>
          <type name="MapSource" c:type="ShumateMapSource*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source-registry.c"
                 line="323">a #ShumateMapSourceRegistry</doc>
            <type name="MapSourceRegistry" c:type="ShumateMapSourceRegistry*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source-registry.c"
                 line="324">the id of the #ShumateMapSource</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="populate_defaults"
              c:identifier="shumate_map_source_registry_populate_defaults">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source-registry.c"
             line="148">Populates the #ShumateMapSourceRegistry with a default set of sources.</doc>
        <source-position filename="shumate/shumate-map-source-registry.h"
                         line="42"/>
        <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"
                 filename="shumate/shumate-map-source-registry.c"
                 line="150">a #ShumateMapSourceRegistry</doc>
            <type name="MapSourceRegistry" c:type="ShumateMapSourceRegistry*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="remove" c:identifier="shumate_map_source_registry_remove">
        <doc xml:space="preserve"
             filename="shumate/shumate-map-source-registry.c"
             line="376">Removes the corresponding #ShumateMapSource from the registry.
If the source doesn't exist in the registry, this function does nothing.</doc>
        <source-position filename="shumate/shumate-map-source-registry.h"
                         line="47"/>
        <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"
                 filename="shumate/shumate-map-source-registry.c"
                 line="378">a #ShumateMapSourceRegistry</doc>
            <type name="MapSourceRegistry" c:type="ShumateMapSourceRegistry*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-map-source-registry.c"
                 line="379">a #ShumateMapSource id</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
    </class>
    <record name="MapSourceRegistryClass"
            c:type="ShumateMapSourceRegistryClass"
            glib:is-gtype-struct-for="MapSourceRegistry">
      <source-position filename="shumate/shumate-map-source-registry.h"
                       line="38"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="Marker"
           c:symbol-prefix="marker"
           c:type="ShumateMarker"
           parent="Gtk.Widget"
           glib:type-name="ShumateMarker"
           glib:get-type="shumate_marker_get_type"
           glib:type-struct="MarkerClass">
      <doc xml:space="preserve"
           filename="shumate/shumate-marker.c"
           line="21">Markers represent points of interest on a map. Markers need to be
placed on a layer (a [class@MarkerLayer]). Layers have to be added to a
[class@Map] for the markers to show on the map.

A marker is nothing more than a regular [class@Gtk.Widget]. You can draw on
it what ever you want. Set the marker's position on the map using
[method@Location.set_location].

This is a base class of all markers. A typical usage of a marker is for
instance to add a [class@Gtk.Image] with a pin image and add the
[class@Gtk.GestureClick] controller to listen to click events and show
a [class@Gtk.Popover] with the description of the marker.</doc>
      <source-position filename="shumate/shumate-marker.h" line="45"/>
      <implements name="Gtk.Accessible"/>
      <implements name="Gtk.Buildable"/>
      <implements name="Gtk.ConstraintTarget"/>
      <implements name="Location"/>
      <constructor name="new" c:identifier="shumate_marker_new">
        <doc xml:space="preserve"
             filename="shumate/shumate-marker.c"
             line="301">Creates an instance of #ShumateMarker.</doc>
        <source-position filename="shumate/shumate-marker.h" line="47"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-marker.c"
               line="306">a new #ShumateMarker.</doc>
          <type name="Marker" c:type="ShumateMarker*"/>
        </return-value>
      </constructor>
      <method name="animate_in" c:identifier="shumate_marker_animate_in">
        <source-position filename="shumate/shumate-marker.h" line="59"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="marker" transfer-ownership="none">
            <type name="Marker" c:type="ShumateMarker*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="animate_in_with_delay"
              c:identifier="shumate_marker_animate_in_with_delay">
        <source-position filename="shumate/shumate-marker.h" line="60"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="marker" transfer-ownership="none">
            <type name="Marker" c:type="ShumateMarker*"/>
          </instance-parameter>
          <parameter name="delay" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="animate_out" c:identifier="shumate_marker_animate_out">
        <source-position filename="shumate/shumate-marker.h" line="62"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="marker" transfer-ownership="none">
            <type name="Marker" c:type="ShumateMarker*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="animate_out_with_delay"
              c:identifier="shumate_marker_animate_out_with_delay">
        <source-position filename="shumate/shumate-marker.h" line="63"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="marker" transfer-ownership="none">
            <type name="Marker" c:type="ShumateMarker*"/>
          </instance-parameter>
          <parameter name="delay" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_child"
              c:identifier="shumate_marker_get_child"
              glib:get-property="child">
        <doc xml:space="preserve"
             filename="shumate/shumate-marker.c"
             line="372">Retrieves the current child of @marker.</doc>
        <source-position filename="shumate/shumate-marker.h" line="66"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="shumate/shumate-marker.c"
               line="378">a #GtkWidget.</doc>
          <type name="Gtk.Widget" c:type="GtkWidget*"/>
        </return-value>
        <parameters>
          <instance-parameter name="marker" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-marker.c"
                 line="374">a #ShumateMarker</doc>
            <type name="Marker" c:type="ShumateMarker*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_draggable" c:identifier="shumate_marker_get_draggable">
        <source-position filename="shumate/shumate-marker.h" line="55"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="marker" transfer-ownership="none">
            <type name="Marker" c:type="ShumateMarker*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_selectable"
              c:identifier="shumate_marker_get_selectable"
              glib:get-property="selectable">
        <doc xml:space="preserve"
             filename="shumate/shumate-marker.c"
             line="354">Checks whether the marker is selectable.</doc>
        <source-position filename="shumate/shumate-marker.h" line="51"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-marker.c"
               line="360">the selectable or not state of the marker.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="marker" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-marker.c"
                 line="356">a #ShumateMarker</doc>
            <type name="Marker" c:type="ShumateMarker*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_selected" c:identifier="shumate_marker_is_selected">
        <doc xml:space="preserve"
             filename="shumate/shumate-marker.c"
             line="314">Checks whether the marker is selected.</doc>
        <source-position filename="shumate/shumate-marker.h" line="57"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-marker.c"
               line="320">%TRUE if the marker is selected, otherwise %FALSE</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="marker" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-marker.c"
                 line="316">a #ShumateMarker</doc>
            <type name="Marker" c:type="ShumateMarker*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_child"
              c:identifier="shumate_marker_set_child"
              glib:set-property="child">
        <doc xml:space="preserve"
             filename="shumate/shumate-marker.c"
             line="390">Sets the child widget of @marker.</doc>
        <source-position filename="shumate/shumate-marker.h" line="67"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="marker" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-marker.c"
                 line="392">a #ShumateMarker</doc>
            <type name="Marker" c:type="ShumateMarker*"/>
          </instance-parameter>
          <parameter name="child"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-marker.c"
                 line="393">a #GtkWidget</doc>
            <type name="Gtk.Widget" c:type="GtkWidget*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_draggable" c:identifier="shumate_marker_set_draggable">
        <source-position filename="shumate/shumate-marker.h" line="53"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="marker" transfer-ownership="none">
            <type name="Marker" c:type="ShumateMarker*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_selectable"
              c:identifier="shumate_marker_set_selectable"
              glib:set-property="selectable">
        <doc xml:space="preserve"
             filename="shumate/shumate-marker.c"
             line="333">Sets the marker as selectable or not.</doc>
        <source-position filename="shumate/shumate-marker.h" line="49"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="marker" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-marker.c"
                 line="335">a #ShumateMarker</doc>
            <type name="Marker" c:type="ShumateMarker*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-marker.c"
                 line="336">the selectable state</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <property name="child"
                writable="1"
                transfer-ownership="none"
                setter="set_child"
                getter="get_child">
        <doc xml:space="preserve"
             filename="shumate/shumate-marker.c"
             line="237">The child widget of the marker</doc>
        <type name="Gtk.Widget"/>
      </property>
      <property name="selectable"
                writable="1"
                transfer-ownership="none"
                setter="set_selectable"
                getter="get_selectable"
                default-value="FALSE">
        <doc xml:space="preserve"
             filename="shumate/shumate-marker.c"
             line="249">The selectable state of the marker</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <field name="parent_instance">
        <type name="Gtk.Widget" c:type="GtkWidget"/>
      </field>
    </class>
    <record name="MarkerClass"
            c:type="ShumateMarkerClass"
            glib:is-gtype-struct-for="Marker">
      <source-position filename="shumate/shumate-marker.h" line="45"/>
      <field name="parent_class">
        <type name="Gtk.WidgetClass" c:type="GtkWidgetClass"/>
      </field>
      <field name="padding" readable="0" private="1">
        <array zero-terminated="0" fixed-size="16">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <class name="MarkerLayer"
           c:symbol-prefix="marker_layer"
           c:type="ShumateMarkerLayer"
           parent="Layer"
           glib:type-name="ShumateMarkerLayer"
           glib:get-type="shumate_marker_layer_get_type"
           glib:type-struct="MarkerLayerClass">
      <doc xml:space="preserve"
           filename="shumate/shumate-marker-layer.c"
           line="21">Displays markers on the map. It is responsible for positioning markers
correctly, marker selections and group marker operations.</doc>
      <source-position filename="shumate/shumate-marker-layer.h" line="38"/>
      <implements name="Gtk.Accessible"/>
      <implements name="Gtk.Buildable"/>
      <implements name="Gtk.ConstraintTarget"/>
      <constructor name="new" c:identifier="shumate_marker_layer_new">
        <doc xml:space="preserve"
             filename="shumate/shumate-marker-layer.c"
             line="382">Creates a new instance of [class@MarkerLayer].</doc>
        <source-position filename="shumate/shumate-marker-layer.h" line="40"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-marker-layer.c"
               line="388">a new [class@MarkerLayer] ready to be used as a container for the markers.</doc>
          <type name="MarkerLayer" c:type="ShumateMarkerLayer*"/>
        </return-value>
        <parameters>
          <parameter name="viewport" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-marker-layer.c"
                 line="384">the @ShumateViewport</doc>
            <type name="Viewport" c:type="ShumateViewport*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_full"
                   c:identifier="shumate_marker_layer_new_full">
        <doc xml:space="preserve"
             filename="shumate/shumate-marker-layer.c"
             line="399">Creates a new instance of [class@MarkerLayer] with the specified selection mode.</doc>
        <source-position filename="shumate/shumate-marker-layer.h" line="41"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-marker-layer.c"
               line="406">a new [class@MarkerLayer] ready to be used as a container for the markers.</doc>
          <type name="MarkerLayer" c:type="ShumateMarkerLayer*"/>
        </return-value>
        <parameters>
          <parameter name="viewport" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-marker-layer.c"
                 line="401">the @ShumateViewport</doc>
            <type name="Viewport" c:type="ShumateViewport*"/>
          </parameter>
          <parameter name="mode" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-marker-layer.c"
                 line="402">Selection mode</doc>
            <type name="Gtk.SelectionMode" c:type="GtkSelectionMode"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="add_marker" c:identifier="shumate_marker_layer_add_marker">
        <doc xml:space="preserve"
             filename="shumate/shumate-marker-layer.c"
             line="452">Adds the marker to the layer.</doc>
        <source-position filename="shumate/shumate-marker-layer.h" line="44"/>
        <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"
                 filename="shumate/shumate-marker-layer.c"
                 line="454">a [class@MarkerLayer]</doc>
            <type name="MarkerLayer" c:type="ShumateMarkerLayer*"/>
          </instance-parameter>
          <parameter name="marker" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-marker-layer.c"
                 line="455">a [class@Marker]</doc>
            <type name="Marker" c:type="ShumateMarker*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_markers"
              c:identifier="shumate_marker_layer_get_markers">
        <doc xml:space="preserve"
             filename="shumate/shumate-marker-layer.c"
             line="510">Gets a copy of the list of all markers inserted into the layer. You should
free the list but not its contents.</doc>
        <source-position filename="shumate/shumate-marker-layer.h" line="49"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="shumate/shumate-marker-layer.c"
               line="517">the list</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Marker"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-marker-layer.c"
                 line="512">a [class@MarkerLayer]</doc>
            <type name="MarkerLayer" c:type="ShumateMarkerLayer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_selected"
              c:identifier="shumate_marker_layer_get_selected">
        <doc xml:space="preserve"
             filename="shumate/shumate-marker-layer.c"
             line="539">Gets a list of selected markers in the layer.</doc>
        <source-position filename="shumate/shumate-marker-layer.h" line="50"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="shumate/shumate-marker-layer.c"
               line="545">the list</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Marker"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-marker-layer.c"
                 line="541">a [class@MarkerLayer]</doc>
            <type name="MarkerLayer" c:type="ShumateMarkerLayer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_selection_mode"
              c:identifier="shumate_marker_layer_get_selection_mode"
              glib:get-property="selection-mode">
        <doc xml:space="preserve"
             filename="shumate/shumate-marker-layer.c"
             line="741">Gets the selection mode of the layer.</doc>
        <source-position filename="shumate/shumate-marker-layer.h" line="59"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-marker-layer.c"
               line="747">the selection mode of the layer.</doc>
          <type name="Gtk.SelectionMode" c:type="GtkSelectionMode"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-marker-layer.c"
                 line="743">a [class@MarkerLayer]</doc>
            <type name="MarkerLayer" c:type="ShumateMarkerLayer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="remove_all" c:identifier="shumate_marker_layer_remove_all">
        <doc xml:space="preserve"
             filename="shumate/shumate-marker-layer.c"
             line="482">Removes all markers from the layer.</doc>
        <source-position filename="shumate/shumate-marker-layer.h" line="48"/>
        <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"
                 filename="shumate/shumate-marker-layer.c"
                 line="484">a [class@MarkerLayer]</doc>
            <type name="MarkerLayer" c:type="ShumateMarkerLayer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="remove_marker"
              c:identifier="shumate_marker_layer_remove_marker">
        <doc xml:space="preserve"
             filename="shumate/shumate-marker-layer.c"
             line="641">Removes the marker from the layer.</doc>
        <source-position filename="shumate/shumate-marker-layer.h" line="46"/>
        <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"
                 filename="shumate/shumate-marker-layer.c"
                 line="643">a [class@MarkerLayer]</doc>
            <type name="MarkerLayer" c:type="ShumateMarkerLayer*"/>
          </instance-parameter>
          <parameter name="marker" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-marker-layer.c"
                 line="644">a [class@Marker]</doc>
            <type name="Marker" c:type="ShumateMarker*"/>
          </parameter>
        </parameters>
      </method>
      <method name="select_all_markers"
              c:identifier="shumate_marker_layer_select_all_markers">
        <doc xml:space="preserve"
             filename="shumate/shumate-marker-layer.c"
             line="692">Selects all selectable markers in the layer.</doc>
        <source-position filename="shumate/shumate-marker-layer.h" line="54"/>
        <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"
                 filename="shumate/shumate-marker-layer.c"
                 line="694">a [class@MarkerLayer]</doc>
            <type name="MarkerLayer" c:type="ShumateMarkerLayer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="select_marker"
              c:identifier="shumate_marker_layer_select_marker">
        <doc xml:space="preserve"
             filename="shumate/shumate-marker-layer.c"
             line="561">Selects a marker in this layer.

If [class@MarkerLayer]:selection-mode is %GTK_SELECTION_SINGLE or
%GTK_SELECTION_BROWSE, all other markers will be unselected. If the mode is
%GTK_SELECTION_NONE or @marker is not selectable, nothing will happen.</doc>
        <source-position filename="shumate/shumate-marker-layer.h" line="52"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-marker-layer.c"
               line="572">%TRUE if the marker is now selected, otherwise %FALSE</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-marker-layer.c"
                 line="563">a [class@MarkerLayer]</doc>
            <type name="MarkerLayer" c:type="ShumateMarkerLayer*"/>
          </instance-parameter>
          <parameter name="marker" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-marker-layer.c"
                 line="564">a [class@Marker] that is a child of @self</doc>
            <type name="Marker" c:type="ShumateMarker*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_selection_mode"
              c:identifier="shumate_marker_layer_set_selection_mode"
              glib:set-property="selection-mode">
        <doc xml:space="preserve"
             filename="shumate/shumate-marker-layer.c"
             line="713">Sets the selection mode of the layer.

NOTE: changing selection mode to %GTK_SELECTION_NONE, %GTK_SELECTION_SINGLE
or %GTK_SELECTION_BROWSE will clear all previously selected markers.</doc>
        <source-position filename="shumate/shumate-marker-layer.h" line="57"/>
        <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"
                 filename="shumate/shumate-marker-layer.c"
                 line="715">a [class@MarkerLayer]</doc>
            <type name="MarkerLayer" c:type="ShumateMarkerLayer*"/>
          </instance-parameter>
          <parameter name="mode" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-marker-layer.c"
                 line="716">a [enum@Gtk.SelectionMode] value</doc>
            <type name="Gtk.SelectionMode" c:type="GtkSelectionMode"/>
          </parameter>
        </parameters>
      </method>
      <method name="unselect_all_markers"
              c:identifier="shumate_marker_layer_unselect_all_markers">
        <doc xml:space="preserve"
             filename="shumate/shumate-marker-layer.c"
             line="671">Unselects all markers in the layer.</doc>
        <source-position filename="shumate/shumate-marker-layer.h" line="55"/>
        <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"
                 filename="shumate/shumate-marker-layer.c"
                 line="673">a [class@MarkerLayer]</doc>
            <type name="MarkerLayer" c:type="ShumateMarkerLayer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unselect_marker"
              c:identifier="shumate_marker_layer_unselect_marker">
        <doc xml:space="preserve"
             filename="shumate/shumate-marker-layer.c"
             line="611">Unselects a marker in this layer.

This works even if [class@MarkerLayer]:selection-mode is
%GTK_SELECTION_BROWSE. Browse mode only prevents user interaction, not the
program, from unselecting a marker.</doc>
        <source-position filename="shumate/shumate-marker-layer.h" line="53"/>
        <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"
                 filename="shumate/shumate-marker-layer.c"
                 line="613">a [class@MarkerLayer]</doc>
            <type name="MarkerLayer" c:type="ShumateMarkerLayer*"/>
          </instance-parameter>
          <parameter name="marker" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-marker-layer.c"
                 line="614">a [class@Marker] that is a child of @self</doc>
            <type name="Marker" c:type="ShumateMarker*"/>
          </parameter>
        </parameters>
      </method>
      <property name="selection-mode"
                writable="1"
                transfer-ownership="none"
                setter="set_selection_mode"
                getter="get_selection_mode"
                default-value="GTK_SELECTION_NONE">
        <doc xml:space="preserve"
             filename="shumate/shumate-marker-layer.c"
             line="323">Determines the type of selection that will be performed.</doc>
        <type name="Gtk.SelectionMode"/>
      </property>
      <glib:signal name="marker-selected" when="last">
        <doc xml:space="preserve"
             filename="shumate/shumate-marker-layer.c"
             line="338">Emitted when a marker in the layer is selected.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="marker" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-marker-layer.c"
                 line="341">The marker that was selected</doc>
            <type name="Marker"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="marker-unselected" when="last">
        <doc xml:space="preserve"
             filename="shumate/shumate-marker-layer.c"
             line="353">Emitted when a marker in the layer is unselected.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="marker" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-marker-layer.c"
                 line="356">The marker that was unselected</doc>
            <type name="Marker"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="MarkerLayerClass"
            c:type="ShumateMarkerLayerClass"
            glib:is-gtype-struct-for="MarkerLayer">
      <source-position filename="shumate/shumate-marker-layer.h" line="38"/>
      <field name="parent_class">
        <type name="LayerClass" c:type="ShumateLayerClass"/>
      </field>
    </record>
    <class name="PathLayer"
           c:symbol-prefix="path_layer"
           c:type="ShumatePathLayer"
           parent="Layer"
           glib:type-name="ShumatePathLayer"
           glib:get-type="shumate_path_layer_get_type"
           glib:type-struct="PathLayerClass">
      <doc xml:space="preserve"
           filename="shumate/shumate-path-layer.c"
           line="21">A layer displaying line path between inserted [iface@Location] objects

This layer shows a connection between inserted objects implementing the
[iface@Location] interface. This means that both [class@Marker]
objects and [class@Coordinate] objects can be inserted into the layer.
Of course, custom objects implementing the [iface@Location] interface
can be used as well.</doc>
      <source-position filename="shumate/shumate-path-layer.h" line="37"/>
      <implements name="Gtk.Accessible"/>
      <implements name="Gtk.Buildable"/>
      <implements name="Gtk.ConstraintTarget"/>
      <constructor name="new" c:identifier="shumate_path_layer_new">
        <doc xml:space="preserve"
             filename="shumate/shumate-path-layer.c"
             line="442">Creates a new instance of [class@PathLayer].</doc>
        <source-position filename="shumate/shumate-path-layer.h" line="39"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-path-layer.c"
               line="448">a new instance of [class@PathLayer].</doc>
          <type name="PathLayer" c:type="ShumatePathLayer*"/>
        </return-value>
        <parameters>
          <parameter name="viewport" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-path-layer.c"
                 line="444">the [class@Viewport]</doc>
            <type name="Viewport" c:type="ShumateViewport*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="add_node" c:identifier="shumate_path_layer_add_node">
        <doc xml:space="preserve"
             filename="shumate/shumate-path-layer.c"
             line="483">Adds a [iface@Location] object to the layer.
The node is prepended to the list.</doc>
        <source-position filename="shumate/shumate-path-layer.h" line="41"/>
        <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"
                 filename="shumate/shumate-path-layer.c"
                 line="485">a [class@PathLayer]</doc>
            <type name="PathLayer" c:type="ShumatePathLayer*"/>
          </instance-parameter>
          <parameter name="location" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-path-layer.c"
                 line="486">a [iface@Location]</doc>
            <type name="Location" c:type="ShumateLocation*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_closed"
              c:identifier="shumate_path_layer_get_closed"
              glib:get-property="closed">
        <doc xml:space="preserve"
             filename="shumate/shumate-path-layer.c"
             line="885">Gets information whether the path is closed.</doc>
        <source-position filename="shumate/shumate-path-layer.h" line="79"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-path-layer.c"
               line="891">%TRUE when the path is closed, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-path-layer.c"
                 line="887">a [class@PathLayer]</doc>
            <type name="PathLayer" c:type="ShumatePathLayer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_dash" c:identifier="shumate_path_layer_get_dash">
        <doc xml:space="preserve"
             filename="shumate/shumate-path-layer.c"
             line="934">Returns the list of dash segment lengths.</doc>
        <source-position filename="shumate/shumate-path-layer.h" line="83"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="shumate/shumate-path-layer.c"
               line="940">the list</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="guint"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-path-layer.c"
                 line="936">a [class@PathLayer]</doc>
            <type name="PathLayer" c:type="ShumatePathLayer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_fill"
              c:identifier="shumate_path_layer_get_fill"
              glib:get-property="fill">
        <doc xml:space="preserve"
             filename="shumate/shumate-path-layer.c"
             line="776">Checks whether the path is filled.</doc>
        <source-position filename="shumate/shumate-path-layer.h" line="63"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-path-layer.c"
               line="782">%TRUE if the path is filled, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-path-layer.c"
                 line="778">a [class@PathLayer]</doc>
            <type name="PathLayer" c:type="ShumatePathLayer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_fill_color"
              c:identifier="shumate_path_layer_get_fill_color"
              glib:get-property="fill-color">
        <doc xml:space="preserve"
             filename="shumate/shumate-path-layer.c"
             line="617">Gets the path's fill color.</doc>
        <source-position filename="shumate/shumate-path-layer.h" line="51"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="shumate/shumate-path-layer.c"
               line="623">the path's fill color.</doc>
          <type name="Gdk.RGBA" c:type="GdkRGBA*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-path-layer.c"
                 line="619">a [class@PathLayer]</doc>
            <type name="PathLayer" c:type="ShumatePathLayer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_nodes" c:identifier="shumate_path_layer_get_nodes">
        <doc xml:space="preserve"
             filename="shumate/shumate-path-layer.c"
             line="530">Gets a copy of the list of all [iface@Location] objects inserted into the layer. You should
free the list but not its contents.</doc>
        <source-position filename="shumate/shumate-path-layer.h" line="49"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="shumate/shumate-path-layer.c"
               line="537">the list</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Location"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-path-layer.c"
                 line="532">a [class@PathLayer]</doc>
            <type name="PathLayer" c:type="ShumatePathLayer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_outline_color"
              c:identifier="shumate_path_layer_get_outline_color"
              glib:get-property="outline-color">
        <doc xml:space="preserve"
             filename="shumate/shumate-path-layer.c"
             line="703">Gets the path's outline color.</doc>
        <source-position filename="shumate/shumate-path-layer.h" line="59"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="shumate/shumate-path-layer.c"
               line="709">the path's outline color.</doc>
          <type name="Gdk.RGBA" c:type="GdkRGBA*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-path-layer.c"
                 line="705">a [class@PathLayer]</doc>
            <type name="PathLayer" c:type="ShumatePathLayer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_outline_width"
              c:identifier="shumate_path_layer_get_outline_width"
              glib:get-property="outline-width">
        <doc xml:space="preserve"
             filename="shumate/shumate-path-layer.c"
             line="849">Gets the width of the outline.</doc>
        <source-position filename="shumate/shumate-path-layer.h" line="75"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-path-layer.c"
               line="855">the width of the outline</doc>
          <type name="gdouble" c:type="double"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-path-layer.c"
                 line="851">a [class@PathLayer]</doc>
            <type name="PathLayer" c:type="ShumatePathLayer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_stroke"
              c:identifier="shumate_path_layer_get_stroke"
              glib:get-property="stroke">
        <doc xml:space="preserve"
             filename="shumate/shumate-path-layer.c"
             line="739">Checks whether the path is stroked.</doc>
        <source-position filename="shumate/shumate-path-layer.h" line="67"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-path-layer.c"
               line="745">%TRUE if the path is stroked, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-path-layer.c"
                 line="741">a [class@PathLayer]</doc>
            <type name="PathLayer" c:type="ShumatePathLayer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_stroke_color"
              c:identifier="shumate_path_layer_get_stroke_color"
              glib:get-property="stroke-color">
        <doc xml:space="preserve"
             filename="shumate/shumate-path-layer.c"
             line="661">Gets the path's stroke color.</doc>
        <source-position filename="shumate/shumate-path-layer.h" line="55"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="shumate/shumate-path-layer.c"
               line="667">the path's stroke color.</doc>
          <type name="Gdk.RGBA" c:type="GdkRGBA*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-path-layer.c"
                 line="663">a [class@PathLayer]</doc>
            <type name="PathLayer" c:type="ShumatePathLayer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_stroke_width"
              c:identifier="shumate_path_layer_get_stroke_width"
              glib:get-property="stroke-width">
        <doc xml:space="preserve"
             filename="shumate/shumate-path-layer.c"
             line="813">Gets the width of the stroke.</doc>
        <source-position filename="shumate/shumate-path-layer.h" line="71"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-path-layer.c"
               line="819">the width of the stroke</doc>
          <type name="gdouble" c:type="double"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-path-layer.c"
                 line="815">a [class@PathLayer]</doc>
            <type name="PathLayer" c:type="ShumatePathLayer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="insert_node" c:identifier="shumate_path_layer_insert_node">
        <doc xml:space="preserve"
             filename="shumate/shumate-path-layer.c"
             line="571">Inserts a [iface@Location] object to the specified position.</doc>
        <source-position filename="shumate/shumate-path-layer.h" line="46"/>
        <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"
                 filename="shumate/shumate-path-layer.c"
                 line="573">a [class@PathLayer]</doc>
            <type name="PathLayer" c:type="ShumatePathLayer*"/>
          </instance-parameter>
          <parameter name="location" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-path-layer.c"
                 line="574">a [iface@Location]</doc>
            <type name="Location" c:type="ShumateLocation*"/>
          </parameter>
          <parameter name="position" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-path-layer.c"
                 line="575">position in the list where the [iface@Location] object should be inserted</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_all" c:identifier="shumate_path_layer_remove_all">
        <doc xml:space="preserve"
             filename="shumate/shumate-path-layer.c"
             line="502">Removes all [iface@Location] objects from the layer.</doc>
        <source-position filename="shumate/shumate-path-layer.h" line="45"/>
        <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"
                 filename="shumate/shumate-path-layer.c"
                 line="504">a [class@PathLayer]</doc>
            <type name="PathLayer" c:type="ShumatePathLayer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="remove_node" c:identifier="shumate_path_layer_remove_node">
        <doc xml:space="preserve"
             filename="shumate/shumate-path-layer.c"
             line="550">Removes the [iface@Location] object from the layer.</doc>
        <source-position filename="shumate/shumate-path-layer.h" line="43"/>
        <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"
                 filename="shumate/shumate-path-layer.c"
                 line="552">a [class@PathLayer]</doc>
            <type name="PathLayer" c:type="ShumatePathLayer*"/>
          </instance-parameter>
          <parameter name="location" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-path-layer.c"
                 line="553">a [iface@Location]</doc>
            <type name="Location" c:type="ShumateLocation*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_closed"
              c:identifier="shumate_path_layer_set_closed"
              glib:set-property="closed">
        <doc xml:space="preserve"
             filename="shumate/shumate-path-layer.c"
             line="865">Makes the path closed.</doc>
        <source-position filename="shumate/shumate-path-layer.h" line="80"/>
        <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"
                 filename="shumate/shumate-path-layer.c"
                 line="867">a [class@PathLayer]</doc>
            <type name="PathLayer" c:type="ShumatePathLayer*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-path-layer.c"
                 line="868">%TRUE to make the path closed</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_dash" c:identifier="shumate_path_layer_set_dash">
        <doc xml:space="preserve"
             filename="shumate/shumate-path-layer.c"
             line="902">Sets dashed line pattern in a way similar to cairo_set_dash() of cairo. This
method supports only integer values for segment lengths. The values have to be
passed inside the data pointer of the list (using the %GUINT_TO_POINTER conversion)

Pass %NULL to use solid line.</doc>
        <source-position filename="shumate/shumate-path-layer.h" line="84"/>
        <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"
                 filename="shumate/shumate-path-layer.c"
                 line="904">a [class@PathLayer]</doc>
            <type name="PathLayer" c:type="ShumatePathLayer*"/>
          </instance-parameter>
          <parameter name="dash_pattern" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-path-layer.c"
                 line="905">list of integer values representing lengths
    of dashes/spaces (see cairo documentation of cairo_set_dash())</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="guint"/>
            </type>
          </parameter>
        </parameters>
      </method>
      <method name="set_fill"
              c:identifier="shumate_path_layer_set_fill"
              glib:set-property="fill">
        <doc xml:space="preserve"
             filename="shumate/shumate-path-layer.c"
             line="756">Sets the path to be filled</doc>
        <source-position filename="shumate/shumate-path-layer.h" line="64"/>
        <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"
                 filename="shumate/shumate-path-layer.c"
                 line="758">a [class@PathLayer]</doc>
            <type name="PathLayer" c:type="ShumatePathLayer*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-path-layer.c"
                 line="759">if the path is filled</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_fill_color"
              c:identifier="shumate_path_layer_set_fill_color"
              glib:set-property="fill-color">
        <doc xml:space="preserve"
             filename="shumate/shumate-path-layer.c"
             line="590">Set the path's fill color.</doc>
        <source-position filename="shumate/shumate-path-layer.h" line="52"/>
        <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"
                 filename="shumate/shumate-path-layer.c"
                 line="592">a [class@PathLayer]</doc>
            <type name="PathLayer" c:type="ShumatePathLayer*"/>
          </instance-parameter>
          <parameter name="color"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-path-layer.c"
                 line="593">The path's fill color or %NULL to reset to the
        default color. The color parameter is copied.</doc>
            <type name="Gdk.RGBA" c:type="const GdkRGBA*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_outline_color"
              c:identifier="shumate_path_layer_set_outline_color"
              glib:set-property="outline-color">
        <doc xml:space="preserve"
             filename="shumate/shumate-path-layer.c"
             line="677">Set the path's outline color.</doc>
        <source-position filename="shumate/shumate-path-layer.h" line="60"/>
        <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"
                 filename="shumate/shumate-path-layer.c"
                 line="679">a [class@PathLayer]</doc>
            <type name="PathLayer" c:type="ShumatePathLayer*"/>
          </instance-parameter>
          <parameter name="color"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-path-layer.c"
                 line="680">The path's outline color or %NULL to reset to the
        default color. The color parameter is copied.</doc>
            <type name="Gdk.RGBA" c:type="const GdkRGBA*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_outline_width"
              c:identifier="shumate_path_layer_set_outline_width"
              glib:set-property="outline-width">
        <doc xml:space="preserve"
             filename="shumate/shumate-path-layer.c"
             line="829">Sets the width of the outline</doc>
        <source-position filename="shumate/shumate-path-layer.h" line="76"/>
        <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"
                 filename="shumate/shumate-path-layer.c"
                 line="831">a [class@PathLayer]</doc>
            <type name="PathLayer" c:type="ShumatePathLayer*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-path-layer.c"
                 line="832">the width of the outline (in pixels)</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_stroke"
              c:identifier="shumate_path_layer_set_stroke"
              glib:set-property="stroke">
        <doc xml:space="preserve"
             filename="shumate/shumate-path-layer.c"
             line="719">Sets the path to be stroked</doc>
        <source-position filename="shumate/shumate-path-layer.h" line="68"/>
        <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"
                 filename="shumate/shumate-path-layer.c"
                 line="721">a [class@PathLayer]</doc>
            <type name="PathLayer" c:type="ShumatePathLayer*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-path-layer.c"
                 line="722">if the path is stroked</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_stroke_color"
              c:identifier="shumate_path_layer_set_stroke_color"
              glib:set-property="stroke-color">
        <doc xml:space="preserve"
             filename="shumate/shumate-path-layer.c"
             line="634">Set the path's stroke color.</doc>
        <source-position filename="shumate/shumate-path-layer.h" line="56"/>
        <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"
                 filename="shumate/shumate-path-layer.c"
                 line="636">a [class@PathLayer]</doc>
            <type name="PathLayer" c:type="ShumatePathLayer*"/>
          </instance-parameter>
          <parameter name="color"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-path-layer.c"
                 line="637">The path's stroke color or %NULL to reset to the
        default color. The color parameter is copied.</doc>
            <type name="Gdk.RGBA" c:type="const GdkRGBA*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_stroke_width"
              c:identifier="shumate_path_layer_set_stroke_width"
              glib:set-property="stroke-width">
        <doc xml:space="preserve"
             filename="shumate/shumate-path-layer.c"
             line="793">Sets the width of the stroke</doc>
        <source-position filename="shumate/shumate-path-layer.h" line="72"/>
        <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"
                 filename="shumate/shumate-path-layer.c"
                 line="795">a [class@PathLayer]</doc>
            <type name="PathLayer" c:type="ShumatePathLayer*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-path-layer.c"
                 line="796">the width of the stroke (in pixels)</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </method>
      <property name="closed"
                writable="1"
                transfer-ownership="none"
                setter="set_closed"
                getter="get_closed"
                default-value="FALSE">
        <doc xml:space="preserve"
             filename="shumate/shumate-path-layer.c"
             line="322">The shape is a closed path</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="fill"
                writable="1"
                transfer-ownership="none"
                setter="set_fill"
                getter="get_fill"
                default-value="FALSE">
        <doc xml:space="preserve"
             filename="shumate/shumate-path-layer.c"
             line="334">The shape should be filled</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="fill-color"
                writable="1"
                transfer-ownership="none"
                setter="set_fill_color"
                getter="get_fill_color">
        <doc xml:space="preserve"
             filename="shumate/shumate-path-layer.c"
             line="370">The path's fill color</doc>
        <type name="Gdk.RGBA"/>
      </property>
      <property name="outline-color"
                writable="1"
                transfer-ownership="none"
                setter="set_outline_color"
                getter="get_outline_color">
        <doc xml:space="preserve"
             filename="shumate/shumate-path-layer.c"
             line="396">The path's outline color</doc>
        <type name="Gdk.RGBA"/>
      </property>
      <property name="outline-width"
                writable="1"
                transfer-ownership="none"
                setter="set_outline_width"
                getter="get_outline_width"
                default-value="0.000000">
        <doc xml:space="preserve"
             filename="shumate/shumate-path-layer.c"
             line="408">The path's outline width (in pixels)</doc>
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="stroke"
                writable="1"
                transfer-ownership="none"
                setter="set_stroke"
                getter="get_stroke"
                default-value="TRUE">
        <doc xml:space="preserve"
             filename="shumate/shumate-path-layer.c"
             line="346">The shape should be stroked</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="stroke-color"
                writable="1"
                transfer-ownership="none"
                setter="set_stroke_color"
                getter="get_stroke_color">
        <doc xml:space="preserve"
             filename="shumate/shumate-path-layer.c"
             line="358">The path's stroke color</doc>
        <type name="Gdk.RGBA"/>
      </property>
      <property name="stroke-width"
                writable="1"
                transfer-ownership="none"
                setter="set_stroke_width"
                getter="get_stroke_width"
                default-value="2.000000">
        <doc xml:space="preserve"
             filename="shumate/shumate-path-layer.c"
             line="382">The path's stroke width (in pixels)</doc>
        <type name="gdouble" c:type="gdouble"/>
      </property>
    </class>
    <record name="PathLayerClass"
            c:type="ShumatePathLayerClass"
            glib:is-gtype-struct-for="PathLayer">
      <source-position filename="shumate/shumate-path-layer.h" line="37"/>
      <field name="parent_class">
        <type name="LayerClass" c:type="ShumateLayerClass"/>
      </field>
    </record>
    <class name="Point"
           c:symbol-prefix="point"
           c:type="ShumatePoint"
           parent="Marker"
           glib:type-name="ShumatePoint"
           glib:get-type="shumate_point_get_type"
           glib:type-struct="PointClass">
      <doc xml:space="preserve"
           filename="shumate/shumate-point.c"
           line="20">A simple variant of [class@Marker] showing the location of the point as a
circle on the map.</doc>
      <source-position filename="shumate/shumate-point.h" line="35"/>
      <implements name="Gtk.Accessible"/>
      <implements name="Gtk.Buildable"/>
      <implements name="Gtk.ConstraintTarget"/>
      <implements name="Location"/>
      <constructor name="new" c:identifier="shumate_point_new">
        <doc xml:space="preserve"
             filename="shumate/shumate-point.c"
             line="64">Creates an instance of #ShumatePoint.</doc>
        <source-position filename="shumate/shumate-point.h" line="37"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-point.c"
               line="69">a new #ShumatePoint.</doc>
          <type name="Point" c:type="ShumateMarker*"/>
        </return-value>
      </constructor>
    </class>
    <record name="PointClass"
            c:type="ShumatePointClass"
            glib:is-gtype-struct-for="Point">
      <source-position filename="shumate/shumate-point.h" line="35"/>
      <field name="parent_class">
        <type name="MarkerClass" c:type="ShumateMarkerClass"/>
      </field>
    </record>
    <class name="RasterRenderer"
           c:symbol-prefix="raster_renderer"
           c:type="ShumateRasterRenderer"
           parent="MapSource"
           glib:type-name="ShumateRasterRenderer"
           glib:get-type="shumate_raster_renderer_get_type"
           glib:type-struct="RasterRendererClass">
      <source-position filename="shumate/shumate-raster-renderer.h" line="28"/>
      <constructor name="new" c:identifier="shumate_raster_renderer_new">
        <doc xml:space="preserve"
             filename="shumate/shumate-raster-renderer.c"
             line="42">Creates a new [class@RasterRenderer] that uses the given data source.</doc>
        <source-position filename="shumate/shumate-raster-renderer.h"
                         line="31"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="shumate/shumate-raster-renderer.c"
               line="48">a newly constructed [class@RasterRenderer]</doc>
          <type name="RasterRenderer" c:type="ShumateRasterRenderer*"/>
        </return-value>
        <parameters>
          <parameter name="data_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-raster-renderer.c"
                 line="44">a [class@DataSource] to provide tile image data</doc>
            <type name="DataSource" c:type="ShumateDataSource*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_from_url"
                   c:identifier="shumate_raster_renderer_new_from_url">
        <doc xml:space="preserve"
             filename="shumate/shumate-raster-renderer.c"
             line="59">Creates a new [class@RasterRenderer] that fetches tiles from the given URL
using a [class@TileDownloader] data source.

Equivalent to:

```c
g_autoptr(ShumateTileDownloader) source = shumate_tile_downloader_new (url_template);
ShumateRasterRenderer *renderer = shumate_raster_renderer_new (source);
```</doc>
        <source-position filename="shumate/shumate-raster-renderer.h"
                         line="32"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="shumate/shumate-raster-renderer.c"
               line="73">a newly constructed [class@RasterRenderer]</doc>
          <type name="RasterRenderer" c:type="ShumateRasterRenderer*"/>
        </return-value>
        <parameters>
          <parameter name="url_template" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-raster-renderer.c"
                 line="61">a URL template to fetch tiles from</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_full"
                   c:identifier="shumate_raster_renderer_new_full">
        <doc xml:space="preserve"
             filename="shumate/shumate-raster-renderer.c"
             line="87">Creates a new [class@RasterRenderer] with the given details and a data
source.</doc>
        <source-position filename="shumate/shumate-raster-renderer.h"
                         line="34"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="shumate/shumate-raster-renderer.c"
               line="102">a newly constructed [class@RasterRenderer]</doc>
          <type name="RasterRenderer" c:type="ShumateRasterRenderer*"/>
        </return-value>
        <parameters>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-raster-renderer.c"
                 line="89">the map source's id</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-raster-renderer.c"
                 line="90">the map source's name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="license" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-raster-renderer.c"
                 line="91">the map source's license</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="license_uri" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-raster-renderer.c"
                 line="92">the map source's license URI</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="min_zoom" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-raster-renderer.c"
                 line="93">the map source's minimum zoom level</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="max_zoom" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-raster-renderer.c"
                 line="94">the map source's maximum zoom level</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="tile_size" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-raster-renderer.c"
                 line="95">the map source's tile size (in pixels)</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="projection" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-raster-renderer.c"
                 line="96">the map source's projection</doc>
            <type name="MapProjection" c:type="ShumateMapProjection"/>
          </parameter>
          <parameter name="data_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-raster-renderer.c"
                 line="97">a [class@DataSource] to provide tile image data</doc>
            <type name="DataSource" c:type="ShumateDataSource*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_full_from_url"
                   c:identifier="shumate_raster_renderer_new_full_from_url">
        <doc xml:space="preserve"
             filename="shumate/shumate-raster-renderer.c"
             line="131">Creates a new [class@RasterRenderer] with the given details and a data
source.</doc>
        <source-position filename="shumate/shumate-raster-renderer.h"
                         line="43"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="shumate/shumate-raster-renderer.c"
               line="146">a newly constructed [class@RasterRenderer]</doc>
          <type name="RasterRenderer" c:type="ShumateRasterRenderer*"/>
        </return-value>
        <parameters>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-raster-renderer.c"
                 line="133">the map source's id</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-raster-renderer.c"
                 line="134">the map source's name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="license" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-raster-renderer.c"
                 line="135">the map source's license</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="license_uri" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-raster-renderer.c"
                 line="136">the map source's license URI</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="min_zoom" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-raster-renderer.c"
                 line="137">the map source's minimum zoom level</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="max_zoom" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-raster-renderer.c"
                 line="138">the map source's maximum zoom level</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="tile_size" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-raster-renderer.c"
                 line="139">the map source's tile size (in pixels)</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="projection" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-raster-renderer.c"
                 line="140">the map source's projection</doc>
            <type name="MapProjection" c:type="ShumateMapProjection"/>
          </parameter>
          <parameter name="url_template" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-raster-renderer.c"
                 line="141">a URL template to fetch tiles from</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <property name="data-source"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve"
             filename="shumate/shumate-raster-renderer.c"
             line="247">The data source that provides image tiles to display. In most cases,
a [class@TileDownloader] is sufficient.</doc>
        <type name="DataSource"/>
      </property>
    </class>
    <record name="RasterRendererClass"
            c:type="ShumateRasterRendererClass"
            glib:is-gtype-struct-for="RasterRenderer">
      <source-position filename="shumate/shumate-raster-renderer.h" line="28"/>
      <field name="parent_class">
        <type name="MapSourceClass" c:type="ShumateMapSourceClass"/>
      </field>
    </record>
    <class name="Scale"
           c:symbol-prefix="scale"
           c:type="ShumateScale"
           parent="Gtk.Widget"
           glib:type-name="ShumateScale"
           glib:get-type="shumate_scale_get_type"
           glib:type-struct="ScaleClass">
      <doc xml:space="preserve"
           filename="shumate/shumate-scale.c"
           line="22">A widget displaying a scale.

# CSS nodes

```
map-scale
├── label[.metric][.imperial]
```

`ShumateScale` uses a single CSS node with name map-scale, it has up to two
childs different labels.</doc>
      <source-position filename="shumate/shumate-scale.h" line="37"/>
      <implements name="Gtk.Accessible"/>
      <implements name="Gtk.Buildable"/>
      <implements name="Gtk.ConstraintTarget"/>
      <constructor name="new" c:identifier="shumate_scale_new">
        <doc xml:space="preserve"
             filename="shumate/shumate-scale.c"
             line="388">Creates an instance of #ShumateScale.</doc>
        <source-position filename="shumate/shumate-scale.h" line="54"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-scale.c"
               line="394">a new #ShumateScale.</doc>
          <type name="Scale" c:type="ShumateScale*"/>
        </return-value>
        <parameters>
          <parameter name="viewport"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-scale.c"
                 line="390">a #ShumateViewport</doc>
            <type name="Viewport" c:type="ShumateViewport*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_max_width"
              c:identifier="shumate_scale_get_max_width"
              glib:get-property="max-width">
        <doc xml:space="preserve"
             filename="shumate/shumate-scale.c"
             line="483">Gets the maximum scale width.</doc>
        <source-position filename="shumate/shumate-scale.h" line="56"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-scale.c"
               line="489">The maximum scale width in pixels.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="scale" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-scale.c"
                 line="485">a #ShumateScale</doc>
            <type name="Scale" c:type="ShumateScale*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_unit"
              c:identifier="shumate_scale_get_unit"
              glib:get-property="unit">
        <doc xml:space="preserve"
             filename="shumate/shumate-scale.c"
             line="500">Gets the unit used by the scale.</doc>
        <source-position filename="shumate/shumate-scale.h" line="60"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-scale.c"
               line="506">The unit used by the scale</doc>
          <type name="Unit" c:type="ShumateUnit"/>
        </return-value>
        <parameters>
          <instance-parameter name="scale" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-scale.c"
                 line="502">a #ShumateScale</doc>
            <type name="Scale" c:type="ShumateScale*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_viewport"
              c:identifier="shumate_scale_get_viewport"
              glib:get-property="viewport">
        <doc xml:space="preserve"
             filename="shumate/shumate-scale.c"
             line="516">Gets the viewport used by the scale.</doc>
        <source-position filename="shumate/shumate-scale.h" line="64"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="shumate/shumate-scale.c"
               line="522">The #ShumateViewport used by the scale</doc>
          <type name="Viewport" c:type="ShumateViewport*"/>
        </return-value>
        <parameters>
          <instance-parameter name="scale" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-scale.c"
                 line="518">a #ShumateScale</doc>
            <type name="Scale" c:type="ShumateScale*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_max_width"
              c:identifier="shumate_scale_set_max_width"
              glib:set-property="max-width">
        <doc xml:space="preserve"
             filename="shumate/shumate-scale.c"
             line="405">Sets the maximum width of the scale on the screen in pixels</doc>
        <source-position filename="shumate/shumate-scale.h" line="57"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="scale" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-scale.c"
                 line="407">a #ShumateScale</doc>
            <type name="Scale" c:type="ShumateScale*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-scale.c"
                 line="408">the number of pixels</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_unit"
              c:identifier="shumate_scale_set_unit"
              glib:set-property="unit">
        <doc xml:space="preserve"
             filename="shumate/shumate-scale.c"
             line="427">Sets the scale unit.</doc>
        <source-position filename="shumate/shumate-scale.h" line="61"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="scale" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-scale.c"
                 line="429">a #ShumateScale</doc>
            <type name="Scale" c:type="ShumateScale*"/>
          </instance-parameter>
          <parameter name="unit" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-scale.c"
                 line="430">a #ShumateUnit</doc>
            <type name="Unit" c:type="ShumateUnit"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_viewport"
              c:identifier="shumate_scale_set_viewport"
              glib:set-property="viewport">
        <doc xml:space="preserve"
             filename="shumate/shumate-scale.c"
             line="452">Sets the scale viewport.</doc>
        <source-position filename="shumate/shumate-scale.h" line="65"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="scale" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-scale.c"
                 line="454">a #ShumateScale</doc>
            <type name="Scale" c:type="ShumateScale*"/>
          </instance-parameter>
          <parameter name="viewport"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-scale.c"
                 line="455">a #ShumateViewport</doc>
            <type name="Viewport" c:type="ShumateViewport*"/>
          </parameter>
        </parameters>
      </method>
      <property name="max-width"
                writable="1"
                transfer-ownership="none"
                setter="set_max_width"
                getter="get_max_width"
                default-value="150">
        <doc xml:space="preserve"
             filename="shumate/shumate-scale.c"
             line="303">The size of the map scale on screen in pixels.</doc>
        <type name="guint" c:type="guint"/>
      </property>
      <property name="unit"
                writable="1"
                transfer-ownership="none"
                setter="set_unit"
                getter="get_unit"
                default-value="SHUMATE_UNIT_BOTH">
        <doc xml:space="preserve"
             filename="shumate/shumate-scale.c"
             line="315">The scale's units.</doc>
        <type name="Unit"/>
      </property>
      <property name="viewport"
                writable="1"
                transfer-ownership="none"
                setter="set_viewport"
                getter="get_viewport">
        <doc xml:space="preserve"
             filename="shumate/shumate-scale.c"
             line="328">The viewport to use.</doc>
        <type name="Viewport"/>
      </property>
    </class>
    <record name="ScaleClass"
            c:type="ShumateScaleClass"
            glib:is-gtype-struct-for="Scale">
      <source-position filename="shumate/shumate-scale.h" line="37"/>
      <field name="parent_class">
        <type name="Gtk.WidgetClass" c:type="GtkWidgetClass"/>
      </field>
    </record>
    <class name="SimpleMap"
           c:symbol-prefix="simple_map"
           c:type="ShumateSimpleMap"
           parent="Gtk.Widget"
           glib:type-name="ShumateSimpleMap"
           glib:get-type="shumate_simple_map_get_type"
           glib:type-struct="SimpleMapClass">
      <doc xml:space="preserve"
           filename="shumate/shumate-simple-map.c"
           line="23">A ready-to-use map [class@Gtk.Widget].If you want to use your own implementation,
you can look at the [class@Shumate.Map] widget.

The simple map contains a zoom widget, a [class@Shumate.License] at the bottom,
a [class@Shumate.Scale] and a [class@Shumate.Compass].</doc>
      <source-position filename="shumate/shumate-simple-map.h" line="33"/>
      <implements name="Gtk.Accessible"/>
      <implements name="Gtk.Buildable"/>
      <implements name="Gtk.ConstraintTarget"/>
      <constructor name="new" c:identifier="shumate_simple_map_new">
        <source-position filename="shumate/shumate-simple-map.h" line="35"/>
        <return-value transfer-ownership="none">
          <type name="SimpleMap" c:type="ShumateSimpleMap*"/>
        </return-value>
      </constructor>
      <method name="add_overlay_layer"
              c:identifier="shumate_simple_map_add_overlay_layer">
        <doc xml:space="preserve"
             filename="shumate/shumate-simple-map.c"
             line="430">Adds a map layer as an overlay on top of the base map.</doc>
        <source-position filename="shumate/shumate-simple-map.h" line="43"/>
        <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"
                 filename="shumate/shumate-simple-map.c"
                 line="432">a [class@SimpleMap]</doc>
            <type name="SimpleMap" c:type="ShumateSimpleMap*"/>
          </instance-parameter>
          <parameter name="layer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-simple-map.c"
                 line="433">a [class@Layer] to add</doc>
            <type name="Layer" c:type="ShumateLayer*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_base_map_layer"
              c:identifier="shumate_simple_map_get_base_map_layer"
              glib:get-property="base-map-layer"
              version="1.4">
        <doc xml:space="preserve"
             filename="shumate/shumate-simple-map.c"
             line="623">Gets the [class@MapLayer] that displays the base map.</doc>
        <source-position filename="shumate/shumate-simple-map.h" line="63"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-simple-map.c"
               line="629">the base map layer</doc>
          <type name="MapLayer" c:type="ShumateMapLayer*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-simple-map.c"
                 line="625">a [class@SimpleMap]</doc>
            <type name="SimpleMap" c:type="ShumateSimpleMap*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_compass"
              c:identifier="shumate_simple_map_get_compass"
              glib:get-property="compass">
        <doc xml:space="preserve"
             filename="shumate/shumate-simple-map.c"
             line="523">Gets the compass widget for the map.</doc>
        <source-position filename="shumate/shumate-simple-map.h" line="51"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-simple-map.c"
               line="529">a [class@Compass]</doc>
          <type name="Compass" c:type="ShumateCompass*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-simple-map.c"
                 line="525">a [class@SimpleMap]</doc>
            <type name="SimpleMap" c:type="ShumateSimpleMap*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_license"
              c:identifier="shumate_simple_map_get_license"
              glib:get-property="license">
        <doc xml:space="preserve"
             filename="shumate/shumate-simple-map.c"
             line="540">Gets the license widget for the map.</doc>
        <source-position filename="shumate/shumate-simple-map.h" line="53"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-simple-map.c"
               line="546">a [class@License]</doc>
          <type name="License" c:type="ShumateLicense*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-simple-map.c"
                 line="542">a [class@SimpleMap]</doc>
            <type name="SimpleMap" c:type="ShumateSimpleMap*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_map"
              c:identifier="shumate_simple_map_get_map"
              glib:get-property="map">
        <doc xml:space="preserve"
             filename="shumate/shumate-simple-map.c"
             line="606">Gets the [class@SimpleMap]'s underlying [class@Map].</doc>
        <source-position filename="shumate/shumate-simple-map.h" line="61"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-simple-map.c"
               line="612">a [class@Map]</doc>
          <type name="Map" c:type="ShumateMap*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-simple-map.c"
                 line="608">a [class@SimpleMap]</doc>
            <type name="SimpleMap" c:type="ShumateSimpleMap*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_map_source"
              c:identifier="shumate_simple_map_get_map_source"
              glib:get-property="map-source">
        <doc xml:space="preserve"
             filename="shumate/shumate-simple-map.c"
             line="366">Gets the map source for the current base layer.</doc>
        <source-position filename="shumate/shumate-simple-map.h" line="39"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-simple-map.c"
               line="372">a [class@MapSource]</doc>
          <type name="MapSource" c:type="ShumateMapSource*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-simple-map.c"
                 line="368">a [class@SimpleMap]</doc>
            <type name="SimpleMap" c:type="ShumateSimpleMap*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_scale"
              c:identifier="shumate_simple_map_get_scale"
              glib:get-property="scale">
        <doc xml:space="preserve"
             filename="shumate/shumate-simple-map.c"
             line="557">Gets the scale widget for the map.</doc>
        <source-position filename="shumate/shumate-simple-map.h" line="55"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-simple-map.c"
               line="563">a [class@Scale]</doc>
          <type name="Scale" c:type="ShumateScale*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-simple-map.c"
                 line="559">a [class@SimpleMap]</doc>
            <type name="SimpleMap" c:type="ShumateSimpleMap*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_show_zoom_buttons"
              c:identifier="shumate_simple_map_get_show_zoom_buttons"
              glib:get-property="show-zoom-buttons">
        <doc xml:space="preserve"
             filename="shumate/shumate-simple-map.c"
             line="573">Gets whether or not the zoom buttons are shown.</doc>
        <source-position filename="shumate/shumate-simple-map.h" line="57"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-simple-map.c"
               line="579">%TRUE if the zoom buttons are visible, otherwise %FALSE</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-simple-map.c"
                 line="575">a [class@SimpleMap]</doc>
            <type name="SimpleMap" c:type="ShumateSimpleMap*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_viewport"
              c:identifier="shumate_simple_map_get_viewport"
              glib:get-property="viewport">
        <doc xml:space="preserve"
             filename="shumate/shumate-simple-map.c"
             line="349">Gets the map's viewport, needed for constructing map layers that will be added
to it.</doc>
        <source-position filename="shumate/shumate-simple-map.h" line="37"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-simple-map.c"
               line="356">a [class@Viewport]</doc>
          <type name="Viewport" c:type="ShumateViewport*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-simple-map.c"
                 line="351">a [class@Map]</doc>
            <type name="SimpleMap" c:type="ShumateSimpleMap*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="insert_overlay_layer"
              c:identifier="shumate_simple_map_insert_overlay_layer">
        <source-position filename="shumate/shumate-simple-map.h" line="45"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SimpleMap" c:type="ShumateSimpleMap*"/>
          </instance-parameter>
          <parameter name="layer" transfer-ownership="none">
            <type name="Layer" c:type="ShumateLayer*"/>
          </parameter>
          <parameter name="idx" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_overlay_layer"
              c:identifier="shumate_simple_map_remove_overlay_layer">
        <doc xml:space="preserve"
             filename="shumate/shumate-simple-map.c"
             line="504">Removes a layer from the map.</doc>
        <source-position filename="shumate/shumate-simple-map.h" line="48"/>
        <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"
                 filename="shumate/shumate-simple-map.c"
                 line="506">a [class@SimpleMap]</doc>
            <type name="SimpleMap" c:type="ShumateSimpleMap*"/>
          </instance-parameter>
          <parameter name="layer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-simple-map.c"
                 line="507">a [class@Layer] that was added to the map previously</doc>
            <type name="Layer" c:type="ShumateLayer*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_map_source"
              c:identifier="shumate_simple_map_set_map_source"
              glib:set-property="map-source">
        <doc xml:space="preserve"
             filename="shumate/shumate-simple-map.c"
             line="382">Sets the source for the base map.</doc>
        <source-position filename="shumate/shumate-simple-map.h" line="40"/>
        <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"
                 filename="shumate/shumate-simple-map.c"
                 line="384">a [class@SimpleMap]</doc>
            <type name="SimpleMap" c:type="ShumateSimpleMap*"/>
          </instance-parameter>
          <parameter name="map_source"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-simple-map.c"
                 line="385">a [class@MapSource]</doc>
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_show_zoom_buttons"
              c:identifier="shumate_simple_map_set_show_zoom_buttons"
              glib:set-property="show-zoom-buttons">
        <doc xml:space="preserve"
             filename="shumate/shumate-simple-map.c"
             line="589">Sets whether or not the zoom buttons are shown.</doc>
        <source-position filename="shumate/shumate-simple-map.h" line="58"/>
        <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"
                 filename="shumate/shumate-simple-map.c"
                 line="591">a [class@SimpleMap]</doc>
            <type name="SimpleMap" c:type="ShumateSimpleMap*"/>
          </instance-parameter>
          <parameter name="show_zoom_buttons" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-simple-map.c"
                 line="592">%TRUE to show the zoom buttons, %FALSE to hide them</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <property name="base-map-layer"
                version="1.4"
                transfer-ownership="none"
                getter="get_base_map_layer">
        <doc xml:space="preserve"
             filename="shumate/shumate-simple-map.c"
             line="286">The [class@MapLayer] that displays the map source.

This is a read-only property. To change the basemap, set the
[property@SimpleMap:map-source] property.</doc>
        <type name="MapLayer"/>
      </property>
      <property name="compass" transfer-ownership="none" getter="get_compass">
        <type name="Compass"/>
      </property>
      <property name="license" transfer-ownership="none" getter="get_license">
        <type name="License"/>
      </property>
      <property name="map" transfer-ownership="none" getter="get_map">
        <type name="Map"/>
      </property>
      <property name="map-source"
                writable="1"
                transfer-ownership="none"
                setter="set_map_source"
                getter="get_map_source">
        <type name="MapSource"/>
      </property>
      <property name="scale" transfer-ownership="none" getter="get_scale">
        <type name="Scale"/>
      </property>
      <property name="show-zoom-buttons"
                writable="1"
                transfer-ownership="none"
                setter="set_show_zoom_buttons"
                getter="get_show_zoom_buttons"
                default-value="TRUE">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="viewport"
                transfer-ownership="none"
                getter="get_viewport">
        <type name="Viewport"/>
      </property>
      <glib:signal name="symbol-clicked" when="last" version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-simple-map.c"
             line="305">Emitted when a symbol in the base map layer (not in overlay layers) is
clicked.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="event" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-simple-map.c"
                 line="308">a [class@SymbolEvent] with details about the clicked symbol.</doc>
            <type name="SymbolEvent"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="SimpleMapClass"
            c:type="ShumateSimpleMapClass"
            glib:is-gtype-struct-for="SimpleMap">
      <source-position filename="shumate/shumate-simple-map.h" line="33"/>
      <field name="parent_class">
        <type name="Gtk.WidgetClass" c:type="GtkWidgetClass"/>
      </field>
    </record>
    <enumeration name="State"
                 glib:type-name="ShumateState"
                 glib:get-type="shumate_state_get_type"
                 c:type="ShumateState">
      <doc xml:space="preserve"
           filename="shumate/shumate-tile.h"
           line="33">Tile loading state.</doc>
      <member name="none"
              value="0"
              c:identifier="SHUMATE_STATE_NONE"
              glib:nick="none"
              glib:name="SHUMATE_STATE_NONE">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile.h"
             line="35">Initial or undefined state</doc>
      </member>
      <member name="loading"
              value="1"
              c:identifier="SHUMATE_STATE_LOADING"
              glib:nick="loading"
              glib:name="SHUMATE_STATE_LOADING">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile.h"
             line="36">Tile is loading</doc>
      </member>
      <member name="loaded"
              value="2"
              c:identifier="SHUMATE_STATE_LOADED"
              glib:nick="loaded"
              glib:name="SHUMATE_STATE_LOADED">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile.h"
             line="37">Tile is loaded but not yet displayed</doc>
      </member>
      <member name="done"
              value="3"
              c:identifier="SHUMATE_STATE_DONE"
              glib:nick="done"
              glib:name="SHUMATE_STATE_DONE">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile.h"
             line="38">Tile loading finished. Also used to inform map sources
    that tile loading has been cancelled.</doc>
      </member>
    </enumeration>
    <enumeration name="StyleError"
                 glib:type-name="ShumateStyleError"
                 glib:get-type="shumate_style_error_get_type"
                 c:type="ShumateStyleError"
                 glib:error-domain="shumate-style-error-quark">
      <doc xml:space="preserve"
           filename="shumate/shumate-vector-renderer.h"
           line="61">Error codes that occurs while parsing the style in [class@VectorRenderer].</doc>
      <member name="failed"
              value="0"
              c:identifier="SHUMATE_STYLE_ERROR_FAILED"
              glib:nick="failed"
              glib:name="SHUMATE_STYLE_ERROR_FAILED">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-renderer.h"
             line="63">An unspecified error occurred during the operation.</doc>
      </member>
      <member name="malformed_style"
              value="1"
              c:identifier="SHUMATE_STYLE_ERROR_MALFORMED_STYLE"
              glib:nick="malformed-style"
              glib:name="SHUMATE_STYLE_ERROR_MALFORMED_STYLE">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-renderer.h"
             line="64">A JSON node in the style has the wrong type (e.g. an object where there should be an array).</doc>
      </member>
      <member name="unsupported_layer"
              value="2"
              c:identifier="SHUMATE_STYLE_ERROR_UNSUPPORTED_LAYER"
              glib:nick="unsupported-layer"
              glib:name="SHUMATE_STYLE_ERROR_UNSUPPORTED_LAYER">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-renderer.h"
             line="65">An unsupported layer type was encountered.</doc>
      </member>
      <member name="invalid_expression"
              value="3"
              c:identifier="SHUMATE_STYLE_ERROR_INVALID_EXPRESSION"
              glib:nick="invalid-expression"
              glib:name="SHUMATE_STYLE_ERROR_INVALID_EXPRESSION">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-renderer.h"
             line="66">An invalid or unrecognized expression was encountered.</doc>
      </member>
      <member name="support_omitted"
              value="4"
              c:identifier="SHUMATE_STYLE_ERROR_SUPPORT_OMITTED"
              glib:nick="support-omitted"
              glib:name="SHUMATE_STYLE_ERROR_SUPPORT_OMITTED">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-renderer.h"
             line="67">Libshumate was compiled without vector tile support.</doc>
      </member>
      <member name="unsupported"
              value="5"
              c:identifier="SHUMATE_STYLE_ERROR_UNSUPPORTED"
              glib:nick="unsupported"
              glib:name="SHUMATE_STYLE_ERROR_UNSUPPORTED">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-renderer.h"
             line="68">An unsupported style spec feature was encountered.</doc>
      </member>
      <function name="quark" c:identifier="shumate_style_error_quark">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-vector-renderer.c"
               line="1008">a #GQuark</doc>
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
    </enumeration>
    <class name="SymbolEvent"
           c:symbol-prefix="symbol_event"
           c:type="ShumateSymbolEvent"
           version="1.1"
           parent="GObject.Object"
           final="1"
           glib:type-name="ShumateSymbolEvent"
           glib:get-type="shumate_symbol_event_get_type"
           glib:type-struct="SymbolEventClass">
      <doc xml:space="preserve"
           filename="shumate/shumate-symbol-event.c"
           line="21">An object containing the details of a map feature that has been clicked.
It is the argument of the [signal@MapLayer::symbol-clicked] and
[signal@SimpleMap::symbol-clicked] signals.

When vector maps are rendered, they may contain labels and icons. When one
of these symbols is clicked, these signals are emitted to give the
application access to the original location and details of the map feature.

[class@SymbolEvent] implements [iface@Location] so you can get the latitude
and longitude of the feature that was clicked.</doc>
      <source-position filename="shumate/shumate-symbol-event.h" line="29"/>
      <implements name="Location"/>
      <method name="get_feature_id"
              c:identifier="shumate_symbol_event_get_feature_id"
              glib:get-property="feature-id"
              version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-symbol-event.c"
             line="264">Gets the feature ID as specified in the data source. The meaning of the
ID, if any, is up to the source.

Feature IDs in Mapbox Vector Tile format are integers, but they are
formatted as a string here for futureproofing.</doc>
        <source-position filename="shumate/shumate-symbol-event.h" line="33"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-symbol-event.c"
               line="274">the feature ID</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-symbol-event.c"
                 line="266">a [class@SymbolEvent]</doc>
            <type name="SymbolEvent" c:type="ShumateSymbolEvent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_keys"
              c:identifier="shumate_symbol_event_get_keys"
              version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-symbol-event.c"
             line="285">Gets a list of the keys of the source feature's tags.</doc>
        <source-position filename="shumate/shumate-symbol-event.h" line="34"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="shumate/shumate-symbol-event.c"
               line="291">a list of the tag keys</doc>
          <array c:type="const GStrv">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-symbol-event.c"
                 line="287">a [class@SymbolEvent]</doc>
            <type name="SymbolEvent" c:type="ShumateSymbolEvent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_layer"
              c:identifier="shumate_symbol_event_get_layer"
              glib:get-property="layer"
              version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-symbol-event.c"
             line="224">Gets the name of the layer the clicked symbol is in, as named in the vector
stylesheet.

Note that this is distinct from the name of the layer in the vector tile
schema. Some styles have multiple symbol layers derived from the same
data source layer.</doc>
        <source-position filename="shumate/shumate-symbol-event.h" line="31"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-symbol-event.c"
               line="235">the layer name</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-symbol-event.c"
                 line="226">a [class@SymbolEvent]</doc>
            <type name="SymbolEvent" c:type="ShumateSymbolEvent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_source_layer"
              c:identifier="shumate_symbol_event_get_source_layer"
              glib:get-property="source-layer"
              version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-symbol-event.c"
             line="246">Gets the name of the source layer the clicked feature is in,
as named in the vector tile schema.</doc>
        <source-position filename="shumate/shumate-symbol-event.h" line="32"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-symbol-event.c"
               line="253">the layer name</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-symbol-event.c"
                 line="248">a [class@SymbolEvent]</doc>
            <type name="SymbolEvent" c:type="ShumateSymbolEvent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_tag"
              c:identifier="shumate_symbol_event_get_tag"
              version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-symbol-event.c"
             line="302">Gets a tag from the source feature.

The available tags depend on the vector tile schema and the source layer.
Check the documentation for the tiles you're using to see what information
is available.</doc>
        <source-position filename="shumate/shumate-symbol-event.h" line="35"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-symbol-event.c"
               line="313">the tag value, formatted as a string</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-symbol-event.c"
                 line="304">a [class@SymbolEvent]</doc>
            <type name="SymbolEvent" c:type="ShumateSymbolEvent*"/>
          </instance-parameter>
          <parameter name="tag_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-symbol-event.c"
                 line="305">the tag to get</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <property name="feature-id"
                version="1.1"
                transfer-ownership="none"
                getter="get_feature_id"
                default-value="NULL">
        <doc xml:space="preserve"
             filename="shumate/shumate-symbol-event.c"
             line="162">The ID of the feature that this event pertains to, as it was given in the
data source.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="layer"
                version="1.1"
                transfer-ownership="none"
                getter="get_layer"
                default-value="NULL">
        <doc xml:space="preserve"
             filename="shumate/shumate-symbol-event.c"
             line="136">The ID of the style layer of the symbol that this event pertains to.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="source-layer"
                transfer-ownership="none"
                getter="get_source_layer"
                default-value="NULL">
        <doc xml:space="preserve"
             filename="shumate/shumate-symbol-event.c"
             line="150">The ID of the source layer of the symbol that this event pertains to.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
    </class>
    <record name="SymbolEventClass"
            c:type="ShumateSymbolEventClass"
            glib:is-gtype-struct-for="SymbolEvent">
      <source-position filename="shumate/shumate-symbol-event.h" line="29"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="Tile"
           c:symbol-prefix="tile"
           c:type="ShumateTile"
           parent="GObject.Object"
           glib:type-name="ShumateTile"
           glib:get-type="shumate_tile_get_type"
           glib:type-struct="TileClass">
      <doc xml:space="preserve"
           filename="shumate/shumate-tile.c"
           line="23">An object that represents map tiles. Tiles are loaded by a [class@MapSource].</doc>
      <source-position filename="shumate/shumate-tile.h" line="31"/>
      <constructor name="new" c:identifier="shumate_tile_new">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile.c"
             line="310">Creates an instance of #ShumateTile.</doc>
        <source-position filename="shumate/shumate-tile.h" line="51"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="shumate/shumate-tile.c"
               line="315">a new #ShumateTile</doc>
          <type name="Tile" c:type="ShumateTile*"/>
        </return-value>
      </constructor>
      <constructor name="new_full" c:identifier="shumate_tile_new_full">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile.c"
             line="324">Creates an instance of #ShumateTile.</doc>
        <source-position filename="shumate/shumate-tile.h" line="52"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="shumate/shumate-tile.c"
               line="333">a #ShumateTile</doc>
          <type name="Tile" c:type="ShumateTile*"/>
        </return-value>
        <parameters>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-tile.c"
                 line="326">the x position</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-tile.c"
                 line="327">the y position</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="size" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-tile.c"
                 line="328">the size in pixels</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="zoom_level" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-tile.c"
                 line="329">the zoom level</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_fade_in"
              c:identifier="shumate_tile_get_fade_in"
              glib:get-property="fade-in">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile.c"
             line="540">Checks whether the tile should fade in.</doc>
        <source-position filename="shumate/shumate-tile.h" line="77"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-tile.c"
               line="546">the return value determines whether the tile should fade in when loading.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-tile.c"
                 line="542">the #ShumateTile</doc>
            <type name="Tile" c:type="ShumateTile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_paintable"
              c:identifier="shumate_tile_get_paintable"
              glib:get-property="paintable">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile.c"
             line="577">Get the [iface@Gdk.Paintable] representing this tile.</doc>
        <source-position filename="shumate/shumate-tile.h" line="81"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="shumate/shumate-tile.c"
               line="583">A [iface@Gdk.Paintable]</doc>
          <type name="Gdk.Paintable" c:type="GdkPaintable*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-tile.c"
                 line="579">the [class@Tile]</doc>
            <type name="Tile" c:type="ShumateTile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_scale_factor"
              c:identifier="shumate_tile_get_scale_factor"
              glib:get-property="scale-factor"
              version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile.c"
             line="611">Gets the scale factor of the tile.</doc>
        <source-position filename="shumate/shumate-tile.h" line="85"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-tile.c"
               line="617">the scale factor</doc>
          <type name="gdouble" c:type="double"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-tile.c"
                 line="613">a [class@Tile]</doc>
            <type name="Tile" c:type="ShumateTile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_size"
              c:identifier="shumate_tile_get_size"
              glib:get-property="size">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile.c"
             line="464">Gets the tile's size.</doc>
        <source-position filename="shumate/shumate-tile.h" line="69"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-tile.c"
               line="470">the tile's size in pixels</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-tile.c"
                 line="466">the #ShumateTile</doc>
            <type name="Tile" c:type="ShumateTile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_state"
              c:identifier="shumate_tile_get_state"
              glib:get-property="state">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile.c"
             line="502">Gets the current state of tile loading.</doc>
        <source-position filename="shumate/shumate-tile.h" line="73"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-tile.c"
               line="508">the tile's #ShumateState</doc>
          <type name="State" c:type="ShumateState"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-tile.c"
                 line="504">the #ShumateTile</doc>
            <type name="Tile" c:type="ShumateTile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_x"
              c:identifier="shumate_tile_get_x"
              glib:get-property="x">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile.c"
             line="350">Gets the tile's x position.</doc>
        <source-position filename="shumate/shumate-tile.h" line="57"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-tile.c"
               line="356">the tile's x position</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-tile.c"
                 line="352">the #ShumateTile</doc>
            <type name="Tile" c:type="ShumateTile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_y"
              c:identifier="shumate_tile_get_y"
              glib:get-property="y">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile.c"
             line="388">Gets the tile's y position.</doc>
        <source-position filename="shumate/shumate-tile.h" line="61"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-tile.c"
               line="394">the tile's y position</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-tile.c"
                 line="390">the #ShumateTile</doc>
            <type name="Tile" c:type="ShumateTile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_zoom_level"
              c:identifier="shumate_tile_get_zoom_level"
              glib:get-property="zoom-level">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile.c"
             line="426">Gets the tile's zoom level.</doc>
        <source-position filename="shumate/shumate-tile.h" line="65"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-tile.c"
               line="432">the tile's zoom level</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-tile.c"
                 line="428">the #ShumateTile</doc>
            <type name="Tile" c:type="ShumateTile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_fade_in"
              c:identifier="shumate_tile_set_fade_in"
              glib:set-property="fade-in">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile.c"
             line="557">Sets the flag determining whether the tile should fade in when loading</doc>
        <source-position filename="shumate/shumate-tile.h" line="78"/>
        <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"
                 filename="shumate/shumate-tile.c"
                 line="559">the #ShumateTile</doc>
            <type name="Tile" c:type="ShumateTile*"/>
          </instance-parameter>
          <parameter name="fade_in" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-tile.c"
                 line="560">determines whether the tile should fade in when loading</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_paintable"
              c:identifier="shumate_tile_set_paintable"
              glib:set-property="paintable">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile.c"
             line="593">Sets the [iface@Gdk.Paintable] representing this tile.</doc>
        <source-position filename="shumate/shumate-tile.h" line="82"/>
        <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"
                 filename="shumate/shumate-tile.c"
                 line="595">the [class@Tile]</doc>
            <type name="Tile" c:type="ShumateTile*"/>
          </instance-parameter>
          <parameter name="paintable" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-tile.c"
                 line="596">a [iface@Gdk.Paintable]</doc>
            <type name="Gdk.Paintable" c:type="GdkPaintable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_scale_factor"
              c:identifier="shumate_tile_set_scale_factor"
              glib:set-property="scale-factor"
              version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile.c"
             line="629">Sets the scale factor of the tile.</doc>
        <source-position filename="shumate/shumate-tile.h" line="86"/>
        <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"
                 filename="shumate/shumate-tile.c"
                 line="631">the [class@Tile]</doc>
            <type name="Tile" c:type="ShumateTile*"/>
          </instance-parameter>
          <parameter name="scale_factor" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-tile.c"
                 line="632">the scale factor</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_size"
              c:identifier="shumate_tile_set_size"
              glib:set-property="size">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile.c"
             line="481">Sets the tile's size</doc>
        <source-position filename="shumate/shumate-tile.h" line="70"/>
        <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"
                 filename="shumate/shumate-tile.c"
                 line="483">the #ShumateTile</doc>
            <type name="Tile" c:type="ShumateTile*"/>
          </instance-parameter>
          <parameter name="size" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-tile.c"
                 line="484">the size in pixels</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_state"
              c:identifier="shumate_tile_set_state"
              glib:set-property="state">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile.c"
             line="519">Sets the tile's #ShumateState</doc>
        <source-position filename="shumate/shumate-tile.h" line="74"/>
        <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"
                 filename="shumate/shumate-tile.c"
                 line="521">the #ShumateTile</doc>
            <type name="Tile" c:type="ShumateTile*"/>
          </instance-parameter>
          <parameter name="state" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-tile.c"
                 line="522">a #ShumateState</doc>
            <type name="State" c:type="ShumateState"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_x"
              c:identifier="shumate_tile_set_x"
              glib:set-property="x">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile.c"
             line="367">Sets the tile's x position</doc>
        <source-position filename="shumate/shumate-tile.h" line="58"/>
        <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"
                 filename="shumate/shumate-tile.c"
                 line="369">the #ShumateTile</doc>
            <type name="Tile" c:type="ShumateTile*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-tile.c"
                 line="370">the position</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_y"
              c:identifier="shumate_tile_set_y"
              glib:set-property="y">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile.c"
             line="405">Sets the tile's y position</doc>
        <source-position filename="shumate/shumate-tile.h" line="62"/>
        <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"
                 filename="shumate/shumate-tile.c"
                 line="407">the #ShumateTile</doc>
            <type name="Tile" c:type="ShumateTile*"/>
          </instance-parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-tile.c"
                 line="408">the position</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_zoom_level"
              c:identifier="shumate_tile_set_zoom_level"
              glib:set-property="zoom-level">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile.c"
             line="443">Sets the tile's zoom level</doc>
        <source-position filename="shumate/shumate-tile.h" line="66"/>
        <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"
                 filename="shumate/shumate-tile.c"
                 line="445">the #ShumateTile</doc>
            <type name="Tile" c:type="ShumateTile*"/>
          </instance-parameter>
          <parameter name="zoom_level" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-tile.c"
                 line="446">the zoom level</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <property name="fade-in"
                writable="1"
                transfer-ownership="none"
                setter="set_fade_in"
                getter="get_fade_in"
                default-value="FALSE">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile.c"
             line="259">Specifies whether the tile should fade in when loading</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="paintable"
                writable="1"
                transfer-ownership="none"
                setter="set_paintable"
                getter="get_paintable">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile.c"
             line="271">The [iface@Gdk.Paintable] backing the tile</doc>
        <type name="Gdk.Paintable"/>
      </property>
      <property name="scale-factor"
                version="1.1"
                writable="1"
                transfer-ownership="none"
                setter="set_scale_factor"
                getter="get_scale_factor"
                default-value="1.000000">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile.c"
             line="283">The scale factor of the widget the tile will be displayed in.</doc>
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="size"
                writable="1"
                transfer-ownership="none"
                setter="set_size"
                getter="get_size"
                default-value="256">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile.c"
             line="232">The size of the tile in pixels</doc>
        <type name="guint" c:type="guint"/>
      </property>
      <property name="state"
                writable="1"
                transfer-ownership="none"
                setter="set_state"
                getter="get_state"
                default-value="SHUMATE_STATE_NONE">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile.c"
             line="246">The state of the tile</doc>
        <type name="State"/>
      </property>
      <property name="x"
                writable="1"
                transfer-ownership="none"
                setter="set_x"
                getter="get_x"
                default-value="0">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile.c"
             line="190">The x position of the tile</doc>
        <type name="guint" c:type="guint"/>
      </property>
      <property name="y"
                writable="1"
                transfer-ownership="none"
                setter="set_y"
                getter="get_y"
                default-value="0">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile.c"
             line="204">The y position of the tile</doc>
        <type name="guint" c:type="guint"/>
      </property>
      <property name="zoom-level"
                writable="1"
                transfer-ownership="none"
                setter="set_zoom_level"
                getter="get_zoom_level"
                default-value="0">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile.c"
             line="218">The zoom level of the tile</doc>
        <type name="guint" c:type="guint"/>
      </property>
    </class>
    <record name="TileClass"
            c:type="ShumateTileClass"
            glib:is-gtype-struct-for="Tile">
      <source-position filename="shumate/shumate-tile.h" line="31"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="TileDownloader"
           c:symbol-prefix="tile_downloader"
           c:type="ShumateTileDownloader"
           parent="DataSource"
           glib:type-name="ShumateTileDownloader"
           glib:get-type="shumate_tile_downloader_get_type"
           glib:type-struct="TileDownloaderClass">
      <doc xml:space="preserve"
           filename="shumate/shumate-tile-downloader.c"
           line="25">A [class@DataSource] that asynchronously downloads tiles from an online
service using a given template.

It contains an internal [class@FileCache] to cache the tiles on the system.</doc>
      <source-position filename="shumate/shumate-tile-downloader.h" line="26"/>
      <constructor name="new" c:identifier="shumate_tile_downloader_new">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile-downloader.c"
             line="60">Creates a new [class@TileDownloader] that fetches tiles from an API and
caches them on disk.

See [property@TileDownloader:url-template] for the format of the URL template.</doc>
        <source-position filename="shumate/shumate-tile-downloader.h"
                         line="28"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="shumate/shumate-tile-downloader.c"
               line="69">a newly constructed [class@TileDownloader]</doc>
          <type name="TileDownloader" c:type="ShumateTileDownloader*"/>
        </return-value>
        <parameters>
          <parameter name="url_template" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-tile-downloader.c"
                 line="62">a URL template to fetch tiles from</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <property name="url-template"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="NULL">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile-downloader.c"
             line="170">A template for construting the URL to download a tile from.

The template has the following replacements:
- "{x}": The X coordinate of the tile
- "{y}": The Y coordinate of the tile
- "{z}": The zoom level of the tile
- "{tmsy}": The inverted Y coordinate (i.e. tile numbering starts with 0 at
the bottom, rather than top, of the map)</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
    </class>
    <record name="TileDownloaderClass"
            c:type="ShumateTileDownloaderClass"
            glib:is-gtype-struct-for="TileDownloader">
      <source-position filename="shumate/shumate-tile-downloader.h" line="26"/>
      <field name="parent_class">
        <type name="DataSourceClass" c:type="ShumateDataSourceClass"/>
      </field>
    </record>
    <enumeration name="TileDownloaderError"
                 glib:type-name="ShumateTileDownloaderError"
                 glib:get-type="shumate_tile_downloader_error_get_type"
                 c:type="ShumateTileDownloaderError"
                 glib:error-domain="shumate-tile-downloader-error-quark">
      <doc xml:space="preserve"
           filename="shumate/shumate-tile-downloader.h"
           line="41">Error codes in the #SHUMATE_TILE_DOWNLOADER_ERROR domain.</doc>
      <member name="failed"
              value="0"
              c:identifier="SHUMATE_TILE_DOWNLOADER_ERROR_FAILED"
              glib:nick="failed"
              glib:name="SHUMATE_TILE_DOWNLOADER_ERROR_FAILED">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile-downloader.h"
             line="43">An unspecified error occurred during the operation.</doc>
      </member>
      <member name="bad_response"
              value="1"
              c:identifier="SHUMATE_TILE_DOWNLOADER_ERROR_BAD_RESPONSE"
              glib:nick="bad-response"
              glib:name="SHUMATE_TILE_DOWNLOADER_ERROR_BAD_RESPONSE">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile-downloader.h"
             line="44">An unsuccessful HTTP response was received from the server.</doc>
      </member>
      <member name="could_not_connect"
              value="2"
              c:identifier="SHUMATE_TILE_DOWNLOADER_ERROR_COULD_NOT_CONNECT"
              glib:nick="could-not-connect"
              glib:name="SHUMATE_TILE_DOWNLOADER_ERROR_COULD_NOT_CONNECT">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile-downloader.h"
             line="45">The server could not be reached.</doc>
      </member>
      <member name="malformed_url"
              value="3"
              c:identifier="SHUMATE_TILE_DOWNLOADER_ERROR_MALFORMED_URL"
              glib:nick="malformed-url"
              glib:name="SHUMATE_TILE_DOWNLOADER_ERROR_MALFORMED_URL">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile-downloader.h"
             line="46">The provided URL isn't valid</doc>
      </member>
      <member name="offline"
              value="4"
              c:identifier="SHUMATE_TILE_DOWNLOADER_ERROR_OFFLINE"
              glib:nick="offline"
              glib:name="SHUMATE_TILE_DOWNLOADER_ERROR_OFFLINE">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile-downloader.h"
             line="47">The tile source has been marked as offline.</doc>
      </member>
      <function name="quark"
                c:identifier="shumate_tile_downloader_error_quark">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile-downloader.c"
             line="570">Gets the #ShumateTileDownloader error quark.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-tile-downloader.c"
               line="575">a #GQuark</doc>
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
    </enumeration>
    <enumeration name="Unit"
                 glib:type-name="ShumateUnit"
                 glib:get-type="shumate_unit_get_type"
                 c:type="ShumateUnit">
      <doc xml:space="preserve"
           filename="shumate/shumate-scale.h"
           line="39">Units used by the scale.</doc>
      <member name="both"
              value="0"
              c:identifier="SHUMATE_UNIT_BOTH"
              glib:nick="both"
              glib:name="SHUMATE_UNIT_BOTH">
        <doc xml:space="preserve"
             filename="shumate/shumate-scale.h"
             line="41">Both metric and imperial units</doc>
      </member>
      <member name="metric"
              value="1"
              c:identifier="SHUMATE_UNIT_METRIC"
              glib:nick="metric"
              glib:name="SHUMATE_UNIT_METRIC">
        <doc xml:space="preserve"
             filename="shumate/shumate-scale.h"
             line="42">Metric units (meters)</doc>
      </member>
      <member name="imperial"
              value="2"
              c:identifier="SHUMATE_UNIT_IMPERIAL"
              glib:nick="imperial"
              glib:name="SHUMATE_UNIT_IMPERIAL">
        <doc xml:space="preserve"
             filename="shumate/shumate-scale.h"
             line="43">Imperial units (miles)</doc>
      </member>
    </enumeration>
    <class name="VectorReader"
           c:symbol-prefix="vector_reader"
           c:type="ShumateVectorReader"
           version="1.2"
           parent="GObject.Object"
           glib:type-name="ShumateVectorReader"
           glib:get-type="shumate_vector_reader_get_type"
           glib:type-struct="VectorReaderClass">
      <doc xml:space="preserve"
           filename="shumate/shumate-vector-reader.c"
           line="23">Provides low-level access to the contents of a vector tile.

To create a new [class@VectorReader], use [ctor@VectorReader.new] and pass
the bytes of a vector tile, which you might get from a [class@DataSource].
Then, use [method@VectorReader.iterate] to get a [class@VectorReaderIter]
and iterate over the features in the tile. You can create multiple
[class@VectorReaderIter]s from the same [class@VectorReader].</doc>
      <source-position filename="shumate/shumate-vector-reader.h" line="25"/>
      <constructor name="new"
                   c:identifier="shumate_vector_reader_new"
                   version="1.2">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-reader.c"
             line="65">Creates a new [class@VectorReader] from @bytes.</doc>
        <source-position filename="shumate/shumate-vector-reader.h" line="27"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="shumate/shumate-vector-reader.c"
               line="71">A new [class@VectorReader]</doc>
          <type name="VectorReader" c:type="ShumateVectorReader*"/>
        </return-value>
        <parameters>
          <parameter name="bytes" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-reader.c"
                 line="67">A tile in Mapbox Vector Tile format</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="iterate"
              c:identifier="shumate_vector_reader_iterate"
              version="1.2">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-reader.c"
             line="96">Creates a new [class@VectorReaderIter] for @self.</doc>
        <source-position filename="shumate/shumate-vector-reader.h" line="28"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="shumate/shumate-vector-reader.c"
               line="102">A new [class@VectorReaderIter]</doc>
          <type name="VectorReaderIter" c:type="ShumateVectorReaderIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-reader.c"
                 line="98">A [class@VectorReader]</doc>
            <type name="VectorReader" c:type="ShumateVectorReader*"/>
          </instance-parameter>
        </parameters>
      </method>
    </class>
    <record name="VectorReaderClass"
            c:type="ShumateVectorReaderClass"
            glib:is-gtype-struct-for="VectorReader">
      <source-position filename="shumate/shumate-vector-reader.h" line="25"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="VectorReaderIter"
           c:symbol-prefix="vector_reader_iter"
           c:type="ShumateVectorReaderIter"
           version="1.2"
           parent="GObject.Object"
           glib:type-name="ShumateVectorReaderIter"
           glib:get-type="shumate_vector_reader_iter_get_type"
           glib:type-struct="VectorReaderIterClass">
      <doc xml:space="preserve"
           filename="shumate/shumate-vector-reader-iter.c"
           line="25">Reads the layers and features of a vector tile.

To create a new [class@VectorReaderIter], use [method@VectorReader.iterate].

A vector tile consists of named layers, which contain features. Each feature
has an ID, a geometry, and a set of key/value tags. The meanings of
the IDs and tags depends on the data source that the tile came from. The
[OpenMapTiles schema](https://openmaptiles.org/schema/) is a common schema
for vector tiles.

To read all layers in a tile, use [method@VectorReaderIter.get_layer_count] and
[method@VectorReaderIter.read_layer]. If you know the name of the layer you
want, you can also use [method@VectorReaderIter.read_layer_by_name].
Once the iterator is reading a layer, you can call
[method@VectorReaderIter.next_feature] in a loop to read all the features in
the layer.

A [class@VectorReaderIter] is not thread-safe, but iterators created
from the same [class@VectorReader] can be used in different threads.

See [the Mapbox Vector Tile specification](https://github.com/mapbox/vector-tile-spec/tree/master/2.1)
for more information about the vector tile format.</doc>
      <source-position filename="shumate/shumate-vector-reader-iter.h"
                       line="49"/>
      <method name="feature_contains_point"
              c:identifier="shumate_vector_reader_iter_feature_contains_point"
              version="1.2">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-reader-iter.c"
             line="731">Determines whether the current feature contains the given point.

The point must be specified in tile space. See
[method@VectorReaderIter.get_layer_extent] to get the range of the
coordinates.

Only polygon or multipolygon features can contain a point. For all
other feature types, this function returns %FALSE.

If the point is on the border of the polygon, this function may return
either %TRUE or %FALSE.</doc>
        <source-position filename="shumate/shumate-vector-reader-iter.h"
                         line="72"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-vector-reader-iter.c"
               line="747">%TRUE if the feature contains the point, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-reader-iter.c"
                 line="733">A [class@VectorReaderIter].</doc>
            <type name="VectorReaderIter" c:type="ShumateVectorReaderIter*"/>
          </instance-parameter>
          <parameter name="x" transfer-ownership="none">
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_feature_geometry_type"
              c:identifier="shumate_vector_reader_iter_get_feature_geometry_type"
              version="1.2">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-reader-iter.c"
             line="589">Gets the geometry type of the current feature.</doc>
        <source-position filename="shumate/shumate-vector-reader-iter.h"
                         line="68"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-vector-reader-iter.c"
               line="595">The geometry type of the current feature.</doc>
          <type name="GeometryType" c:type="ShumateGeometryType"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-reader-iter.c"
                 line="591">A [class@VectorReaderIter].</doc>
            <type name="VectorReaderIter" c:type="ShumateVectorReaderIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_feature_id"
              c:identifier="shumate_vector_reader_iter_get_feature_id"
              version="1.2">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-reader-iter.c"
             line="456">Gets the ID of the current feature.</doc>
        <source-position filename="shumate/shumate-vector-reader-iter.h"
                         line="61"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-vector-reader-iter.c"
               line="462">The ID of the current feature.</doc>
          <type name="guint64" c:type="guint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-reader-iter.c"
                 line="458">A [class@VectorReaderIter].</doc>
            <type name="VectorReaderIter" c:type="ShumateVectorReaderIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_feature_keys"
              c:identifier="shumate_vector_reader_iter_get_feature_keys"
              version="1.2">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-reader-iter.c"
             line="556">Gets the keys of the tags of the current feature.</doc>
        <source-position filename="shumate/shumate-vector-reader-iter.h"
                         line="65"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="shumate/shumate-vector-reader-iter.c"
               line="562">The keys of the tags of the current feature.</doc>
          <array c:type="const char**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-reader-iter.c"
                 line="558">A [class@VectorReaderIter].</doc>
            <type name="VectorReaderIter" c:type="ShumateVectorReaderIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_feature_point"
              c:identifier="shumate_vector_reader_iter_get_feature_point"
              version="1.2">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-reader-iter.c"
             line="688">Gets the coordinates of the current feature in tile space, if the
feature is a single point.

See [method@VectorReaderIter.get_layer_extent] to get the range
of the coordinates.

It is an error to call this function if the feature is not a single point.
Use [method@VectorReaderIter.get_feature_geometry_type] to check
the feature's geometry type.</doc>
        <source-position filename="shumate/shumate-vector-reader-iter.h"
                         line="69"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-vector-reader-iter.c"
               line="704">%TRUE if the feature is a point, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-reader-iter.c"
                 line="690">A [class@VectorReaderIter].</doc>
            <type name="VectorReaderIter" c:type="ShumateVectorReaderIter*"/>
          </instance-parameter>
          <parameter name="x"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-reader-iter.c"
                 line="691">The x coordinate of the point.</doc>
            <type name="gdouble" c:type="double*"/>
          </parameter>
          <parameter name="y"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-reader-iter.c"
                 line="692">The y coordinate of the point.</doc>
            <type name="gdouble" c:type="double*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_feature_tag"
              c:identifier="shumate_vector_reader_iter_get_feature_tag"
              version="1.2">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-reader-iter.c"
             line="479">Gets the value of the tag with the given key.</doc>
        <source-position filename="shumate/shumate-vector-reader-iter.h"
                         line="62"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-vector-reader-iter.c"
               line="487">%TRUE if the tag was found, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-reader-iter.c"
                 line="481">A [class@VectorReaderIter].</doc>
            <type name="VectorReaderIter" c:type="ShumateVectorReaderIter*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-reader-iter.c"
                 line="482">The key of the tag to get.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-reader-iter.c"
                 line="483">The value of the tag.</doc>
            <type name="GObject.Value" c:type="GValue*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_layer_count"
              c:identifier="shumate_vector_reader_iter_get_layer_count"
              version="1.2">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-reader-iter.c"
             line="171">Gets the number of layers in the vector tile.</doc>
        <source-position filename="shumate/shumate-vector-reader-iter.h"
                         line="51"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-vector-reader-iter.c"
               line="177">The number of layers.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-reader-iter.c"
                 line="173">A #ShumateVectorReader.</doc>
            <type name="VectorReaderIter" c:type="ShumateVectorReaderIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_layer_extent"
              c:identifier="shumate_vector_reader_iter_get_layer_extent"
              version="1.2">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-reader-iter.c"
             line="337">Gets the extent for coordinates in the current layer.

0 represents the top and left edges of the tile, and this value
represents the bottom and right edges. Feature geometries may extend
outside of this range, since tiles often include some margin.

Tiles do not contain metadata about the location of the tile within
the world, so it is up to the caller to know the tile's coordinates
and convert latitude/longitude to tile-space coordinates.</doc>
        <source-position filename="shumate/shumate-vector-reader-iter.h"
                         line="56"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-vector-reader-iter.c"
               line="351">The layer's extent</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-reader-iter.c"
                 line="339">A [class@VectorReaderIter].</doc>
            <type name="VectorReaderIter" c:type="ShumateVectorReaderIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_layer_feature_count"
              c:identifier="shumate_vector_reader_iter_get_layer_feature_count"
              version="1.2">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-reader-iter.c"
             line="309">Gets the number of features in the current layer.

You can loop over all features in the current layer by calling
[method@VectorReaderIter.read_feature] with each index from 0 to
the feature count, but it might be easier to use
[method@VectorReaderIter.next_feature] instead.</doc>
        <source-position filename="shumate/shumate-vector-reader-iter.h"
                         line="57"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-vector-reader-iter.c"
               line="320">The number of features in the current layer.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-reader-iter.c"
                 line="311">A #ShumateVectorReader.</doc>
            <type name="VectorReaderIter" c:type="ShumateVectorReaderIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_layer_name"
              c:identifier="shumate_vector_reader_iter_get_layer_name"
              version="1.2">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-reader-iter.c"
             line="286">Gets the name of the current layer.</doc>
        <source-position filename="shumate/shumate-vector-reader-iter.h"
                         line="54"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-vector-reader-iter.c"
               line="292">The name of the current layer.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-reader-iter.c"
                 line="288">A #ShumateVectorReader.</doc>
            <type name="VectorReaderIter" c:type="ShumateVectorReaderIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_reader"
              c:identifier="shumate_vector_reader_iter_get_reader"
              glib:get-property="reader"
              version="1.2">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-reader-iter.c"
             line="154">Gets the reader that the iterator is iterating over.</doc>
        <source-position filename="shumate/shumate-vector-reader.h" line="30"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-vector-reader-iter.c"
               line="160">The reader that the iterator is iterating over.</doc>
          <type name="VectorReader" c:type="ShumateVectorReader*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-reader-iter.c"
                 line="156">A [class@VectorReaderIter]</doc>
            <type name="VectorReaderIter" c:type="ShumateVectorReaderIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="next_feature"
              c:identifier="shumate_vector_reader_iter_next_feature"
              version="1.2">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-reader-iter.c"
             line="396">Advances the iterator to the next feature in the current layer.</doc>
        <source-position filename="shumate/shumate-vector-reader-iter.h"
                         line="60"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-vector-reader-iter.c"
               line="402">%TRUE if there is a next feature, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-reader-iter.c"
                 line="398">A #ShumateVectorReader.</doc>
            <type name="VectorReaderIter" c:type="ShumateVectorReaderIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="read_feature"
              c:identifier="shumate_vector_reader_iter_read_feature"
              version="1.2">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-reader-iter.c"
             line="368">Moves the iterator to the feature at the given index in the current layer.

You can get the number of features in the current layer with
[method@VectorReaderIter.get_layer_feature_count].</doc>
        <source-position filename="shumate/shumate-vector-reader-iter.h"
                         line="59"/>
        <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"
                 filename="shumate/shumate-vector-reader-iter.c"
                 line="370">A #ShumateVectorReader.</doc>
            <type name="VectorReaderIter" c:type="ShumateVectorReaderIter*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-reader-iter.c"
                 line="371">The index of the feature to read.</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="read_layer"
              c:identifier="shumate_vector_reader_iter_read_layer"
              version="1.2">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-reader-iter.c"
             line="193">Sets the current layer of the reader to the layer at the given index.</doc>
        <source-position filename="shumate/shumate-vector-reader-iter.h"
                         line="52"/>
        <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"
                 filename="shumate/shumate-vector-reader-iter.c"
                 line="195">A #ShumateVectorReader.</doc>
            <type name="VectorReaderIter" c:type="ShumateVectorReaderIter*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-reader-iter.c"
                 line="196">The index of the layer to read.</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="read_layer_by_name"
              c:identifier="shumate_vector_reader_iter_read_layer_by_name"
              version="1.2">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-reader-iter.c"
             line="216">Moves the iterator to the layer with the given name, if present.

If the layer is not found, the current layer will be set to %NULL and the
function will return %FALSE. Layers are typically omitted if they are empty,
so don't assume that a layer in the schema will always be present.

The iterator's current feature will be %NULL after calling this function;
use [method@VectorReaderIter.next_feature] to advance to the first feature
in the layer.</doc>
        <source-position filename="shumate/shumate-vector-reader-iter.h"
                         line="53"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-vector-reader-iter.c"
               line="230">%TRUE if the layer was found, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-reader-iter.c"
                 line="218">A #ShumateVectorReader.</doc>
            <type name="VectorReaderIter" c:type="ShumateVectorReaderIter*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <property name="reader"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_reader">
        <type name="VectorReader"/>
      </property>
    </class>
    <record name="VectorReaderIterClass"
            c:type="ShumateVectorReaderIterClass"
            glib:is-gtype-struct-for="VectorReaderIter">
      <source-position filename="shumate/shumate-vector-reader-iter.h"
                       line="49"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="VectorRenderer"
           c:symbol-prefix="vector_renderer"
           c:type="ShumateVectorRenderer"
           parent="MapSource"
           glib:type-name="ShumateVectorRenderer"
           glib:get-type="shumate_vector_renderer_get_type"
           glib:type-struct="VectorRendererClass">
      <doc xml:space="preserve"
           filename="shumate/shumate-vector-renderer.c"
           line="25">A [class@MapSource] that renders tiles from a given vector data source.</doc>
      <source-position filename="shumate/shumate-vector-renderer.h" line="29"/>
      <implements name="Gio.Initable"/>
      <constructor name="new"
                   c:identifier="shumate_vector_renderer_new"
                   throws="1">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-renderer.c"
             line="84">Creates a new [class@VectorRenderer] from the given JSON style.

The stylesheet should contain a list of tile sources. Tiles will be
downloaded using [class@TileDownloader]s.

See the [MapLibre Style Specification](https://maplibre.org/maplibre-gl-js-docs/style-spec/)
for details on @style_json, but be aware that libshumate does not support
every feature of the specification.</doc>
        <source-position filename="shumate/shumate-vector-renderer.h"
                         line="35"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="shumate/shumate-vector-renderer.c"
               line="99">a newly constructed [class@VectorRenderer], or %NULL if @error is set</doc>
          <type name="VectorRenderer" c:type="ShumateVectorRenderer*"/>
        </return-value>
        <parameters>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-renderer.c"
                 line="86">an ID for the map source</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="style_json" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-renderer.c"
                 line="87">a vector style</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="is_supported"
                c:identifier="shumate_vector_renderer_is_supported">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-renderer.c"
             line="116">Checks whether libshumate was compiled with vector tile support. If it was
not, vector renderers cannot be created or used.</doc>
        <source-position filename="shumate/shumate-vector-renderer.h"
                         line="32"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-vector-renderer.c"
               line="122">%TRUE if libshumate was compiled with `-Dvector_renderer=true` or
%FALSE if it was not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </function>
      <method name="get_sprite_sheet"
              c:identifier="shumate_vector_renderer_get_sprite_sheet"
              glib:get-property="sprite-sheet"
              version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-renderer.c"
             line="565">Gets the sprite sheet used to render icons and textures.</doc>
        <source-position filename="shumate/shumate-vector-renderer.h"
                         line="44"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-vector-renderer.c"
               line="571">the [class@VectorSpriteSheet]</doc>
          <type name="VectorSpriteSheet" c:type="ShumateVectorSpriteSheet*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-renderer.c"
                 line="567">a [class@VectorRenderer]</doc>
            <type name="VectorRenderer" c:type="ShumateVectorRenderer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_data_source"
              c:identifier="shumate_vector_renderer_set_data_source"
              version="1.2">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-renderer.c"
             line="616">Adds a data source to the renderer.

Currently, [class@VectorRenderer] only supports one data source
and throws an error if the style does not contain exactly one
data source. However, support for multiple sources may be added
in the future, so this method accepts a name parameter. If the
name does not match the one expected by the style, this method
will have no effect.</doc>
        <source-position filename="shumate/shumate-vector-renderer.h"
                         line="48"/>
        <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"
                 filename="shumate/shumate-vector-renderer.c"
                 line="618">a [class@VectorRenderer]</doc>
            <type name="VectorRenderer" c:type="ShumateVectorRenderer*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-renderer.c"
                 line="619">the name of the data source</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="data_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-renderer.c"
                 line="620">a [class@DataSource]</doc>
            <type name="DataSource" c:type="ShumateDataSource*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_sprite_sheet"
              c:identifier="shumate_vector_renderer_set_sprite_sheet"
              glib:set-property="sprite-sheet"
              version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-renderer.c"
             line="591">Sets the sprite sheet used to render icons and textures.</doc>
        <source-position filename="shumate/shumate-vector-renderer.h"
                         line="45"/>
        <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"
                 filename="shumate/shumate-vector-renderer.c"
                 line="593">a [class@VectorRenderer]</doc>
            <type name="VectorRenderer" c:type="ShumateVectorRenderer*"/>
          </instance-parameter>
          <parameter name="sprites" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-renderer.c"
                 line="594">a [class@VectorSpriteSheet]</doc>
            <type name="VectorSpriteSheet" c:type="ShumateVectorSpriteSheet*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_sprite_sheet_data"
              c:identifier="shumate_vector_renderer_set_sprite_sheet_data"
              deprecated="1"
              deprecated-version="1.1"
              throws="1">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-renderer.c"
             line="525">Sets the sprite sheet used by the style JSON to render icons and textures.

The existing [property@VectorRenderer:sprite-sheet] property will be replaced
with a new instance of [class@VectorSpriteSheet].</doc>
        <doc-deprecated xml:space="preserve">Use the methods of [property@VectorRenderer:sprite-sheet] instead.</doc-deprecated>
        <source-position filename="shumate/shumate-vector-renderer.h"
                         line="39"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-vector-renderer.c"
               line="537">whether the sprite sheet was loaded successfully</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-renderer.c"
                 line="527">a [class@VectorRenderer]</doc>
            <type name="VectorRenderer" c:type="ShumateVectorRenderer*"/>
          </instance-parameter>
          <parameter name="sprites_pixbuf" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-renderer.c"
                 line="528">a [class@GdkPixbuf.Pixbuf]</doc>
            <type name="GdkPixbuf.Pixbuf" c:type="GdkPixbuf*"/>
          </parameter>
          <parameter name="sprites_json" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-renderer.c"
                 line="529">a JSON string</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <property name="sprite-sheet"
                version="1.1"
                writable="1"
                transfer-ownership="none"
                setter="set_sprite_sheet"
                getter="get_sprite_sheet">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-renderer.c"
             line="240">The sprite sheet used to render icons and textures.</doc>
        <type name="VectorSpriteSheet"/>
      </property>
      <property name="style-json"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="NULL">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-renderer.c"
             line="225">A map style, in [Mapbox Style Specification](https://docs.mapbox.com/mapbox-gl-js/style-spec/)
format.

Note that not all features of the specification are supported.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
    </class>
    <record name="VectorRendererClass"
            c:type="ShumateVectorRendererClass"
            glib:is-gtype-struct-for="VectorRenderer">
      <source-position filename="shumate/shumate-vector-renderer.h" line="29"/>
      <field name="parent_class">
        <type name="MapSourceClass" c:type="ShumateMapSourceClass"/>
      </field>
    </record>
    <class name="VectorSprite"
           c:symbol-prefix="vector_sprite"
           c:type="ShumateVectorSprite"
           version="1.1"
           parent="GObject.Object"
           glib:type-name="ShumateVectorSprite"
           glib:get-type="shumate_vector_sprite_get_type"
           glib:type-struct="VectorSpriteClass">
      <doc xml:space="preserve"
           filename="shumate/shumate-vector-sprite.c"
           line="20">A sprite used to draw textures or icons.

## Symbolic icons

If a sprite is created from a [iface@Gtk.SymbolicPaintable] source, such
as a symbolic icon, then when the sprite is part of a symbol layer it
will be drawn using the icon-color property (or the text color, if the
sprite is part of a formatted string).</doc>
      <source-position filename="shumate/shumate-vector-sprite.h" line="25"/>
      <implements name="Gdk.Paintable"/>
      <implements name="Gtk.SymbolicPaintable"/>
      <constructor name="new"
                   c:identifier="shumate_vector_sprite_new"
                   version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-sprite.c"
             line="67">Creates a new [class@VectorSprite] using the paintable's intrinsic size.</doc>
        <source-position filename="shumate/shumate-vector-sprite.h" line="28"/>
        <return-value transfer-ownership="full">
          <type name="VectorSprite" c:type="ShumateVectorSprite*"/>
        </return-value>
        <parameters>
          <parameter name="source_paintable" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-sprite.c"
                 line="69">a [iface@Gdk.Paintable]</doc>
            <type name="Gdk.Paintable" c:type="GdkPaintable*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_full"
                   c:identifier="shumate_vector_sprite_new_full"
                   version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-sprite.c"
             line="85">Creates a new [class@VectorSprite] with the given size, scale factor,
and area of the source paintable.</doc>
        <source-position filename="shumate/shumate-vector-sprite.h" line="29"/>
        <return-value transfer-ownership="full">
          <type name="VectorSprite" c:type="ShumateVectorSprite*"/>
        </return-value>
        <parameters>
          <parameter name="source_paintable" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-sprite.c"
                 line="87">a [iface@Gdk.Paintable]</doc>
            <type name="Gdk.Paintable" c:type="GdkPaintable*"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-sprite.c"
                 line="88">the width of the sprite in pixels</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-sprite.c"
                 line="89">the height of the sprite in pixels</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="scale_factor" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-sprite.c"
                 line="90">the intended scale factor of the sprite</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="source_rect"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-sprite.c"
                 line="91">the source rectangle of the sprite, or %NULL to use the entire paintable</doc>
            <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_height"
              c:identifier="shumate_vector_sprite_get_height"
              glib:get-property="height"
              version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-sprite.c"
             line="437">Gets the height at which the sprite should be drawn.</doc>
        <source-position filename="shumate/shumate-vector-sprite.h" line="37"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-vector-sprite.c"
               line="443">the sprite's height in pixels</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-sprite.c"
                 line="439">a [class@VectorSprite]</doc>
            <type name="VectorSprite" c:type="ShumateVectorSprite*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_scale_factor"
              c:identifier="shumate_vector_sprite_get_scale_factor"
              glib:get-property="scale-factor"
              version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-sprite.c"
             line="455">Gets the intended scale factor of the sprite.</doc>
        <source-position filename="shumate/shumate-vector-sprite.h" line="38"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-vector-sprite.c"
               line="461">the sprite's scale factor</doc>
          <type name="gdouble" c:type="double"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-sprite.c"
                 line="457">a [class@VectorSprite]</doc>
            <type name="VectorSprite" c:type="ShumateVectorSprite*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_source_paintable"
              c:identifier="shumate_vector_sprite_get_source_paintable"
              glib:get-property="source-paintable"
              version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-sprite.c"
             line="398">Gets the source [iface@Gdk.Paintable] used to draw the sprite.

Note that [class@VectorSprite] also implements [iface@Gdk.Paintable].
In most cases, you should draw the sprite rather than the original paintable.</doc>
        <source-position filename="shumate/shumate-vector-sprite.h" line="35"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-vector-sprite.c"
               line="407">the source paintable</doc>
          <type name="Gdk.Paintable" c:type="GdkPaintable*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-sprite.c"
                 line="400">a [class@VectorSprite]</doc>
            <type name="VectorSprite" c:type="ShumateVectorSprite*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_source_rect"
              c:identifier="shumate_vector_sprite_get_source_rect"
              glib:get-property="source-rect"
              version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-sprite.c"
             line="473">Gets the source rectangle of the sprite.</doc>
        <source-position filename="shumate/shumate-vector-sprite.h" line="39"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="shumate/shumate-vector-sprite.c"
               line="479">the sprite's source rectangle, or %NULL if the entire paintable is used</doc>
          <type name="Gdk.Rectangle" c:type="GdkRectangle*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-sprite.c"
                 line="475">a [class@VectorSprite]</doc>
            <type name="VectorSprite" c:type="ShumateVectorSprite*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_width"
              c:identifier="shumate_vector_sprite_get_width"
              glib:get-property="width"
              version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-sprite.c"
             line="419">Gets the width at which the sprite should be drawn.</doc>
        <source-position filename="shumate/shumate-vector-sprite.h" line="36"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-vector-sprite.c"
               line="425">the sprite's width in pixels</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-sprite.c"
                 line="421">a [class@VectorSprite]</doc>
            <type name="VectorSprite" c:type="ShumateVectorSprite*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="height"
                version="1.1"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_height"
                default-value="0">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-sprite.c"
             line="332">The height at which the sprite should be drawn, in pixels.</doc>
        <type name="gint" c:type="gint"/>
      </property>
      <property name="scale-factor"
                version="1.1"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_scale_factor"
                default-value="1.000000">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-sprite.c"
             line="346">The intended scale factor of the sprite.</doc>
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="source-paintable"
                version="1.1"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_source_paintable">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-sprite.c"
             line="304">The [iface@Gdk.Paintable] used to draw the sprite.</doc>
        <type name="Gdk.Paintable"/>
      </property>
      <property name="source-rect"
                version="1.1"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_source_rect">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-sprite.c"
             line="360">The area of the source rectangle to draw, or %NULL to use the entire paintable.</doc>
        <type name="Gdk.Rectangle"/>
      </property>
      <property name="width"
                version="1.1"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_width"
                default-value="0">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-sprite.c"
             line="318">The width at which the sprite should be drawn, in pixels.</doc>
        <type name="gint" c:type="gint"/>
      </property>
    </class>
    <record name="VectorSpriteClass"
            c:type="ShumateVectorSpriteClass"
            glib:is-gtype-struct-for="VectorSprite">
      <source-position filename="shumate/shumate-vector-sprite.h" line="25"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <callback name="VectorSpriteFallbackFunc"
              c:type="ShumateVectorSpriteFallbackFunc"
              version="1.1">
      <doc xml:space="preserve"
           filename="shumate/shumate-vector-sprite-sheet.c"
           line="63">A function to generate sprites for a [class@VectorSpriteSheet].

See [method@VectorSpriteSheet.set_fallback].</doc>
      <source-position filename="shumate/shumate-vector-sprite-sheet.h"
                       line="43"/>
      <return-value transfer-ownership="full" nullable="1">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-sprite-sheet.c"
             line="74">a [class@VectorSprite] or %NULL</doc>
        <type name="VectorSprite" c:type="ShumateVectorSprite*"/>
      </return-value>
      <parameters>
        <parameter name="sprite_sheet" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-vector-sprite-sheet.c"
               line="65">the [class@VectorSpriteSheet]</doc>
          <type name="VectorSpriteSheet" c:type="ShumateVectorSpriteSheet*"/>
        </parameter>
        <parameter name="name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-vector-sprite-sheet.c"
               line="66">the name of the sprite to generate</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="scale" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-vector-sprite-sheet.c"
               line="67">the scale factor of the sprite</doc>
          <type name="gdouble" c:type="double"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="3">
          <doc xml:space="preserve"
               filename="shumate/shumate-vector-sprite-sheet.c"
               line="68">user data passed to [method@VectorSpriteSheet.set_fallback]</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <class name="VectorSpriteSheet"
           c:symbol-prefix="vector_sprite_sheet"
           c:type="ShumateVectorSpriteSheet"
           version="1.1"
           parent="GObject.Object"
           final="1"
           glib:type-name="ShumateVectorSpriteSheet"
           glib:get-type="shumate_vector_sprite_sheet_get_type"
           glib:type-struct="VectorSpriteSheetClass">
      <doc xml:space="preserve"
           filename="shumate/shumate-vector-sprite-sheet.c"
           line="26">A collection of [class@VectorSprite]s.

Sprites are used as icons in symbols or as the pattern for a fill layer.

Most MapLibre stylesheets provide their spritesheet as a PNG image and a JSON
description of the sprites. This spritesheet can be added using
[method@VectorSpriteSheet.add_page]. Sprites can also be added individually
using [method@VectorSpriteSheet.add_sprite].

Some map styles rely on application code to provide some or all of their
sprites. This is supported using a fallback function, which can be set using
[method@VectorSpriteSheet.set_fallback]. This function can generate sprites
on demand. For example, it could load a symbolic icon from the [class@Gtk.IconTheme]
or render a custom highway shield.

## HiDPI support

Map styles should provide a double resolution spritesheet for high DPI
displays. That spritesheet can be added as a separate page.
The [class@VectorSpriteSheet] will pick the best sprites for the display's
scale factor.

If a fallback function is set, it receives the requested scale factor
as an argument. It should use this to generate the sprite at the correct size.
For example, if the scale factor is 2, the image should be twice as large
(but the *sprite's* width and height should be the same).

## Thread Safety

[class@VectorSpriteSheet] is thread safe.</doc>
      <source-position filename="shumate/shumate-vector-sprite-sheet.h"
                       line="26"/>
      <constructor name="new"
                   c:identifier="shumate_vector_sprite_sheet_new"
                   version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-sprite-sheet.c"
             line="99">Creates a new, empty [class@VectorSpriteSheet].</doc>
        <source-position filename="shumate/shumate-vector-sprite-sheet.h"
                         line="28"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="shumate/shumate-vector-sprite-sheet.c"
               line="104">a new [class@VectorSpriteSheet]</doc>
          <type name="VectorSpriteSheet" c:type="ShumateVectorSpriteSheet*"/>
        </return-value>
      </constructor>
      <method name="add_page"
              c:identifier="shumate_vector_sprite_sheet_add_page"
              version="1.1"
              throws="1">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-sprite-sheet.c"
             line="181">Adds a page to the spritesheet.

See &lt;https://maplibre.org/maplibre-gl-js-docs/style-spec/sprite/&gt; for
details about the spritesheet format. Most stylesheets provide these files
along with the main style JSON.

Map styles should provide a double resolution spritesheet for high DPI
displays. That spritesheet should be added as its own page, with a
@default_scale of 2.</doc>
        <source-position filename="shumate/shumate-vector-sprite-sheet.h"
                         line="33"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-vector-sprite-sheet.c"
               line="199">%TRUE if the page was added successfully, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-sprite-sheet.c"
                 line="183">a [class@VectorSpriteSheet]</doc>
            <type name="VectorSpriteSheet" c:type="ShumateVectorSpriteSheet*"/>
          </instance-parameter>
          <parameter name="texture" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-sprite-sheet.c"
                 line="184">a [class@Gdk.Texture]</doc>
            <type name="Gdk.Texture" c:type="GdkTexture*"/>
          </parameter>
          <parameter name="json" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-sprite-sheet.c"
                 line="185">a JSON string</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="default_scale" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-sprite-sheet.c"
                 line="186">the default scale factor of the page</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_sprite"
              c:identifier="shumate_vector_sprite_sheet_add_sprite"
              version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-sprite-sheet.c"
             line="147">Adds a sprite to the spritesheet.</doc>
        <source-position filename="shumate/shumate-vector-sprite-sheet.h"
                         line="30"/>
        <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"
                 filename="shumate/shumate-vector-sprite-sheet.c"
                 line="149">a [class@VectorSpriteSheet]</doc>
            <type name="VectorSpriteSheet" c:type="ShumateVectorSpriteSheet*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-sprite-sheet.c"
                 line="150">the name of the sprite</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="sprite" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-sprite-sheet.c"
                 line="151">a [class@VectorSprite]</doc>
            <type name="VectorSprite" c:type="ShumateVectorSprite*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_sprite"
              c:identifier="shumate_vector_sprite_sheet_get_sprite"
              version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-sprite-sheet.c"
             line="322">Gets a sprite from the spritesheet.

The returned sprite might not be at the requested scale factor if an exact
match is not found.</doc>
        <source-position filename="shumate/shumate-vector-sprite-sheet.h"
                         line="39"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="shumate/shumate-vector-sprite-sheet.c"
               line="333">a [class@VectorSprite], or %NULL if the
icon does not exist.</doc>
          <type name="VectorSprite" c:type="ShumateVectorSprite*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-sprite-sheet.c"
                 line="324">a [class@VectorSpriteSheet]</doc>
            <type name="VectorSpriteSheet" c:type="ShumateVectorSpriteSheet*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-sprite-sheet.c"
                 line="325">an icon name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="scale" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-sprite-sheet.c"
                 line="326">the scale factor of the icon</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_fallback"
              c:identifier="shumate_vector_sprite_sheet_set_fallback"
              version="1.1">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-sprite-sheet.c"
             line="400">Sets a fallback function to generate sprites.

The fallback function is called when a texture is not found in the sprite
sheet. It receives the icon name and scale factor, and should return a
[class@VectorSprite], or %NULL if the icon could not be generated.
It may be called in a different thread, and it may be called multiple times
for the same icon name.

If a previous fallback function was set, it will be replaced and any sprites
it generated will be cleared.

@fallback may be %NULL to clear the fallback function.</doc>
        <source-position filename="shumate/shumate-vector-sprite-sheet.h"
                         line="48"/>
        <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"
                 filename="shumate/shumate-vector-sprite-sheet.c"
                 line="402">a [class@VectorSpriteSheet]</doc>
            <type name="VectorSpriteSheet" c:type="ShumateVectorSpriteSheet*"/>
          </instance-parameter>
          <parameter name="fallback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="notified"
                     closure="1"
                     destroy="2">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-sprite-sheet.c"
                 line="403">a [callback@ShumateVectorSpriteFallbackFunc] or %NULL</doc>
            <type name="VectorSpriteFallbackFunc"
                  c:type="ShumateVectorSpriteFallbackFunc"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-sprite-sheet.c"
                 line="404">user data to pass to @fallback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="notify" transfer-ownership="none" scope="async">
            <doc xml:space="preserve"
                 filename="shumate/shumate-vector-sprite-sheet.c"
                 line="405">a [callback@GLib.DestroyNotify] for @user_data</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
    </class>
    <record name="VectorSpriteSheetClass"
            c:type="ShumateVectorSpriteSheetClass"
            glib:is-gtype-struct-for="VectorSpriteSheet">
      <source-position filename="shumate/shumate-vector-sprite-sheet.h"
                       line="26"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="Viewport"
           c:symbol-prefix="viewport"
           c:type="ShumateViewport"
           parent="GObject.Object"
           glib:type-name="ShumateViewport"
           glib:get-type="shumate_viewport_get_type"
           glib:type-struct="ViewportClass">
      <doc xml:space="preserve"
           filename="shumate/shumate-viewport.c"
           line="30">The object holding the coordinate, zoom-level, and rotation state of the current view.

As the object implements [iface@Shumate.Location], the latitude and longitude are
accessible via the interface methods.</doc>
      <source-position filename="shumate/shumate-viewport.h" line="36"/>
      <implements name="Location"/>
      <constructor name="new" c:identifier="shumate_viewport_new">
        <doc xml:space="preserve"
             filename="shumate/shumate-viewport.c"
             line="312">Creates a new #ShumateViewport</doc>
        <source-position filename="shumate/shumate-viewport.h" line="38"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="shumate/shumate-viewport.c"
               line="317">A new #ShumateViewport</doc>
          <type name="Viewport" c:type="ShumateViewport*"/>
        </return-value>
      </constructor>
      <method name="get_max_zoom_level"
              c:identifier="shumate_viewport_get_max_zoom_level"
              glib:get-property="max-zoom-level">
        <doc xml:space="preserve"
             filename="shumate/shumate-viewport.c"
             line="387">Get the maximal zoom level</doc>
        <source-position filename="shumate/shumate-viewport.h" line="46"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-viewport.c"
               line="393">the maximal zoom level</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-viewport.c"
                 line="389">a #ShumateViewport</doc>
            <type name="Viewport" c:type="ShumateViewport*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_min_zoom_level"
              c:identifier="shumate_viewport_get_min_zoom_level"
              glib:get-property="min-zoom-level">
        <doc xml:space="preserve"
             filename="shumate/shumate-viewport.c"
             line="427">Get the minimal zoom level</doc>
        <source-position filename="shumate/shumate-viewport.h" line="50"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-viewport.c"
               line="433">the minimal zoom level</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-viewport.c"
                 line="429">a #ShumateViewport</doc>
            <type name="Viewport" c:type="ShumateViewport*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_reference_map_source"
              c:identifier="shumate_viewport_get_reference_map_source"
              glib:get-property="reference-map-source">
        <doc xml:space="preserve"
             filename="shumate/shumate-viewport.c"
             line="470">Get the reference map source</doc>
        <source-position filename="shumate/shumate-viewport.h" line="54"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="shumate/shumate-viewport.c"
               line="476">the reference #ShumateMapSource or %NULL
when none has been set.</doc>
          <type name="MapSource" c:type="ShumateMapSource*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-viewport.c"
                 line="472">a #ShumateViewport</doc>
            <type name="Viewport" c:type="ShumateViewport*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_rotation"
              c:identifier="shumate_viewport_get_rotation"
              glib:get-property="rotation">
        <doc xml:space="preserve"
             filename="shumate/shumate-viewport.c"
             line="511">Gets the current rotation</doc>
        <source-position filename="shumate/shumate-viewport.h" line="58"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-viewport.c"
               line="517">the current rotation</doc>
          <type name="gdouble" c:type="double"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-viewport.c"
                 line="513">a #ShumateViewport</doc>
            <type name="Viewport" c:type="ShumateViewport*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_zoom_level"
              c:identifier="shumate_viewport_get_zoom_level"
              glib:get-property="zoom-level">
        <doc xml:space="preserve"
             filename="shumate/shumate-viewport.c"
             line="347">Get the current zoom level</doc>
        <source-position filename="shumate/shumate-viewport.h" line="42"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="shumate/shumate-viewport.c"
               line="353">the current zoom level</doc>
          <type name="gdouble" c:type="double"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-viewport.c"
                 line="349">a #ShumateViewport</doc>
            <type name="Viewport" c:type="ShumateViewport*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="location_to_widget_coords"
              c:identifier="shumate_viewport_location_to_widget_coords">
        <doc xml:space="preserve"
             filename="shumate/shumate-viewport.c"
             line="600">Gets the position on @widget that correspond to the given latitude and
longitude.</doc>
        <source-position filename="shumate/shumate-viewport.h" line="66"/>
        <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"
                 filename="shumate/shumate-viewport.c"
                 line="602">a #ShumateViewport</doc>
            <type name="Viewport" c:type="ShumateViewport*"/>
          </instance-parameter>
          <parameter name="widget" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-viewport.c"
                 line="603">a #GtkWidget that uses @self as viewport</doc>
            <type name="Gtk.Widget" c:type="GtkWidget*"/>
          </parameter>
          <parameter name="latitude" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-viewport.c"
                 line="604">the latitude</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="longitude" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-viewport.c"
                 line="605">the longitude</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="x"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="shumate/shumate-viewport.c"
                 line="606">return value for the x coordinate</doc>
            <type name="gdouble" c:type="double*"/>
          </parameter>
          <parameter name="y"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="shumate/shumate-viewport.c"
                 line="607">return value for the y coordinate</doc>
            <type name="gdouble" c:type="double*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_max_zoom_level"
              c:identifier="shumate_viewport_set_max_zoom_level"
              glib:set-property="max-zoom-level">
        <doc xml:space="preserve"
             filename="shumate/shumate-viewport.c"
             line="363">Set the maximal zoom level</doc>
        <source-position filename="shumate/shumate-viewport.h" line="44"/>
        <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"
                 filename="shumate/shumate-viewport.c"
                 line="365">a #ShumateViewport</doc>
            <type name="Viewport" c:type="ShumateViewport*"/>
          </instance-parameter>
          <parameter name="max_zoom_level" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-viewport.c"
                 line="366">the maximal zoom level</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_min_zoom_level"
              c:identifier="shumate_viewport_set_min_zoom_level"
              glib:set-property="min-zoom-level">
        <doc xml:space="preserve"
             filename="shumate/shumate-viewport.c"
             line="403">Set the minimal zoom level</doc>
        <source-position filename="shumate/shumate-viewport.h" line="48"/>
        <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"
                 filename="shumate/shumate-viewport.c"
                 line="405">a #ShumateViewport</doc>
            <type name="Viewport" c:type="ShumateViewport*"/>
          </instance-parameter>
          <parameter name="min_zoom_level" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-viewport.c"
                 line="406">the minimal zoom level</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_reference_map_source"
              c:identifier="shumate_viewport_set_reference_map_source"
              glib:set-property="reference-map-source">
        <doc xml:space="preserve"
             filename="shumate/shumate-viewport.c"
             line="443">Set the reference map source</doc>
        <source-position filename="shumate/shumate-viewport.h" line="52"/>
        <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"
                 filename="shumate/shumate-viewport.c"
                 line="445">a #ShumateViewport</doc>
            <type name="Viewport" c:type="ShumateViewport*"/>
          </instance-parameter>
          <parameter name="map_source"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="shumate/shumate-viewport.c"
                 line="446">a #ShumateMapSource or %NULL to set none.</doc>
            <type name="MapSource" c:type="ShumateMapSource*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_rotation"
              c:identifier="shumate_viewport_set_rotation"
              glib:set-property="rotation">
        <doc xml:space="preserve"
             filename="shumate/shumate-viewport.c"
             line="487">Sets the rotation</doc>
        <source-position filename="shumate/shumate-viewport.h" line="56"/>
        <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"
                 filename="shumate/shumate-viewport.c"
                 line="489">a #ShumateViewport</doc>
            <type name="Viewport" c:type="ShumateViewport*"/>
          </instance-parameter>
          <parameter name="rotation" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-viewport.c"
                 line="490">the rotation</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_zoom_level"
              c:identifier="shumate_viewport_set_zoom_level"
              glib:set-property="zoom-level">
        <doc xml:space="preserve"
             filename="shumate/shumate-viewport.c"
             line="325">Set the zoom level</doc>
        <source-position filename="shumate/shumate-viewport.h" line="40"/>
        <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"
                 filename="shumate/shumate-viewport.c"
                 line="327">a #ShumateViewport</doc>
            <type name="Viewport" c:type="ShumateViewport*"/>
          </instance-parameter>
          <parameter name="zoom_level" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-viewport.c"
                 line="328">the zoom level</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </method>
      <method name="widget_coords_to_location"
              c:identifier="shumate_viewport_widget_coords_to_location">
        <doc xml:space="preserve"
             filename="shumate/shumate-viewport.c"
             line="547">Gets the latitude and longitude corresponding to a position on @widget.</doc>
        <source-position filename="shumate/shumate-viewport.h" line="60"/>
        <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"
                 filename="shumate/shumate-viewport.c"
                 line="549">a #ShumateViewport</doc>
            <type name="Viewport" c:type="ShumateViewport*"/>
          </instance-parameter>
          <parameter name="widget" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-viewport.c"
                 line="550">a #GtkWidget that uses @self as viewport</doc>
            <type name="Gtk.Widget" c:type="GtkWidget*"/>
          </parameter>
          <parameter name="x" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-viewport.c"
                 line="551">the x coordinate</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="y" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="shumate/shumate-viewport.c"
                 line="552">the y coordinate</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
          <parameter name="latitude"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="shumate/shumate-viewport.c"
                 line="553">return location for the latitude</doc>
            <type name="gdouble" c:type="double*"/>
          </parameter>
          <parameter name="longitude"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="shumate/shumate-viewport.c"
                 line="554">return location for the longitude</doc>
            <type name="gdouble" c:type="double*"/>
          </parameter>
        </parameters>
      </method>
      <property name="max-zoom-level"
                writable="1"
                transfer-ownership="none"
                setter="set_max_zoom_level"
                getter="get_max_zoom_level"
                default-value="20">
        <doc xml:space="preserve"
             filename="shumate/shumate-viewport.c"
             line="246">The highest allowed level of zoom of the content.</doc>
        <type name="guint" c:type="guint"/>
      </property>
      <property name="min-zoom-level"
                writable="1"
                transfer-ownership="none"
                setter="set_min_zoom_level"
                getter="get_min_zoom_level"
                default-value="0">
        <doc xml:space="preserve"
             filename="shumate/shumate-viewport.c"
             line="234">The lowest allowed level of zoom of the content.</doc>
        <type name="guint" c:type="guint"/>
      </property>
      <property name="reference-map-source"
                writable="1"
                transfer-ownership="none"
                setter="set_reference_map_source"
                getter="get_reference_map_source">
        <doc xml:space="preserve"
             filename="shumate/shumate-viewport.c"
             line="258">The reference #ShumateMapSource being displayed</doc>
        <type name="MapSource"/>
      </property>
      <property name="rotation"
                writable="1"
                transfer-ownership="none"
                setter="set_rotation"
                getter="get_rotation"
                default-value="0.000000">
        <doc xml:space="preserve"
             filename="shumate/shumate-viewport.c"
             line="270">The rotation of the map view, in radians clockwise from up being due north</doc>
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="zoom-level"
                writable="1"
                transfer-ownership="none"
                setter="set_zoom_level"
                getter="get_zoom_level"
                default-value="3.000000">
        <doc xml:space="preserve"
             filename="shumate/shumate-viewport.c"
             line="222">The level of zoom of the content.</doc>
        <type name="gdouble" c:type="gdouble"/>
      </property>
    </class>
    <record name="ViewportClass"
            c:type="ShumateViewportClass"
            glib:is-gtype-struct-for="Viewport">
      <source-position filename="shumate/shumate-viewport.h" line="36"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <function name="file_cache_error_quark"
              c:identifier="shumate_file_cache_error_quark"
              moved-to="FileCacheError.quark">
      <doc xml:space="preserve"
           filename="shumate/shumate-file-cache.c"
           line="1101">Gets the #ShumateFileCache error quark.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="shumate/shumate-file-cache.c"
             line="1106">a #GQuark</doc>
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="get_user_agent" c:identifier="shumate_get_user_agent">
      <doc xml:space="preserve"
           filename="shumate/shumate-user-agent.c"
           line="27">Gets the user agent libshumate will use for all requests.

This API is not thread-safe and should only be called from the main thread.</doc>
      <source-position filename="shumate/shumate-user-agent.h" line="20"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="shumate/shumate-user-agent.c"
             line="34">the user agent</doc>
        <type name="utf8" c:type="const char*"/>
      </return-value>
    </function>
    <function name="set_user_agent" c:identifier="shumate_set_user_agent">
      <doc xml:space="preserve"
           filename="shumate/shumate-user-agent.c"
           line="46">Sets the user agent that libshumate uses for all requests.

This API is not thread-safe and should only be called from the main thread.</doc>
      <source-position filename="shumate/shumate-user-agent.h" line="21"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="new_user_agent"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="shumate/shumate-user-agent.c"
               line="48">the new user agent, or %NULL to reset to the default</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <docsection name="shumate-version">
      <doc xml:space="preserve"
           filename="shumate/shumate-version.h"
           line="26">Shumate offers a set of macros for checking the version of the library
an application was linked to.</doc>
    </docsection>
    <function name="style_error_quark"
              c:identifier="shumate_style_error_quark"
              moved-to="StyleError.quark">
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="shumate/shumate-vector-renderer.c"
             line="1008">a #GQuark</doc>
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="tile_downloader_error_quark"
              c:identifier="shumate_tile_downloader_error_quark"
              moved-to="TileDownloaderError.quark">
      <doc xml:space="preserve"
           filename="shumate/shumate-tile-downloader.c"
           line="570">Gets the #ShumateTileDownloader error quark.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="shumate/shumate-tile-downloader.c"
             line="575">a #GQuark</doc>
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
  </namespace>
</repository>
