Skip to main content

libshumate_sys/
lib.rs

1// Generated by gir (https://github.com/gtk-rs/gir @ 36917718ae60)
2// from
3// from gir-files (https://github.com/gtk-rs/gir-files @ 6cef10cd64df)
4// DO NOT EDIT
5
6#![allow(non_camel_case_types, non_upper_case_globals, non_snake_case)]
7#![allow(
8    clippy::approx_constant,
9    clippy::type_complexity,
10    clippy::unreadable_literal,
11    clippy::upper_case_acronyms
12)]
13#![cfg_attr(docsrs, feature(doc_cfg))]
14
15use gdk_pixbuf_sys as gdk_pixbuf;
16use gdk_sys as gdk;
17use gio_sys as gio;
18use glib_sys as glib;
19use gobject_sys as gobject;
20use gtk_sys as gtk;
21
22#[allow(unused_imports)]
23use libc::{FILE, intptr_t, off_t, size_t, ssize_t, time_t, uintptr_t};
24#[cfg(unix)]
25#[allow(unused_imports)]
26use libc::{dev_t, gid_t, pid_t, socklen_t, uid_t};
27#[allow(unused_imports)]
28use std::ffi::{
29    c_char, c_double, c_float, c_int, c_long, c_short, c_uchar, c_uint, c_ulong, c_ushort, c_void,
30};
31
32#[allow(unused_imports)]
33use glib::{GType, gboolean, gconstpointer, gpointer};
34
35// Enums
36pub type ShumateFileCacheError = c_int;
37pub const SHUMATE_FILE_CACHE_ERROR_FAILED: ShumateFileCacheError = 0;
38
39pub type ShumateGeometryType = c_int;
40pub const SHUMATE_GEOMETRY_TYPE_UNKNOWN: ShumateGeometryType = 0;
41pub const SHUMATE_GEOMETRY_TYPE_POINT: ShumateGeometryType = 1;
42pub const SHUMATE_GEOMETRY_TYPE_MULTIPOINT: ShumateGeometryType = 2;
43pub const SHUMATE_GEOMETRY_TYPE_LINESTRING: ShumateGeometryType = 3;
44pub const SHUMATE_GEOMETRY_TYPE_MULTILINESTRING: ShumateGeometryType = 4;
45pub const SHUMATE_GEOMETRY_TYPE_POLYGON: ShumateGeometryType = 5;
46pub const SHUMATE_GEOMETRY_TYPE_MULTIPOLYGON: ShumateGeometryType = 6;
47
48pub type ShumateMapProjection = c_int;
49pub const SHUMATE_MAP_PROJECTION_MERCATOR: ShumateMapProjection = 0;
50
51pub type ShumateState = c_int;
52pub const SHUMATE_STATE_NONE: ShumateState = 0;
53pub const SHUMATE_STATE_LOADING: ShumateState = 1;
54pub const SHUMATE_STATE_LOADED: ShumateState = 2;
55pub const SHUMATE_STATE_DONE: ShumateState = 3;
56
57pub type ShumateStyleError = c_int;
58pub const SHUMATE_STYLE_ERROR_FAILED: ShumateStyleError = 0;
59pub const SHUMATE_STYLE_ERROR_MALFORMED_STYLE: ShumateStyleError = 1;
60pub const SHUMATE_STYLE_ERROR_UNSUPPORTED_LAYER: ShumateStyleError = 2;
61pub const SHUMATE_STYLE_ERROR_INVALID_EXPRESSION: ShumateStyleError = 3;
62pub const SHUMATE_STYLE_ERROR_SUPPORT_OMITTED: ShumateStyleError = 4;
63pub const SHUMATE_STYLE_ERROR_UNSUPPORTED: ShumateStyleError = 5;
64
65pub type ShumateTileDownloaderError = c_int;
66pub const SHUMATE_TILE_DOWNLOADER_ERROR_FAILED: ShumateTileDownloaderError = 0;
67pub const SHUMATE_TILE_DOWNLOADER_ERROR_BAD_RESPONSE: ShumateTileDownloaderError = 1;
68pub const SHUMATE_TILE_DOWNLOADER_ERROR_COULD_NOT_CONNECT: ShumateTileDownloaderError = 2;
69pub const SHUMATE_TILE_DOWNLOADER_ERROR_MALFORMED_URL: ShumateTileDownloaderError = 3;
70pub const SHUMATE_TILE_DOWNLOADER_ERROR_OFFLINE: ShumateTileDownloaderError = 4;
71
72pub type ShumateUnit = c_int;
73pub const SHUMATE_UNIT_BOTH: ShumateUnit = 0;
74pub const SHUMATE_UNIT_METRIC: ShumateUnit = 1;
75pub const SHUMATE_UNIT_IMPERIAL: ShumateUnit = 2;
76
77pub type ShumateVectorValueType = c_int;
78pub const SHUMATE_VECTOR_VALUE_TYPE_NULL: ShumateVectorValueType = 0;
79pub const SHUMATE_VECTOR_VALUE_TYPE_NUMBER: ShumateVectorValueType = 1;
80pub const SHUMATE_VECTOR_VALUE_TYPE_BOOLEAN: ShumateVectorValueType = 2;
81pub const SHUMATE_VECTOR_VALUE_TYPE_STRING: ShumateVectorValueType = 3;
82pub const SHUMATE_VECTOR_VALUE_TYPE_COLOR: ShumateVectorValueType = 4;
83pub const SHUMATE_VECTOR_VALUE_TYPE_ARRAY: ShumateVectorValueType = 5;
84pub const SHUMATE_VECTOR_VALUE_TYPE_RESOLVED_IMAGE: ShumateVectorValueType = 6;
85pub const SHUMATE_VECTOR_VALUE_TYPE_FORMATTED_STRING: ShumateVectorValueType = 7;
86pub const SHUMATE_VECTOR_VALUE_TYPE_COLLATOR: ShumateVectorValueType = 8;
87
88// Constants
89pub const SHUMATE_MAJOR_VERSION: c_int = 1;
90pub const SHUMATE_MAP_SOURCE_MFF_RELIEF: &[u8] = b"mff-relief\0";
91pub const SHUMATE_MAP_SOURCE_OSM_CYCLE_MAP: &[u8] = b"osm-cyclemap\0";
92pub const SHUMATE_MAP_SOURCE_OSM_MAPNIK: &[u8] = b"osm-mapnik\0";
93pub const SHUMATE_MAP_SOURCE_OSM_TRANSPORT_MAP: &[u8] = b"osm-transportmap\0";
94pub const SHUMATE_MAP_SOURCE_OWM_CLOUDS: &[u8] = b"owm-clouds\0";
95pub const SHUMATE_MAP_SOURCE_OWM_PRECIPITATION: &[u8] = b"owm-precipitation\0";
96pub const SHUMATE_MAP_SOURCE_OWM_PRESSURE: &[u8] = b"owm-pressure\0";
97pub const SHUMATE_MAP_SOURCE_OWM_TEMPERATURE: &[u8] = b"owm-temperature\0";
98pub const SHUMATE_MAP_SOURCE_OWM_WIND: &[u8] = b"owm-wind\0";
99pub const SHUMATE_MAX_LATITUDE: c_double = 85.0511287798;
100pub const SHUMATE_MAX_LONGITUDE: c_double = 180.0;
101pub const SHUMATE_MIN_LATITUDE: c_double = -85.0511287798;
102pub const SHUMATE_MIN_LONGITUDE: c_double = -180.0;
103
104// Callbacks
105pub type ShumateVectorSpriteFallbackFunc = Option<
106    unsafe extern "C" fn(
107        *mut ShumateVectorSpriteSheet,
108        *const c_char,
109        c_double,
110        gpointer,
111    ) -> *mut ShumateVectorSprite,
112>;
113
114// Records
115#[derive(Copy, Clone)]
116#[repr(C)]
117pub struct ShumateCompassClass {
118    pub parent_class: gtk::GtkWidgetClass,
119}
120
121impl ::std::fmt::Debug for ShumateCompassClass {
122    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
123        f.debug_struct(&format!("ShumateCompassClass @ {self:p}"))
124            .field("parent_class", &self.parent_class)
125            .finish()
126    }
127}
128
129#[derive(Copy, Clone)]
130#[repr(C)]
131pub struct ShumateCoordinateClass {
132    pub parent_class: gobject::GInitiallyUnownedClass,
133    pub padding: [gpointer; 16],
134}
135
136impl ::std::fmt::Debug for ShumateCoordinateClass {
137    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
138        f.debug_struct(&format!("ShumateCoordinateClass @ {self:p}"))
139            .field("parent_class", &self.parent_class)
140            .finish()
141    }
142}
143
144#[derive(Copy, Clone)]
145#[repr(C)]
146pub struct ShumateDataSourceClass {
147    pub parent_class: gobject::GObjectClass,
148    pub get_tile_data_async: Option<
149        unsafe extern "C" fn(
150            *mut ShumateDataSource,
151            c_int,
152            c_int,
153            c_int,
154            *mut gio::GCancellable,
155            gio::GAsyncReadyCallback,
156            gpointer,
157        ),
158    >,
159    pub get_tile_data_finish: Option<
160        unsafe extern "C" fn(
161            *mut ShumateDataSource,
162            *mut gio::GAsyncResult,
163            *mut *mut glib::GError,
164        ) -> *mut glib::GBytes,
165    >,
166    pub start_request: Option<
167        unsafe extern "C" fn(
168            *mut ShumateDataSource,
169            c_int,
170            c_int,
171            c_int,
172            *mut gio::GCancellable,
173        ) -> *mut ShumateDataSourceRequest,
174    >,
175    pub padding: [gpointer; 15],
176}
177
178impl ::std::fmt::Debug for ShumateDataSourceClass {
179    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
180        f.debug_struct(&format!("ShumateDataSourceClass @ {self:p}"))
181            .field("parent_class", &self.parent_class)
182            .field("get_tile_data_async", &self.get_tile_data_async)
183            .field("get_tile_data_finish", &self.get_tile_data_finish)
184            .field("start_request", &self.start_request)
185            .finish()
186    }
187}
188
189#[derive(Copy, Clone)]
190#[repr(C)]
191pub struct ShumateDataSourceRequestClass {
192    pub parent_class: gobject::GObjectClass,
193    pub padding: [gpointer; 16],
194}
195
196impl ::std::fmt::Debug for ShumateDataSourceRequestClass {
197    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
198        f.debug_struct(&format!("ShumateDataSourceRequestClass @ {self:p}"))
199            .field("parent_class", &self.parent_class)
200            .finish()
201    }
202}
203
204#[derive(Copy, Clone)]
205#[repr(C)]
206pub struct ShumateFileCacheClass {
207    pub parent_class: gobject::GObjectClass,
208}
209
210impl ::std::fmt::Debug for ShumateFileCacheClass {
211    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
212        f.debug_struct(&format!("ShumateFileCacheClass @ {self:p}"))
213            .field("parent_class", &self.parent_class)
214            .finish()
215    }
216}
217
218#[derive(Copy, Clone)]
219#[repr(C)]
220pub struct ShumateLayerClass {
221    pub parent_class: gtk::GtkWidgetClass,
222    pub get_debug_text: Option<unsafe extern "C" fn(*mut ShumateLayer) -> *mut c_char>,
223    pub padding: [gpointer; 15],
224}
225
226impl ::std::fmt::Debug for ShumateLayerClass {
227    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
228        f.debug_struct(&format!("ShumateLayerClass @ {self:p}"))
229            .field("parent_class", &self.parent_class)
230            .field("get_debug_text", &self.get_debug_text)
231            .finish()
232    }
233}
234
235#[derive(Copy, Clone)]
236#[repr(C)]
237pub struct ShumateLicenseClass {
238    pub parent_class: gtk::GtkWidgetClass,
239}
240
241impl ::std::fmt::Debug for ShumateLicenseClass {
242    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
243        f.debug_struct(&format!("ShumateLicenseClass @ {self:p}"))
244            .field("parent_class", &self.parent_class)
245            .finish()
246    }
247}
248
249#[derive(Copy, Clone)]
250#[repr(C)]
251pub struct ShumateLocationInterface {
252    pub g_iface: gobject::GTypeInterface,
253    pub get_latitude: Option<unsafe extern "C" fn(*mut ShumateLocation) -> c_double>,
254    pub get_longitude: Option<unsafe extern "C" fn(*mut ShumateLocation) -> c_double>,
255    pub set_location: Option<unsafe extern "C" fn(*mut ShumateLocation, c_double, c_double)>,
256}
257
258impl ::std::fmt::Debug for ShumateLocationInterface {
259    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
260        f.debug_struct(&format!("ShumateLocationInterface @ {self:p}"))
261            .field("get_latitude", &self.get_latitude)
262            .field("get_longitude", &self.get_longitude)
263            .field("set_location", &self.set_location)
264            .finish()
265    }
266}
267
268#[derive(Copy, Clone)]
269#[repr(C)]
270pub struct ShumateMapClass {
271    pub parent_class: gtk::GtkWidgetClass,
272}
273
274impl ::std::fmt::Debug for ShumateMapClass {
275    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
276        f.debug_struct(&format!("ShumateMapClass @ {self:p}"))
277            .field("parent_class", &self.parent_class)
278            .finish()
279    }
280}
281
282#[derive(Copy, Clone)]
283#[repr(C)]
284pub struct ShumateMapLayerClass {
285    pub parent_class: ShumateLayerClass,
286}
287
288impl ::std::fmt::Debug for ShumateMapLayerClass {
289    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
290        f.debug_struct(&format!("ShumateMapLayerClass @ {self:p}"))
291            .field("parent_class", &self.parent_class)
292            .finish()
293    }
294}
295
296#[derive(Copy, Clone)]
297#[repr(C)]
298pub struct ShumateMapSourceClass {
299    pub parent_class: gobject::GObjectClass,
300    pub fill_tile_async: Option<
301        unsafe extern "C" fn(
302            *mut ShumateMapSource,
303            *mut ShumateTile,
304            *mut gio::GCancellable,
305            gio::GAsyncReadyCallback,
306            gpointer,
307        ),
308    >,
309    pub fill_tile_finish: Option<
310        unsafe extern "C" fn(
311            *mut ShumateMapSource,
312            *mut gio::GAsyncResult,
313            *mut *mut glib::GError,
314        ) -> gboolean,
315    >,
316    pub padding: [gpointer; 16],
317}
318
319impl ::std::fmt::Debug for ShumateMapSourceClass {
320    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
321        f.debug_struct(&format!("ShumateMapSourceClass @ {self:p}"))
322            .field("parent_class", &self.parent_class)
323            .field("fill_tile_async", &self.fill_tile_async)
324            .field("fill_tile_finish", &self.fill_tile_finish)
325            .finish()
326    }
327}
328
329#[derive(Copy, Clone)]
330#[repr(C)]
331pub struct ShumateMapSourceRegistryClass {
332    pub parent_class: gobject::GObjectClass,
333}
334
335impl ::std::fmt::Debug for ShumateMapSourceRegistryClass {
336    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
337        f.debug_struct(&format!("ShumateMapSourceRegistryClass @ {self:p}"))
338            .field("parent_class", &self.parent_class)
339            .finish()
340    }
341}
342
343#[derive(Copy, Clone)]
344#[repr(C)]
345pub struct ShumateMarkerClass {
346    pub parent_class: gtk::GtkWidgetClass,
347    pub padding: [gpointer; 16],
348}
349
350impl ::std::fmt::Debug for ShumateMarkerClass {
351    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
352        f.debug_struct(&format!("ShumateMarkerClass @ {self:p}"))
353            .field("parent_class", &self.parent_class)
354            .finish()
355    }
356}
357
358#[derive(Copy, Clone)]
359#[repr(C)]
360pub struct ShumateMarkerLayerClass {
361    pub parent_class: ShumateLayerClass,
362}
363
364impl ::std::fmt::Debug for ShumateMarkerLayerClass {
365    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
366        f.debug_struct(&format!("ShumateMarkerLayerClass @ {self:p}"))
367            .field("parent_class", &self.parent_class)
368            .finish()
369    }
370}
371
372#[derive(Copy, Clone)]
373#[repr(C)]
374pub struct ShumatePathLayerClass {
375    pub parent_class: ShumateLayerClass,
376}
377
378impl ::std::fmt::Debug for ShumatePathLayerClass {
379    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
380        f.debug_struct(&format!("ShumatePathLayerClass @ {self:p}"))
381            .field("parent_class", &self.parent_class)
382            .finish()
383    }
384}
385
386#[derive(Copy, Clone)]
387#[repr(C)]
388pub struct ShumatePointClass {
389    pub parent_class: ShumateMarkerClass,
390}
391
392impl ::std::fmt::Debug for ShumatePointClass {
393    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
394        f.debug_struct(&format!("ShumatePointClass @ {self:p}"))
395            .field("parent_class", &self.parent_class)
396            .finish()
397    }
398}
399
400#[derive(Copy, Clone)]
401#[repr(C)]
402pub struct ShumateRasterRendererClass {
403    pub parent_class: ShumateMapSourceClass,
404}
405
406impl ::std::fmt::Debug for ShumateRasterRendererClass {
407    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
408        f.debug_struct(&format!("ShumateRasterRendererClass @ {self:p}"))
409            .field("parent_class", &self.parent_class)
410            .finish()
411    }
412}
413
414#[derive(Copy, Clone)]
415#[repr(C)]
416pub struct ShumateScaleClass {
417    pub parent_class: gtk::GtkWidgetClass,
418}
419
420impl ::std::fmt::Debug for ShumateScaleClass {
421    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
422        f.debug_struct(&format!("ShumateScaleClass @ {self:p}"))
423            .field("parent_class", &self.parent_class)
424            .finish()
425    }
426}
427
428#[derive(Copy, Clone)]
429#[repr(C)]
430pub struct ShumateSimpleMapClass {
431    pub parent_class: gtk::GtkWidgetClass,
432}
433
434impl ::std::fmt::Debug for ShumateSimpleMapClass {
435    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
436        f.debug_struct(&format!("ShumateSimpleMapClass @ {self:p}"))
437            .field("parent_class", &self.parent_class)
438            .finish()
439    }
440}
441
442#[derive(Copy, Clone)]
443#[repr(C)]
444pub struct ShumateSymbolEventClass {
445    pub parent_class: gobject::GObjectClass,
446}
447
448impl ::std::fmt::Debug for ShumateSymbolEventClass {
449    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
450        f.debug_struct(&format!("ShumateSymbolEventClass @ {self:p}"))
451            .field("parent_class", &self.parent_class)
452            .finish()
453    }
454}
455
456#[derive(Copy, Clone)]
457#[repr(C)]
458pub struct ShumateTileClass {
459    pub parent_class: gobject::GObjectClass,
460}
461
462impl ::std::fmt::Debug for ShumateTileClass {
463    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
464        f.debug_struct(&format!("ShumateTileClass @ {self:p}"))
465            .field("parent_class", &self.parent_class)
466            .finish()
467    }
468}
469
470#[derive(Copy, Clone)]
471#[repr(C)]
472pub struct ShumateTileDownloaderClass {
473    pub parent_class: ShumateDataSourceClass,
474}
475
476impl ::std::fmt::Debug for ShumateTileDownloaderClass {
477    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
478        f.debug_struct(&format!("ShumateTileDownloaderClass @ {self:p}"))
479            .field("parent_class", &self.parent_class)
480            .finish()
481    }
482}
483
484#[derive(Copy, Clone)]
485#[repr(C)]
486pub struct ShumateVectorReaderClass {
487    pub parent_class: gobject::GObjectClass,
488}
489
490impl ::std::fmt::Debug for ShumateVectorReaderClass {
491    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
492        f.debug_struct(&format!("ShumateVectorReaderClass @ {self:p}"))
493            .field("parent_class", &self.parent_class)
494            .finish()
495    }
496}
497
498#[derive(Copy, Clone)]
499#[repr(C)]
500pub struct ShumateVectorReaderIterClass {
501    pub parent_class: gobject::GObjectClass,
502}
503
504impl ::std::fmt::Debug for ShumateVectorReaderIterClass {
505    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
506        f.debug_struct(&format!("ShumateVectorReaderIterClass @ {self:p}"))
507            .field("parent_class", &self.parent_class)
508            .finish()
509    }
510}
511
512#[derive(Copy, Clone)]
513#[repr(C)]
514pub struct ShumateVectorRendererClass {
515    pub parent_class: ShumateMapSourceClass,
516}
517
518impl ::std::fmt::Debug for ShumateVectorRendererClass {
519    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
520        f.debug_struct(&format!("ShumateVectorRendererClass @ {self:p}"))
521            .field("parent_class", &self.parent_class)
522            .finish()
523    }
524}
525
526#[derive(Copy, Clone)]
527#[repr(C)]
528pub struct ShumateVectorSpriteClass {
529    pub parent_class: gobject::GObjectClass,
530}
531
532impl ::std::fmt::Debug for ShumateVectorSpriteClass {
533    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
534        f.debug_struct(&format!("ShumateVectorSpriteClass @ {self:p}"))
535            .field("parent_class", &self.parent_class)
536            .finish()
537    }
538}
539
540#[derive(Copy, Clone)]
541#[repr(C)]
542pub struct ShumateVectorSpriteSheetClass {
543    pub parent_class: gobject::GObjectClass,
544}
545
546impl ::std::fmt::Debug for ShumateVectorSpriteSheetClass {
547    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
548        f.debug_struct(&format!("ShumateVectorSpriteSheetClass @ {self:p}"))
549            .field("parent_class", &self.parent_class)
550            .finish()
551    }
552}
553
554#[repr(C)]
555#[allow(dead_code)]
556pub struct ShumateVectorValue {
557    _data: [u8; 0],
558    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
559}
560
561impl ::std::fmt::Debug for ShumateVectorValue {
562    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
563        f.debug_struct(&format!("ShumateVectorValue @ {self:p}"))
564            .finish()
565    }
566}
567
568#[derive(Copy, Clone)]
569#[repr(C)]
570pub struct ShumateViewportClass {
571    pub parent_class: gobject::GObjectClass,
572}
573
574impl ::std::fmt::Debug for ShumateViewportClass {
575    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
576        f.debug_struct(&format!("ShumateViewportClass @ {self:p}"))
577            .field("parent_class", &self.parent_class)
578            .finish()
579    }
580}
581
582// Classes
583#[repr(C)]
584#[allow(dead_code)]
585pub struct ShumateCompass {
586    _data: [u8; 0],
587    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
588}
589
590impl ::std::fmt::Debug for ShumateCompass {
591    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
592        f.debug_struct(&format!("ShumateCompass @ {self:p}"))
593            .finish()
594    }
595}
596
597#[derive(Copy, Clone)]
598#[repr(C)]
599pub struct ShumateCoordinate {
600    pub parent_instance: gobject::GInitiallyUnowned,
601}
602
603impl ::std::fmt::Debug for ShumateCoordinate {
604    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
605        f.debug_struct(&format!("ShumateCoordinate @ {self:p}"))
606            .field("parent_instance", &self.parent_instance)
607            .finish()
608    }
609}
610
611#[derive(Copy, Clone)]
612#[repr(C)]
613pub struct ShumateDataSource {
614    pub parent_instance: gobject::GObject,
615}
616
617impl ::std::fmt::Debug for ShumateDataSource {
618    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
619        f.debug_struct(&format!("ShumateDataSource @ {self:p}"))
620            .field("parent_instance", &self.parent_instance)
621            .finish()
622    }
623}
624
625#[derive(Copy, Clone)]
626#[repr(C)]
627pub struct ShumateDataSourceRequest {
628    pub parent_instance: gobject::GObject,
629}
630
631impl ::std::fmt::Debug for ShumateDataSourceRequest {
632    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
633        f.debug_struct(&format!("ShumateDataSourceRequest @ {self:p}"))
634            .field("parent_instance", &self.parent_instance)
635            .finish()
636    }
637}
638
639#[repr(C)]
640#[allow(dead_code)]
641pub struct ShumateFileCache {
642    _data: [u8; 0],
643    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
644}
645
646impl ::std::fmt::Debug for ShumateFileCache {
647    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
648        f.debug_struct(&format!("ShumateFileCache @ {self:p}"))
649            .finish()
650    }
651}
652
653#[derive(Copy, Clone)]
654#[repr(C)]
655pub struct ShumateLayer {
656    pub parent_instance: gtk::GtkWidget,
657}
658
659impl ::std::fmt::Debug for ShumateLayer {
660    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
661        f.debug_struct(&format!("ShumateLayer @ {self:p}"))
662            .field("parent_instance", &self.parent_instance)
663            .finish()
664    }
665}
666
667#[repr(C)]
668#[allow(dead_code)]
669pub struct ShumateLicense {
670    _data: [u8; 0],
671    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
672}
673
674impl ::std::fmt::Debug for ShumateLicense {
675    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
676        f.debug_struct(&format!("ShumateLicense @ {self:p}"))
677            .finish()
678    }
679}
680
681#[repr(C)]
682#[allow(dead_code)]
683pub struct ShumateMap {
684    _data: [u8; 0],
685    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
686}
687
688impl ::std::fmt::Debug for ShumateMap {
689    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
690        f.debug_struct(&format!("ShumateMap @ {self:p}")).finish()
691    }
692}
693
694#[repr(C)]
695#[allow(dead_code)]
696pub struct ShumateMapLayer {
697    _data: [u8; 0],
698    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
699}
700
701impl ::std::fmt::Debug for ShumateMapLayer {
702    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
703        f.debug_struct(&format!("ShumateMapLayer @ {self:p}"))
704            .finish()
705    }
706}
707
708#[derive(Copy, Clone)]
709#[repr(C)]
710pub struct ShumateMapSource {
711    pub parent_instance: gobject::GObject,
712}
713
714impl ::std::fmt::Debug for ShumateMapSource {
715    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
716        f.debug_struct(&format!("ShumateMapSource @ {self:p}"))
717            .field("parent_instance", &self.parent_instance)
718            .finish()
719    }
720}
721
722#[repr(C)]
723#[allow(dead_code)]
724pub struct ShumateMapSourceRegistry {
725    _data: [u8; 0],
726    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
727}
728
729impl ::std::fmt::Debug for ShumateMapSourceRegistry {
730    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
731        f.debug_struct(&format!("ShumateMapSourceRegistry @ {self:p}"))
732            .finish()
733    }
734}
735
736#[derive(Copy, Clone)]
737#[repr(C)]
738pub struct ShumateMarker {
739    pub parent_instance: gtk::GtkWidget,
740}
741
742impl ::std::fmt::Debug for ShumateMarker {
743    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
744        f.debug_struct(&format!("ShumateMarker @ {self:p}"))
745            .field("parent_instance", &self.parent_instance)
746            .finish()
747    }
748}
749
750#[repr(C)]
751#[allow(dead_code)]
752pub struct ShumateMarkerLayer {
753    _data: [u8; 0],
754    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
755}
756
757impl ::std::fmt::Debug for ShumateMarkerLayer {
758    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
759        f.debug_struct(&format!("ShumateMarkerLayer @ {self:p}"))
760            .finish()
761    }
762}
763
764#[repr(C)]
765#[allow(dead_code)]
766pub struct ShumatePathLayer {
767    _data: [u8; 0],
768    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
769}
770
771impl ::std::fmt::Debug for ShumatePathLayer {
772    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
773        f.debug_struct(&format!("ShumatePathLayer @ {self:p}"))
774            .finish()
775    }
776}
777
778#[repr(C)]
779#[allow(dead_code)]
780pub struct ShumatePoint {
781    _data: [u8; 0],
782    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
783}
784
785impl ::std::fmt::Debug for ShumatePoint {
786    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
787        f.debug_struct(&format!("ShumatePoint @ {self:p}")).finish()
788    }
789}
790
791#[repr(C)]
792#[allow(dead_code)]
793pub struct ShumateRasterRenderer {
794    _data: [u8; 0],
795    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
796}
797
798impl ::std::fmt::Debug for ShumateRasterRenderer {
799    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
800        f.debug_struct(&format!("ShumateRasterRenderer @ {self:p}"))
801            .finish()
802    }
803}
804
805#[repr(C)]
806#[allow(dead_code)]
807pub struct ShumateScale {
808    _data: [u8; 0],
809    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
810}
811
812impl ::std::fmt::Debug for ShumateScale {
813    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
814        f.debug_struct(&format!("ShumateScale @ {self:p}")).finish()
815    }
816}
817
818#[repr(C)]
819#[allow(dead_code)]
820pub struct ShumateSimpleMap {
821    _data: [u8; 0],
822    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
823}
824
825impl ::std::fmt::Debug for ShumateSimpleMap {
826    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
827        f.debug_struct(&format!("ShumateSimpleMap @ {self:p}"))
828            .finish()
829    }
830}
831
832#[repr(C)]
833#[allow(dead_code)]
834pub struct ShumateSymbolEvent {
835    _data: [u8; 0],
836    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
837}
838
839impl ::std::fmt::Debug for ShumateSymbolEvent {
840    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
841        f.debug_struct(&format!("ShumateSymbolEvent @ {self:p}"))
842            .finish()
843    }
844}
845
846#[repr(C)]
847#[allow(dead_code)]
848pub struct ShumateTile {
849    _data: [u8; 0],
850    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
851}
852
853impl ::std::fmt::Debug for ShumateTile {
854    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
855        f.debug_struct(&format!("ShumateTile @ {self:p}")).finish()
856    }
857}
858
859#[repr(C)]
860#[allow(dead_code)]
861pub struct ShumateTileDownloader {
862    _data: [u8; 0],
863    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
864}
865
866impl ::std::fmt::Debug for ShumateTileDownloader {
867    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
868        f.debug_struct(&format!("ShumateTileDownloader @ {self:p}"))
869            .finish()
870    }
871}
872
873#[repr(C)]
874#[allow(dead_code)]
875pub struct ShumateVectorReader {
876    _data: [u8; 0],
877    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
878}
879
880impl ::std::fmt::Debug for ShumateVectorReader {
881    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
882        f.debug_struct(&format!("ShumateVectorReader @ {self:p}"))
883            .finish()
884    }
885}
886
887#[repr(C)]
888#[allow(dead_code)]
889pub struct ShumateVectorReaderIter {
890    _data: [u8; 0],
891    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
892}
893
894impl ::std::fmt::Debug for ShumateVectorReaderIter {
895    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
896        f.debug_struct(&format!("ShumateVectorReaderIter @ {self:p}"))
897            .finish()
898    }
899}
900
901#[repr(C)]
902#[allow(dead_code)]
903pub struct ShumateVectorRenderer {
904    _data: [u8; 0],
905    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
906}
907
908impl ::std::fmt::Debug for ShumateVectorRenderer {
909    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
910        f.debug_struct(&format!("ShumateVectorRenderer @ {self:p}"))
911            .finish()
912    }
913}
914
915#[repr(C)]
916#[allow(dead_code)]
917pub struct ShumateVectorSprite {
918    _data: [u8; 0],
919    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
920}
921
922impl ::std::fmt::Debug for ShumateVectorSprite {
923    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
924        f.debug_struct(&format!("ShumateVectorSprite @ {self:p}"))
925            .finish()
926    }
927}
928
929#[repr(C)]
930#[allow(dead_code)]
931pub struct ShumateVectorSpriteSheet {
932    _data: [u8; 0],
933    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
934}
935
936impl ::std::fmt::Debug for ShumateVectorSpriteSheet {
937    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
938        f.debug_struct(&format!("ShumateVectorSpriteSheet @ {self:p}"))
939            .finish()
940    }
941}
942
943#[repr(C)]
944#[allow(dead_code)]
945pub struct ShumateViewport {
946    _data: [u8; 0],
947    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
948}
949
950impl ::std::fmt::Debug for ShumateViewport {
951    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
952        f.debug_struct(&format!("ShumateViewport @ {self:p}"))
953            .finish()
954    }
955}
956
957// Interfaces
958#[repr(C)]
959#[allow(dead_code)]
960pub struct ShumateLocation {
961    _data: [u8; 0],
962    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
963}
964
965impl ::std::fmt::Debug for ShumateLocation {
966    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
967        write!(f, "ShumateLocation @ {self:p}")
968    }
969}
970
971unsafe extern "C" {
972
973    //=========================================================================
974    // ShumateFileCacheError
975    //=========================================================================
976    pub fn shumate_file_cache_error_get_type() -> GType;
977    pub fn shumate_file_cache_error_quark() -> glib::GQuark;
978
979    //=========================================================================
980    // ShumateGeometryType
981    //=========================================================================
982    #[cfg(feature = "v1_2")]
983    #[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
984    pub fn shumate_geometry_type_get_type() -> GType;
985
986    //=========================================================================
987    // ShumateMapProjection
988    //=========================================================================
989    pub fn shumate_map_projection_get_type() -> GType;
990
991    //=========================================================================
992    // ShumateState
993    //=========================================================================
994    pub fn shumate_state_get_type() -> GType;
995
996    //=========================================================================
997    // ShumateStyleError
998    //=========================================================================
999    pub fn shumate_style_error_get_type() -> GType;
1000    pub fn shumate_style_error_quark() -> glib::GQuark;
1001
1002    //=========================================================================
1003    // ShumateTileDownloaderError
1004    //=========================================================================
1005    pub fn shumate_tile_downloader_error_get_type() -> GType;
1006    pub fn shumate_tile_downloader_error_quark() -> glib::GQuark;
1007
1008    //=========================================================================
1009    // ShumateUnit
1010    //=========================================================================
1011    pub fn shumate_unit_get_type() -> GType;
1012
1013    //=========================================================================
1014    // ShumateVectorValueType
1015    //=========================================================================
1016    #[cfg(feature = "v1_6")]
1017    #[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
1018    pub fn shumate_vector_value_type_get_type() -> GType;
1019
1020    //=========================================================================
1021    // ShumateVectorValue
1022    //=========================================================================
1023    #[cfg(feature = "v1_6")]
1024    #[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
1025    pub fn shumate_vector_value_get_type() -> GType;
1026    #[cfg(feature = "v1_6")]
1027    #[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
1028    pub fn shumate_vector_value_new() -> *mut ShumateVectorValue;
1029    #[cfg(feature = "v1_6")]
1030    #[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
1031    pub fn shumate_vector_value_new_boolean(boolean: gboolean) -> *mut ShumateVectorValue;
1032    #[cfg(feature = "v1_6")]
1033    #[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
1034    pub fn shumate_vector_value_new_color(color: *const gdk::GdkRGBA) -> *mut ShumateVectorValue;
1035    #[cfg(feature = "v1_6")]
1036    #[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
1037    pub fn shumate_vector_value_new_from_value(
1038        value: *const gobject::GValue,
1039    ) -> *mut ShumateVectorValue;
1040    #[cfg(feature = "v1_6")]
1041    #[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
1042    pub fn shumate_vector_value_new_number(number: c_double) -> *mut ShumateVectorValue;
1043    #[cfg(feature = "v1_6")]
1044    #[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
1045    pub fn shumate_vector_value_new_string(string: *const c_char) -> *mut ShumateVectorValue;
1046    #[cfg(feature = "v1_6")]
1047    #[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
1048    pub fn shumate_vector_value_array_append(
1049        self_: *mut ShumateVectorValue,
1050        element: *mut ShumateVectorValue,
1051    );
1052    #[cfg(feature = "v1_6")]
1053    #[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
1054    pub fn shumate_vector_value_dup(self_: *mut ShumateVectorValue) -> *mut ShumateVectorValue;
1055    #[cfg(feature = "v1_6")]
1056    #[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
1057    pub fn shumate_vector_value_equal(
1058        a: *mut ShumateVectorValue,
1059        b: *mut ShumateVectorValue,
1060    ) -> gboolean;
1061    #[cfg(feature = "v1_6")]
1062    #[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
1063    pub fn shumate_vector_value_free(self_: *mut ShumateVectorValue);
1064    #[cfg(feature = "v1_6")]
1065    #[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
1066    pub fn shumate_vector_value_get_boolean(
1067        self_: *mut ShumateVectorValue,
1068        boolean: *mut gboolean,
1069    ) -> gboolean;
1070    #[cfg(feature = "v1_6")]
1071    #[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
1072    pub fn shumate_vector_value_get_color(
1073        self_: *mut ShumateVectorValue,
1074        color: *mut gdk::GdkRGBA,
1075    ) -> gboolean;
1076    #[cfg(feature = "v1_6")]
1077    #[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
1078    pub fn shumate_vector_value_get_number(
1079        self_: *mut ShumateVectorValue,
1080        number: *mut c_double,
1081    ) -> gboolean;
1082    #[cfg(feature = "v1_6")]
1083    #[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
1084    pub fn shumate_vector_value_get_string(
1085        self_: *mut ShumateVectorValue,
1086        string: *mut *const c_char,
1087    ) -> gboolean;
1088    #[cfg(feature = "v1_6")]
1089    #[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
1090    pub fn shumate_vector_value_get_value_type(
1091        self_: *mut ShumateVectorValue,
1092    ) -> ShumateVectorValueType;
1093    #[cfg(feature = "v1_6")]
1094    #[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
1095    pub fn shumate_vector_value_hash(self_: *mut ShumateVectorValue) -> c_int;
1096    #[cfg(feature = "v1_6")]
1097    #[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
1098    pub fn shumate_vector_value_is_null(self_: *mut ShumateVectorValue) -> gboolean;
1099    #[cfg(feature = "v1_6")]
1100    #[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
1101    pub fn shumate_vector_value_set_boolean(self_: *mut ShumateVectorValue, boolean: gboolean);
1102    #[cfg(feature = "v1_6")]
1103    #[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
1104    pub fn shumate_vector_value_set_color(
1105        self_: *mut ShumateVectorValue,
1106        color: *const gdk::GdkRGBA,
1107    );
1108    #[cfg(feature = "v1_6")]
1109    #[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
1110    pub fn shumate_vector_value_set_number(self_: *mut ShumateVectorValue, number: c_double);
1111    #[cfg(feature = "v1_6")]
1112    #[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
1113    pub fn shumate_vector_value_set_string(self_: *mut ShumateVectorValue, string: *const c_char);
1114    #[cfg(feature = "v1_6")]
1115    #[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
1116    pub fn shumate_vector_value_start_array(self_: *mut ShumateVectorValue);
1117    #[cfg(feature = "v1_6")]
1118    #[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
1119    pub fn shumate_vector_value_unset(self_: *mut ShumateVectorValue);
1120
1121    //=========================================================================
1122    // ShumateCompass
1123    //=========================================================================
1124    pub fn shumate_compass_get_type() -> GType;
1125    pub fn shumate_compass_new(viewport: *mut ShumateViewport) -> *mut ShumateCompass;
1126    pub fn shumate_compass_get_viewport(compass: *mut ShumateCompass) -> *mut ShumateViewport;
1127    pub fn shumate_compass_set_viewport(
1128        compass: *mut ShumateCompass,
1129        viewport: *mut ShumateViewport,
1130    );
1131
1132    //=========================================================================
1133    // ShumateCoordinate
1134    //=========================================================================
1135    pub fn shumate_coordinate_get_type() -> GType;
1136    pub fn shumate_coordinate_new() -> *mut ShumateCoordinate;
1137    pub fn shumate_coordinate_new_full(
1138        latitude: c_double,
1139        longitude: c_double,
1140    ) -> *mut ShumateCoordinate;
1141
1142    //=========================================================================
1143    // ShumateDataSource
1144    //=========================================================================
1145    pub fn shumate_data_source_get_type() -> GType;
1146    #[cfg(feature = "v1_1")]
1147    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1148    pub fn shumate_data_source_get_max_zoom_level(self_: *mut ShumateDataSource) -> c_uint;
1149    #[cfg(feature = "v1_1")]
1150    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1151    pub fn shumate_data_source_get_min_zoom_level(self_: *mut ShumateDataSource) -> c_uint;
1152    pub fn shumate_data_source_get_tile_data_async(
1153        self_: *mut ShumateDataSource,
1154        x: c_int,
1155        y: c_int,
1156        zoom_level: c_int,
1157        cancellable: *mut gio::GCancellable,
1158        callback: gio::GAsyncReadyCallback,
1159        user_data: gpointer,
1160    );
1161    pub fn shumate_data_source_get_tile_data_finish(
1162        self_: *mut ShumateDataSource,
1163        result: *mut gio::GAsyncResult,
1164        error: *mut *mut glib::GError,
1165    ) -> *mut glib::GBytes;
1166    #[cfg(feature = "v1_1")]
1167    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1168    pub fn shumate_data_source_set_max_zoom_level(
1169        self_: *mut ShumateDataSource,
1170        zoom_level: c_uint,
1171    );
1172    #[cfg(feature = "v1_1")]
1173    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1174    pub fn shumate_data_source_set_min_zoom_level(
1175        self_: *mut ShumateDataSource,
1176        zoom_level: c_uint,
1177    );
1178    #[cfg(feature = "v1_1")]
1179    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1180    pub fn shumate_data_source_start_request(
1181        self_: *mut ShumateDataSource,
1182        x: c_int,
1183        y: c_int,
1184        zoom_level: c_int,
1185        cancellable: *mut gio::GCancellable,
1186    ) -> *mut ShumateDataSourceRequest;
1187
1188    //=========================================================================
1189    // ShumateDataSourceRequest
1190    //=========================================================================
1191    #[cfg(feature = "v1_1")]
1192    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1193    pub fn shumate_data_source_request_get_type() -> GType;
1194    #[cfg(feature = "v1_1")]
1195    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1196    pub fn shumate_data_source_request_new(
1197        x: c_int,
1198        y: c_int,
1199        zoom_level: c_int,
1200    ) -> *mut ShumateDataSourceRequest;
1201    #[cfg(feature = "v1_1")]
1202    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1203    pub fn shumate_data_source_request_complete(self_: *mut ShumateDataSourceRequest);
1204    #[cfg(feature = "v1_1")]
1205    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1206    pub fn shumate_data_source_request_emit_data(
1207        self_: *mut ShumateDataSourceRequest,
1208        data: *mut glib::GBytes,
1209        complete: gboolean,
1210    );
1211    #[cfg(feature = "v1_1")]
1212    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1213    pub fn shumate_data_source_request_emit_error(
1214        self_: *mut ShumateDataSourceRequest,
1215        error: *const glib::GError,
1216    );
1217    #[cfg(feature = "v1_1")]
1218    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1219    pub fn shumate_data_source_request_get_data(
1220        self_: *mut ShumateDataSourceRequest,
1221    ) -> *mut glib::GBytes;
1222    #[cfg(feature = "v1_1")]
1223    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1224    pub fn shumate_data_source_request_get_error(
1225        self_: *mut ShumateDataSourceRequest,
1226    ) -> *mut glib::GError;
1227    #[cfg(feature = "v1_1")]
1228    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1229    pub fn shumate_data_source_request_get_x(self_: *mut ShumateDataSourceRequest) -> c_int;
1230    #[cfg(feature = "v1_1")]
1231    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1232    pub fn shumate_data_source_request_get_y(self_: *mut ShumateDataSourceRequest) -> c_int;
1233    #[cfg(feature = "v1_1")]
1234    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1235    pub fn shumate_data_source_request_get_zoom_level(
1236        self_: *mut ShumateDataSourceRequest,
1237    ) -> c_int;
1238    #[cfg(feature = "v1_1")]
1239    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1240    pub fn shumate_data_source_request_is_completed(
1241        self_: *mut ShumateDataSourceRequest,
1242    ) -> gboolean;
1243
1244    //=========================================================================
1245    // ShumateFileCache
1246    //=========================================================================
1247    pub fn shumate_file_cache_get_type() -> GType;
1248    pub fn shumate_file_cache_new_full(
1249        size_limit: c_uint,
1250        cache_key: *const c_char,
1251        cache_dir: *const c_char,
1252    ) -> *mut ShumateFileCache;
1253    pub fn shumate_file_cache_get_cache_dir(self_: *mut ShumateFileCache) -> *const c_char;
1254    pub fn shumate_file_cache_get_cache_key(self_: *mut ShumateFileCache) -> *const c_char;
1255    pub fn shumate_file_cache_get_size_limit(self_: *mut ShumateFileCache) -> c_uint;
1256    pub fn shumate_file_cache_get_tile_async(
1257        self_: *mut ShumateFileCache,
1258        x: c_int,
1259        y: c_int,
1260        zoom_level: c_int,
1261        cancellable: *mut gio::GCancellable,
1262        callback: gio::GAsyncReadyCallback,
1263        user_data: gpointer,
1264    );
1265    pub fn shumate_file_cache_get_tile_finish(
1266        self_: *mut ShumateFileCache,
1267        etag: *mut *mut c_char,
1268        modtime: *mut *mut glib::GDateTime,
1269        result: *mut gio::GAsyncResult,
1270        error: *mut *mut glib::GError,
1271    ) -> *mut glib::GBytes;
1272    pub fn shumate_file_cache_mark_up_to_date(
1273        self_: *mut ShumateFileCache,
1274        x: c_int,
1275        y: c_int,
1276        zoom_level: c_int,
1277    );
1278    pub fn shumate_file_cache_purge_cache_async(
1279        self_: *mut ShumateFileCache,
1280        cancellable: *mut gio::GCancellable,
1281        callback: gio::GAsyncReadyCallback,
1282        user_data: gpointer,
1283    );
1284    pub fn shumate_file_cache_purge_cache_finish(
1285        self_: *mut ShumateFileCache,
1286        result: *mut gio::GAsyncResult,
1287        error: *mut *mut glib::GError,
1288    ) -> gboolean;
1289    pub fn shumate_file_cache_set_size_limit(self_: *mut ShumateFileCache, size_limit: c_uint);
1290    pub fn shumate_file_cache_store_tile_async(
1291        self_: *mut ShumateFileCache,
1292        x: c_int,
1293        y: c_int,
1294        zoom_level: c_int,
1295        bytes: *mut glib::GBytes,
1296        etag: *const c_char,
1297        cancellable: *mut gio::GCancellable,
1298        callback: gio::GAsyncReadyCallback,
1299        user_data: gpointer,
1300    );
1301    pub fn shumate_file_cache_store_tile_finish(
1302        self_: *mut ShumateFileCache,
1303        result: *mut gio::GAsyncResult,
1304        error: *mut *mut glib::GError,
1305    ) -> gboolean;
1306
1307    //=========================================================================
1308    // ShumateLayer
1309    //=========================================================================
1310    pub fn shumate_layer_get_type() -> GType;
1311    pub fn shumate_layer_get_viewport(self_: *mut ShumateLayer) -> *mut ShumateViewport;
1312
1313    //=========================================================================
1314    // ShumateLicense
1315    //=========================================================================
1316    pub fn shumate_license_get_type() -> GType;
1317    pub fn shumate_license_new() -> *mut ShumateLicense;
1318    pub fn shumate_license_append_map_source(
1319        license: *mut ShumateLicense,
1320        map_source: *mut ShumateMapSource,
1321    );
1322    pub fn shumate_license_get_extra_text(license: *mut ShumateLicense) -> *const c_char;
1323    pub fn shumate_license_get_xalign(license: *mut ShumateLicense) -> c_float;
1324    pub fn shumate_license_prepend_map_source(
1325        license: *mut ShumateLicense,
1326        map_source: *mut ShumateMapSource,
1327    );
1328    pub fn shumate_license_remove_map_source(
1329        license: *mut ShumateLicense,
1330        map_source: *mut ShumateMapSource,
1331    );
1332    pub fn shumate_license_set_extra_text(license: *mut ShumateLicense, text: *const c_char);
1333    pub fn shumate_license_set_xalign(license: *mut ShumateLicense, xalign: c_float);
1334
1335    //=========================================================================
1336    // ShumateMap
1337    //=========================================================================
1338    pub fn shumate_map_get_type() -> GType;
1339    pub fn shumate_map_new() -> *mut ShumateMap;
1340    pub fn shumate_map_new_simple() -> *mut ShumateMap;
1341    pub fn shumate_map_add_layer(self_: *mut ShumateMap, layer: *mut ShumateLayer);
1342    pub fn shumate_map_center_on(self_: *mut ShumateMap, latitude: c_double, longitude: c_double);
1343    pub fn shumate_map_get_animate_zoom(self_: *mut ShumateMap) -> gboolean;
1344    pub fn shumate_map_get_go_to_duration(self_: *mut ShumateMap) -> c_uint;
1345    pub fn shumate_map_get_state(self_: *mut ShumateMap) -> ShumateState;
1346    pub fn shumate_map_get_viewport(self_: *mut ShumateMap) -> *mut ShumateViewport;
1347    pub fn shumate_map_get_zoom_on_double_click(self_: *mut ShumateMap) -> gboolean;
1348    pub fn shumate_map_go_to(self_: *mut ShumateMap, latitude: c_double, longitude: c_double);
1349    pub fn shumate_map_go_to_full(
1350        self_: *mut ShumateMap,
1351        latitude: c_double,
1352        longitude: c_double,
1353        zoom_level: c_double,
1354    );
1355    pub fn shumate_map_go_to_full_with_duration(
1356        self_: *mut ShumateMap,
1357        latitude: c_double,
1358        longitude: c_double,
1359        zoom_level: c_double,
1360        duration_ms: c_uint,
1361    );
1362    pub fn shumate_map_insert_layer_above(
1363        self_: *mut ShumateMap,
1364        layer: *mut ShumateLayer,
1365        next_sibling: *mut ShumateLayer,
1366    );
1367    pub fn shumate_map_insert_layer_behind(
1368        self_: *mut ShumateMap,
1369        layer: *mut ShumateLayer,
1370        next_sibling: *mut ShumateLayer,
1371    );
1372    pub fn shumate_map_remove_layer(self_: *mut ShumateMap, layer: *mut ShumateLayer);
1373    pub fn shumate_map_set_animate_zoom(self_: *mut ShumateMap, value: gboolean);
1374    pub fn shumate_map_set_go_to_duration(self_: *mut ShumateMap, duration: c_uint);
1375    pub fn shumate_map_set_map_source(self_: *mut ShumateMap, map_source: *mut ShumateMapSource);
1376    pub fn shumate_map_set_zoom_on_double_click(self_: *mut ShumateMap, value: gboolean);
1377    pub fn shumate_map_stop_go_to(self_: *mut ShumateMap);
1378    pub fn shumate_map_zoom_in(self_: *mut ShumateMap);
1379    pub fn shumate_map_zoom_out(self_: *mut ShumateMap);
1380
1381    //=========================================================================
1382    // ShumateMapLayer
1383    //=========================================================================
1384    pub fn shumate_map_layer_get_type() -> GType;
1385    pub fn shumate_map_layer_new(
1386        map_source: *mut ShumateMapSource,
1387        viewport: *mut ShumateViewport,
1388    ) -> *mut ShumateMapLayer;
1389
1390    //=========================================================================
1391    // ShumateMapSource
1392    //=========================================================================
1393    pub fn shumate_map_source_get_type() -> GType;
1394    pub fn shumate_map_source_fill_tile_async(
1395        self_: *mut ShumateMapSource,
1396        tile: *mut ShumateTile,
1397        cancellable: *mut gio::GCancellable,
1398        callback: gio::GAsyncReadyCallback,
1399        user_data: gpointer,
1400    );
1401    pub fn shumate_map_source_fill_tile_finish(
1402        self_: *mut ShumateMapSource,
1403        result: *mut gio::GAsyncResult,
1404        error: *mut *mut glib::GError,
1405    ) -> gboolean;
1406    pub fn shumate_map_source_get_column_count(
1407        map_source: *mut ShumateMapSource,
1408        zoom_level: c_uint,
1409    ) -> c_uint;
1410    pub fn shumate_map_source_get_id(map_source: *mut ShumateMapSource) -> *const c_char;
1411    pub fn shumate_map_source_get_latitude(
1412        map_source: *mut ShumateMapSource,
1413        zoom_level: c_double,
1414        y: c_double,
1415    ) -> c_double;
1416    pub fn shumate_map_source_get_license(map_source: *mut ShumateMapSource) -> *const c_char;
1417    pub fn shumate_map_source_get_license_uri(map_source: *mut ShumateMapSource) -> *const c_char;
1418    pub fn shumate_map_source_get_longitude(
1419        map_source: *mut ShumateMapSource,
1420        zoom_level: c_double,
1421        x: c_double,
1422    ) -> c_double;
1423    pub fn shumate_map_source_get_max_zoom_level(map_source: *mut ShumateMapSource) -> c_uint;
1424    pub fn shumate_map_source_get_meters_per_pixel(
1425        map_source: *mut ShumateMapSource,
1426        zoom_level: c_double,
1427        latitude: c_double,
1428        longitude: c_double,
1429    ) -> c_double;
1430    pub fn shumate_map_source_get_min_zoom_level(map_source: *mut ShumateMapSource) -> c_uint;
1431    pub fn shumate_map_source_get_name(map_source: *mut ShumateMapSource) -> *const c_char;
1432    pub fn shumate_map_source_get_projection(
1433        map_source: *mut ShumateMapSource,
1434    ) -> ShumateMapProjection;
1435    pub fn shumate_map_source_get_row_count(
1436        map_source: *mut ShumateMapSource,
1437        zoom_level: c_uint,
1438    ) -> c_uint;
1439    pub fn shumate_map_source_get_tile_size(map_source: *mut ShumateMapSource) -> c_uint;
1440    pub fn shumate_map_source_get_tile_size_at_zoom(
1441        map_source: *mut ShumateMapSource,
1442        zoom_level: c_double,
1443    ) -> c_double;
1444    pub fn shumate_map_source_get_x(
1445        map_source: *mut ShumateMapSource,
1446        zoom_level: c_double,
1447        longitude: c_double,
1448    ) -> c_double;
1449    pub fn shumate_map_source_get_y(
1450        map_source: *mut ShumateMapSource,
1451        zoom_level: c_double,
1452        latitude: c_double,
1453    ) -> c_double;
1454    pub fn shumate_map_source_set_id(map_source: *mut ShumateMapSource, id: *const c_char);
1455    pub fn shumate_map_source_set_license(
1456        map_source: *mut ShumateMapSource,
1457        license: *const c_char,
1458    );
1459    pub fn shumate_map_source_set_license_uri(
1460        map_source: *mut ShumateMapSource,
1461        license_uri: *const c_char,
1462    );
1463    pub fn shumate_map_source_set_max_zoom_level(
1464        map_source: *mut ShumateMapSource,
1465        zoom_level: c_uint,
1466    );
1467    pub fn shumate_map_source_set_min_zoom_level(
1468        map_source: *mut ShumateMapSource,
1469        zoom_level: c_uint,
1470    );
1471    pub fn shumate_map_source_set_name(map_source: *mut ShumateMapSource, name: *const c_char);
1472    pub fn shumate_map_source_set_projection(
1473        map_source: *mut ShumateMapSource,
1474        projection: ShumateMapProjection,
1475    );
1476    pub fn shumate_map_source_set_tile_size(map_source: *mut ShumateMapSource, tile_size: c_uint);
1477
1478    //=========================================================================
1479    // ShumateMapSourceRegistry
1480    //=========================================================================
1481    pub fn shumate_map_source_registry_get_type() -> GType;
1482    pub fn shumate_map_source_registry_new() -> *mut ShumateMapSourceRegistry;
1483    pub fn shumate_map_source_registry_new_with_defaults() -> *mut ShumateMapSourceRegistry;
1484    pub fn shumate_map_source_registry_add(
1485        self_: *mut ShumateMapSourceRegistry,
1486        map_source: *mut ShumateMapSource,
1487    );
1488    pub fn shumate_map_source_registry_get_by_id(
1489        self_: *mut ShumateMapSourceRegistry,
1490        id: *const c_char,
1491    ) -> *mut ShumateMapSource;
1492    pub fn shumate_map_source_registry_populate_defaults(self_: *mut ShumateMapSourceRegistry);
1493    pub fn shumate_map_source_registry_remove(
1494        self_: *mut ShumateMapSourceRegistry,
1495        id: *const c_char,
1496    );
1497
1498    //=========================================================================
1499    // ShumateMarker
1500    //=========================================================================
1501    pub fn shumate_marker_get_type() -> GType;
1502    pub fn shumate_marker_new() -> *mut ShumateMarker;
1503    pub fn shumate_marker_animate_in(marker: *mut ShumateMarker);
1504    pub fn shumate_marker_animate_in_with_delay(marker: *mut ShumateMarker, delay: c_uint);
1505    pub fn shumate_marker_animate_out(marker: *mut ShumateMarker);
1506    pub fn shumate_marker_animate_out_with_delay(marker: *mut ShumateMarker, delay: c_uint);
1507    pub fn shumate_marker_get_child(marker: *mut ShumateMarker) -> *mut gtk::GtkWidget;
1508    pub fn shumate_marker_get_draggable(marker: *mut ShumateMarker) -> gboolean;
1509    #[cfg(feature = "v1_5")]
1510    #[cfg_attr(docsrs, doc(cfg(feature = "v1_5")))]
1511    pub fn shumate_marker_get_hotspot(
1512        marker: *mut ShumateMarker,
1513        x_hotspot: *mut c_double,
1514        y_hotspot: *mut c_double,
1515    );
1516    pub fn shumate_marker_get_selectable(marker: *mut ShumateMarker) -> gboolean;
1517    pub fn shumate_marker_is_selected(marker: *mut ShumateMarker) -> gboolean;
1518    pub fn shumate_marker_set_child(marker: *mut ShumateMarker, child: *mut gtk::GtkWidget);
1519    pub fn shumate_marker_set_draggable(marker: *mut ShumateMarker, value: gboolean);
1520    #[cfg(feature = "v1_5")]
1521    #[cfg_attr(docsrs, doc(cfg(feature = "v1_5")))]
1522    pub fn shumate_marker_set_hotspot(
1523        marker: *mut ShumateMarker,
1524        x_hotspot: c_double,
1525        y_hotspot: c_double,
1526    );
1527    pub fn shumate_marker_set_selectable(marker: *mut ShumateMarker, value: gboolean);
1528
1529    //=========================================================================
1530    // ShumateMarkerLayer
1531    //=========================================================================
1532    pub fn shumate_marker_layer_get_type() -> GType;
1533    pub fn shumate_marker_layer_new(viewport: *mut ShumateViewport) -> *mut ShumateMarkerLayer;
1534    pub fn shumate_marker_layer_new_full(
1535        viewport: *mut ShumateViewport,
1536        mode: gtk::GtkSelectionMode,
1537    ) -> *mut ShumateMarkerLayer;
1538    pub fn shumate_marker_layer_add_marker(
1539        self_: *mut ShumateMarkerLayer,
1540        marker: *mut ShumateMarker,
1541    );
1542    pub fn shumate_marker_layer_get_markers(self_: *mut ShumateMarkerLayer) -> *mut glib::GList;
1543    pub fn shumate_marker_layer_get_selected(self_: *mut ShumateMarkerLayer) -> *mut glib::GList;
1544    pub fn shumate_marker_layer_get_selection_mode(
1545        self_: *mut ShumateMarkerLayer,
1546    ) -> gtk::GtkSelectionMode;
1547    pub fn shumate_marker_layer_remove_all(self_: *mut ShumateMarkerLayer);
1548    pub fn shumate_marker_layer_remove_marker(
1549        self_: *mut ShumateMarkerLayer,
1550        marker: *mut ShumateMarker,
1551    );
1552    pub fn shumate_marker_layer_select_all_markers(self_: *mut ShumateMarkerLayer);
1553    pub fn shumate_marker_layer_select_marker(
1554        self_: *mut ShumateMarkerLayer,
1555        marker: *mut ShumateMarker,
1556    ) -> gboolean;
1557    pub fn shumate_marker_layer_set_selection_mode(
1558        self_: *mut ShumateMarkerLayer,
1559        mode: gtk::GtkSelectionMode,
1560    );
1561    pub fn shumate_marker_layer_unselect_all_markers(self_: *mut ShumateMarkerLayer);
1562    pub fn shumate_marker_layer_unselect_marker(
1563        self_: *mut ShumateMarkerLayer,
1564        marker: *mut ShumateMarker,
1565    );
1566
1567    //=========================================================================
1568    // ShumatePathLayer
1569    //=========================================================================
1570    pub fn shumate_path_layer_get_type() -> GType;
1571    pub fn shumate_path_layer_new(viewport: *mut ShumateViewport) -> *mut ShumatePathLayer;
1572    pub fn shumate_path_layer_add_node(
1573        self_: *mut ShumatePathLayer,
1574        location: *mut ShumateLocation,
1575    );
1576    pub fn shumate_path_layer_get_closed(self_: *mut ShumatePathLayer) -> gboolean;
1577    pub fn shumate_path_layer_get_dash(self_: *mut ShumatePathLayer) -> *mut glib::GList;
1578    pub fn shumate_path_layer_get_fill(self_: *mut ShumatePathLayer) -> gboolean;
1579    pub fn shumate_path_layer_get_fill_color(self_: *mut ShumatePathLayer) -> *mut gdk::GdkRGBA;
1580    pub fn shumate_path_layer_get_nodes(self_: *mut ShumatePathLayer) -> *mut glib::GList;
1581    pub fn shumate_path_layer_get_outline_color(self_: *mut ShumatePathLayer) -> *mut gdk::GdkRGBA;
1582    pub fn shumate_path_layer_get_outline_width(self_: *mut ShumatePathLayer) -> c_double;
1583    pub fn shumate_path_layer_get_stroke(self_: *mut ShumatePathLayer) -> gboolean;
1584    pub fn shumate_path_layer_get_stroke_color(self_: *mut ShumatePathLayer) -> *mut gdk::GdkRGBA;
1585    pub fn shumate_path_layer_get_stroke_width(self_: *mut ShumatePathLayer) -> c_double;
1586    pub fn shumate_path_layer_insert_node(
1587        self_: *mut ShumatePathLayer,
1588        location: *mut ShumateLocation,
1589        position: c_uint,
1590    );
1591    pub fn shumate_path_layer_remove_all(self_: *mut ShumatePathLayer);
1592    pub fn shumate_path_layer_remove_node(
1593        self_: *mut ShumatePathLayer,
1594        location: *mut ShumateLocation,
1595    );
1596    pub fn shumate_path_layer_set_closed(self_: *mut ShumatePathLayer, value: gboolean);
1597    pub fn shumate_path_layer_set_dash(
1598        self_: *mut ShumatePathLayer,
1599        dash_pattern: *mut glib::GList,
1600    );
1601    pub fn shumate_path_layer_set_fill(self_: *mut ShumatePathLayer, value: gboolean);
1602    pub fn shumate_path_layer_set_fill_color(
1603        self_: *mut ShumatePathLayer,
1604        color: *const gdk::GdkRGBA,
1605    );
1606    pub fn shumate_path_layer_set_outline_color(
1607        self_: *mut ShumatePathLayer,
1608        color: *const gdk::GdkRGBA,
1609    );
1610    pub fn shumate_path_layer_set_outline_width(self_: *mut ShumatePathLayer, value: c_double);
1611    pub fn shumate_path_layer_set_stroke(self_: *mut ShumatePathLayer, value: gboolean);
1612    pub fn shumate_path_layer_set_stroke_color(
1613        self_: *mut ShumatePathLayer,
1614        color: *const gdk::GdkRGBA,
1615    );
1616    pub fn shumate_path_layer_set_stroke_width(self_: *mut ShumatePathLayer, value: c_double);
1617
1618    //=========================================================================
1619    // ShumatePoint
1620    //=========================================================================
1621    pub fn shumate_point_get_type() -> GType;
1622    pub fn shumate_point_new() -> *mut ShumatePoint;
1623
1624    //=========================================================================
1625    // ShumateRasterRenderer
1626    //=========================================================================
1627    pub fn shumate_raster_renderer_get_type() -> GType;
1628    pub fn shumate_raster_renderer_new(
1629        data_source: *mut ShumateDataSource,
1630    ) -> *mut ShumateRasterRenderer;
1631    pub fn shumate_raster_renderer_new_from_url(
1632        url_template: *const c_char,
1633    ) -> *mut ShumateRasterRenderer;
1634    pub fn shumate_raster_renderer_new_full(
1635        id: *const c_char,
1636        name: *const c_char,
1637        license: *const c_char,
1638        license_uri: *const c_char,
1639        min_zoom: c_uint,
1640        max_zoom: c_uint,
1641        tile_size: c_uint,
1642        projection: ShumateMapProjection,
1643        data_source: *mut ShumateDataSource,
1644    ) -> *mut ShumateRasterRenderer;
1645    pub fn shumate_raster_renderer_new_full_from_url(
1646        id: *const c_char,
1647        name: *const c_char,
1648        license: *const c_char,
1649        license_uri: *const c_char,
1650        min_zoom: c_uint,
1651        max_zoom: c_uint,
1652        tile_size: c_uint,
1653        projection: ShumateMapProjection,
1654        url_template: *const c_char,
1655    ) -> *mut ShumateRasterRenderer;
1656
1657    //=========================================================================
1658    // ShumateScale
1659    //=========================================================================
1660    pub fn shumate_scale_get_type() -> GType;
1661    pub fn shumate_scale_new(viewport: *mut ShumateViewport) -> *mut ShumateScale;
1662    pub fn shumate_scale_get_max_width(scale: *mut ShumateScale) -> c_uint;
1663    pub fn shumate_scale_get_unit(scale: *mut ShumateScale) -> ShumateUnit;
1664    pub fn shumate_scale_get_viewport(scale: *mut ShumateScale) -> *mut ShumateViewport;
1665    pub fn shumate_scale_set_max_width(scale: *mut ShumateScale, value: c_uint);
1666    pub fn shumate_scale_set_unit(scale: *mut ShumateScale, unit: ShumateUnit);
1667    pub fn shumate_scale_set_viewport(scale: *mut ShumateScale, viewport: *mut ShumateViewport);
1668
1669    //=========================================================================
1670    // ShumateSimpleMap
1671    //=========================================================================
1672    pub fn shumate_simple_map_get_type() -> GType;
1673    pub fn shumate_simple_map_new() -> *mut ShumateSimpleMap;
1674    pub fn shumate_simple_map_add_overlay_layer(
1675        self_: *mut ShumateSimpleMap,
1676        layer: *mut ShumateLayer,
1677    );
1678    #[cfg(feature = "v1_4")]
1679    #[cfg_attr(docsrs, doc(cfg(feature = "v1_4")))]
1680    pub fn shumate_simple_map_get_base_map_layer(
1681        self_: *mut ShumateSimpleMap,
1682    ) -> *mut ShumateMapLayer;
1683    pub fn shumate_simple_map_get_compass(self_: *mut ShumateSimpleMap) -> *mut ShumateCompass;
1684    pub fn shumate_simple_map_get_license(self_: *mut ShumateSimpleMap) -> *mut ShumateLicense;
1685    pub fn shumate_simple_map_get_map(self_: *mut ShumateSimpleMap) -> *mut ShumateMap;
1686    pub fn shumate_simple_map_get_map_source(self_: *mut ShumateSimpleMap)
1687    -> *mut ShumateMapSource;
1688    pub fn shumate_simple_map_get_scale(self_: *mut ShumateSimpleMap) -> *mut ShumateScale;
1689    pub fn shumate_simple_map_get_show_zoom_buttons(self_: *mut ShumateSimpleMap) -> gboolean;
1690    pub fn shumate_simple_map_get_viewport(self_: *mut ShumateSimpleMap) -> *mut ShumateViewport;
1691    #[cfg(feature = "v1_5")]
1692    #[cfg_attr(docsrs, doc(cfg(feature = "v1_5")))]
1693    pub fn shumate_simple_map_insert_overlay_layer_above(
1694        self_: *mut ShumateSimpleMap,
1695        layer: *mut ShumateLayer,
1696        sibling: *mut ShumateLayer,
1697    );
1698    #[cfg(feature = "v1_5")]
1699    #[cfg_attr(docsrs, doc(cfg(feature = "v1_5")))]
1700    pub fn shumate_simple_map_insert_overlay_layer_behind(
1701        self_: *mut ShumateSimpleMap,
1702        layer: *mut ShumateLayer,
1703        sibling: *mut ShumateLayer,
1704    );
1705    pub fn shumate_simple_map_remove_overlay_layer(
1706        self_: *mut ShumateSimpleMap,
1707        layer: *mut ShumateLayer,
1708    );
1709    pub fn shumate_simple_map_set_map_source(
1710        self_: *mut ShumateSimpleMap,
1711        map_source: *mut ShumateMapSource,
1712    );
1713    pub fn shumate_simple_map_set_show_zoom_buttons(
1714        self_: *mut ShumateSimpleMap,
1715        show_zoom_buttons: gboolean,
1716    );
1717
1718    //=========================================================================
1719    // ShumateSymbolEvent
1720    //=========================================================================
1721    #[cfg(feature = "v1_1")]
1722    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1723    pub fn shumate_symbol_event_get_type() -> GType;
1724    #[cfg(feature = "v1_1")]
1725    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1726    pub fn shumate_symbol_event_get_feature_id(self_: *mut ShumateSymbolEvent) -> *const c_char;
1727    #[cfg(feature = "v1_1")]
1728    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1729    pub fn shumate_symbol_event_get_keys(self_: *mut ShumateSymbolEvent) -> c_char;
1730    #[cfg(feature = "v1_1")]
1731    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1732    pub fn shumate_symbol_event_get_layer(self_: *mut ShumateSymbolEvent) -> *const c_char;
1733    #[cfg(feature = "v1_5")]
1734    #[cfg_attr(docsrs, doc(cfg(feature = "v1_5")))]
1735    pub fn shumate_symbol_event_get_n_press(self_: *mut ShumateSymbolEvent) -> c_int;
1736    #[cfg(feature = "v1_1")]
1737    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1738    pub fn shumate_symbol_event_get_source_layer(self_: *mut ShumateSymbolEvent) -> *const c_char;
1739    #[cfg(feature = "v1_1")]
1740    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1741    pub fn shumate_symbol_event_get_tag(
1742        self_: *mut ShumateSymbolEvent,
1743        tag_name: *const c_char,
1744    ) -> *const c_char;
1745
1746    //=========================================================================
1747    // ShumateTile
1748    //=========================================================================
1749    pub fn shumate_tile_get_type() -> GType;
1750    pub fn shumate_tile_new() -> *mut ShumateTile;
1751    pub fn shumate_tile_new_full(
1752        x: c_uint,
1753        y: c_uint,
1754        size: c_uint,
1755        zoom_level: c_uint,
1756    ) -> *mut ShumateTile;
1757    pub fn shumate_tile_get_fade_in(self_: *mut ShumateTile) -> gboolean;
1758    pub fn shumate_tile_get_paintable(self_: *mut ShumateTile) -> *mut gdk::GdkPaintable;
1759    #[cfg(feature = "v1_1")]
1760    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1761    pub fn shumate_tile_get_scale_factor(self_: *mut ShumateTile) -> c_double;
1762    pub fn shumate_tile_get_size(self_: *mut ShumateTile) -> c_uint;
1763    pub fn shumate_tile_get_state(self_: *mut ShumateTile) -> ShumateState;
1764    pub fn shumate_tile_get_x(self_: *mut ShumateTile) -> c_uint;
1765    pub fn shumate_tile_get_y(self_: *mut ShumateTile) -> c_uint;
1766    pub fn shumate_tile_get_zoom_level(self_: *mut ShumateTile) -> c_uint;
1767    pub fn shumate_tile_set_fade_in(self_: *mut ShumateTile, fade_in: gboolean);
1768    pub fn shumate_tile_set_paintable(self_: *mut ShumateTile, paintable: *mut gdk::GdkPaintable);
1769    #[cfg(feature = "v1_1")]
1770    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1771    pub fn shumate_tile_set_scale_factor(self_: *mut ShumateTile, scale_factor: c_double);
1772    pub fn shumate_tile_set_size(self_: *mut ShumateTile, size: c_uint);
1773    pub fn shumate_tile_set_state(self_: *mut ShumateTile, state: ShumateState);
1774    pub fn shumate_tile_set_x(self_: *mut ShumateTile, x: c_uint);
1775    pub fn shumate_tile_set_y(self_: *mut ShumateTile, y: c_uint);
1776    pub fn shumate_tile_set_zoom_level(self_: *mut ShumateTile, zoom_level: c_uint);
1777
1778    //=========================================================================
1779    // ShumateTileDownloader
1780    //=========================================================================
1781    pub fn shumate_tile_downloader_get_type() -> GType;
1782    pub fn shumate_tile_downloader_new(url_template: *const c_char) -> *mut ShumateTileDownloader;
1783
1784    //=========================================================================
1785    // ShumateVectorReader
1786    //=========================================================================
1787    #[cfg(feature = "v1_2")]
1788    #[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
1789    pub fn shumate_vector_reader_get_type() -> GType;
1790    #[cfg(feature = "v1_2")]
1791    #[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
1792    pub fn shumate_vector_reader_new(bytes: *mut glib::GBytes) -> *mut ShumateVectorReader;
1793    #[cfg(feature = "v1_2")]
1794    #[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
1795    pub fn shumate_vector_reader_iterate(
1796        self_: *mut ShumateVectorReader,
1797    ) -> *mut ShumateVectorReaderIter;
1798
1799    //=========================================================================
1800    // ShumateVectorReaderIter
1801    //=========================================================================
1802    #[cfg(feature = "v1_2")]
1803    #[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
1804    pub fn shumate_vector_reader_iter_get_type() -> GType;
1805    #[cfg(feature = "v1_2")]
1806    #[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
1807    pub fn shumate_vector_reader_iter_feature_contains_point(
1808        self_: *mut ShumateVectorReaderIter,
1809        x: c_double,
1810        y: c_double,
1811    ) -> gboolean;
1812    #[cfg(feature = "v1_2")]
1813    #[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
1814    pub fn shumate_vector_reader_iter_get_feature_geometry_type(
1815        self_: *mut ShumateVectorReaderIter,
1816    ) -> ShumateGeometryType;
1817    #[cfg(feature = "v1_2")]
1818    #[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
1819    pub fn shumate_vector_reader_iter_get_feature_id(self_: *mut ShumateVectorReaderIter) -> u64;
1820    #[cfg(feature = "v1_2")]
1821    #[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
1822    pub fn shumate_vector_reader_iter_get_feature_keys(
1823        self_: *mut ShumateVectorReaderIter,
1824    ) -> *mut *const c_char;
1825    #[cfg(feature = "v1_2")]
1826    #[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
1827    pub fn shumate_vector_reader_iter_get_feature_point(
1828        self_: *mut ShumateVectorReaderIter,
1829        x: *mut c_double,
1830        y: *mut c_double,
1831    ) -> gboolean;
1832    #[cfg(feature = "v1_2")]
1833    #[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
1834    pub fn shumate_vector_reader_iter_get_feature_tag(
1835        self_: *mut ShumateVectorReaderIter,
1836        key: *const c_char,
1837        value: *mut gobject::GValue,
1838    ) -> gboolean;
1839    #[cfg(feature = "v1_2")]
1840    #[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
1841    pub fn shumate_vector_reader_iter_get_layer_count(
1842        self_: *mut ShumateVectorReaderIter,
1843    ) -> c_uint;
1844    #[cfg(feature = "v1_2")]
1845    #[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
1846    pub fn shumate_vector_reader_iter_get_layer_extent(
1847        self_: *mut ShumateVectorReaderIter,
1848    ) -> c_uint;
1849    #[cfg(feature = "v1_2")]
1850    #[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
1851    pub fn shumate_vector_reader_iter_get_layer_feature_count(
1852        self_: *mut ShumateVectorReaderIter,
1853    ) -> c_uint;
1854    #[cfg(feature = "v1_2")]
1855    #[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
1856    pub fn shumate_vector_reader_iter_get_layer_name(
1857        self_: *mut ShumateVectorReaderIter,
1858    ) -> *const c_char;
1859    #[cfg(feature = "v1_2")]
1860    #[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
1861    pub fn shumate_vector_reader_iter_get_reader(
1862        self_: *mut ShumateVectorReaderIter,
1863    ) -> *mut ShumateVectorReader;
1864    #[cfg(feature = "v1_2")]
1865    #[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
1866    pub fn shumate_vector_reader_iter_next_feature(self_: *mut ShumateVectorReaderIter)
1867    -> gboolean;
1868    #[cfg(feature = "v1_2")]
1869    #[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
1870    pub fn shumate_vector_reader_iter_read_feature(
1871        self_: *mut ShumateVectorReaderIter,
1872        index: c_int,
1873    );
1874    #[cfg(feature = "v1_2")]
1875    #[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
1876    pub fn shumate_vector_reader_iter_read_layer(self_: *mut ShumateVectorReaderIter, index: c_int);
1877    #[cfg(feature = "v1_2")]
1878    #[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
1879    pub fn shumate_vector_reader_iter_read_layer_by_name(
1880        self_: *mut ShumateVectorReaderIter,
1881        name: *const c_char,
1882    ) -> gboolean;
1883
1884    //=========================================================================
1885    // ShumateVectorRenderer
1886    //=========================================================================
1887    pub fn shumate_vector_renderer_get_type() -> GType;
1888    pub fn shumate_vector_renderer_new(
1889        id: *const c_char,
1890        style_json: *const c_char,
1891        error: *mut *mut glib::GError,
1892    ) -> *mut ShumateVectorRenderer;
1893    pub fn shumate_vector_renderer_is_supported() -> gboolean;
1894    #[cfg(feature = "v1_6")]
1895    #[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
1896    pub fn shumate_vector_renderer_get_global_state(
1897        self_: *mut ShumateVectorRenderer,
1898        key: *const c_char,
1899    ) -> *mut ShumateVectorValue;
1900    #[cfg(feature = "v1_1")]
1901    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1902    pub fn shumate_vector_renderer_get_sprite_sheet(
1903        self_: *mut ShumateVectorRenderer,
1904    ) -> *mut ShumateVectorSpriteSheet;
1905    #[cfg(feature = "v1_6")]
1906    #[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
1907    pub fn shumate_vector_renderer_reset_global_state(
1908        self_: *mut ShumateVectorRenderer,
1909        key: *const c_char,
1910    );
1911    #[cfg(feature = "v1_2")]
1912    #[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
1913    pub fn shumate_vector_renderer_set_data_source(
1914        self_: *mut ShumateVectorRenderer,
1915        name: *const c_char,
1916        data_source: *mut ShumateDataSource,
1917    );
1918    #[cfg(feature = "v1_6")]
1919    #[cfg_attr(docsrs, doc(cfg(feature = "v1_6")))]
1920    pub fn shumate_vector_renderer_set_global_state(
1921        self_: *mut ShumateVectorRenderer,
1922        key: *const c_char,
1923        value: *mut ShumateVectorValue,
1924    );
1925    #[cfg(feature = "v1_1")]
1926    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1927    pub fn shumate_vector_renderer_set_sprite_sheet(
1928        self_: *mut ShumateVectorRenderer,
1929        sprites: *mut ShumateVectorSpriteSheet,
1930    );
1931    pub fn shumate_vector_renderer_set_sprite_sheet_data(
1932        self_: *mut ShumateVectorRenderer,
1933        sprites_pixbuf: *mut gdk_pixbuf::GdkPixbuf,
1934        sprites_json: *const c_char,
1935        error: *mut *mut glib::GError,
1936    ) -> gboolean;
1937
1938    //=========================================================================
1939    // ShumateVectorSprite
1940    //=========================================================================
1941    #[cfg(feature = "v1_1")]
1942    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1943    pub fn shumate_vector_sprite_get_type() -> GType;
1944    #[cfg(feature = "v1_1")]
1945    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1946    pub fn shumate_vector_sprite_new(
1947        source_paintable: *mut gdk::GdkPaintable,
1948    ) -> *mut ShumateVectorSprite;
1949    #[cfg(feature = "v1_1")]
1950    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1951    pub fn shumate_vector_sprite_new_full(
1952        source_paintable: *mut gdk::GdkPaintable,
1953        width: c_int,
1954        height: c_int,
1955        scale_factor: c_double,
1956        source_rect: *mut gdk::GdkRectangle,
1957    ) -> *mut ShumateVectorSprite;
1958    #[cfg(feature = "v1_1")]
1959    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1960    pub fn shumate_vector_sprite_get_height(self_: *mut ShumateVectorSprite) -> c_int;
1961    #[cfg(feature = "v1_1")]
1962    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1963    pub fn shumate_vector_sprite_get_scale_factor(self_: *mut ShumateVectorSprite) -> c_double;
1964    #[cfg(feature = "v1_1")]
1965    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1966    pub fn shumate_vector_sprite_get_source_paintable(
1967        self_: *mut ShumateVectorSprite,
1968    ) -> *mut gdk::GdkPaintable;
1969    #[cfg(feature = "v1_1")]
1970    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1971    pub fn shumate_vector_sprite_get_source_rect(
1972        self_: *mut ShumateVectorSprite,
1973    ) -> *mut gdk::GdkRectangle;
1974    #[cfg(feature = "v1_1")]
1975    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1976    pub fn shumate_vector_sprite_get_width(self_: *mut ShumateVectorSprite) -> c_int;
1977
1978    //=========================================================================
1979    // ShumateVectorSpriteSheet
1980    //=========================================================================
1981    #[cfg(feature = "v1_1")]
1982    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1983    pub fn shumate_vector_sprite_sheet_get_type() -> GType;
1984    #[cfg(feature = "v1_1")]
1985    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1986    pub fn shumate_vector_sprite_sheet_new() -> *mut ShumateVectorSpriteSheet;
1987    #[cfg(feature = "v1_1")]
1988    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1989    pub fn shumate_vector_sprite_sheet_add_page(
1990        self_: *mut ShumateVectorSpriteSheet,
1991        texture: *mut gdk::GdkTexture,
1992        json: *const c_char,
1993        default_scale: c_double,
1994        error: *mut *mut glib::GError,
1995    ) -> gboolean;
1996    #[cfg(feature = "v1_1")]
1997    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
1998    pub fn shumate_vector_sprite_sheet_add_sprite(
1999        self_: *mut ShumateVectorSpriteSheet,
2000        name: *const c_char,
2001        sprite: *mut ShumateVectorSprite,
2002    );
2003    #[cfg(feature = "v1_1")]
2004    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
2005    pub fn shumate_vector_sprite_sheet_get_sprite(
2006        self_: *mut ShumateVectorSpriteSheet,
2007        name: *const c_char,
2008        scale: c_double,
2009    ) -> *mut ShumateVectorSprite;
2010    #[cfg(feature = "v1_1")]
2011    #[cfg_attr(docsrs, doc(cfg(feature = "v1_1")))]
2012    pub fn shumate_vector_sprite_sheet_set_fallback(
2013        self_: *mut ShumateVectorSpriteSheet,
2014        fallback: ShumateVectorSpriteFallbackFunc,
2015        user_data: gpointer,
2016        notify: glib::GDestroyNotify,
2017    );
2018
2019    //=========================================================================
2020    // ShumateViewport
2021    //=========================================================================
2022    pub fn shumate_viewport_get_type() -> GType;
2023    pub fn shumate_viewport_new() -> *mut ShumateViewport;
2024    pub fn shumate_viewport_get_max_zoom_level(self_: *mut ShumateViewport) -> c_uint;
2025    pub fn shumate_viewport_get_min_zoom_level(self_: *mut ShumateViewport) -> c_uint;
2026    pub fn shumate_viewport_get_reference_map_source(
2027        self_: *mut ShumateViewport,
2028    ) -> *mut ShumateMapSource;
2029    pub fn shumate_viewport_get_rotation(self_: *mut ShumateViewport) -> c_double;
2030    pub fn shumate_viewport_get_zoom_level(self_: *mut ShumateViewport) -> c_double;
2031    pub fn shumate_viewport_location_to_widget_coords(
2032        self_: *mut ShumateViewport,
2033        widget: *mut gtk::GtkWidget,
2034        latitude: c_double,
2035        longitude: c_double,
2036        x: *mut c_double,
2037        y: *mut c_double,
2038    );
2039    pub fn shumate_viewport_set_max_zoom_level(self_: *mut ShumateViewport, max_zoom_level: c_uint);
2040    pub fn shumate_viewport_set_min_zoom_level(self_: *mut ShumateViewport, min_zoom_level: c_uint);
2041    pub fn shumate_viewport_set_reference_map_source(
2042        self_: *mut ShumateViewport,
2043        map_source: *mut ShumateMapSource,
2044    );
2045    pub fn shumate_viewport_set_rotation(self_: *mut ShumateViewport, rotation: c_double);
2046    pub fn shumate_viewport_set_zoom_level(self_: *mut ShumateViewport, zoom_level: c_double);
2047    pub fn shumate_viewport_widget_coords_to_location(
2048        self_: *mut ShumateViewport,
2049        widget: *mut gtk::GtkWidget,
2050        x: c_double,
2051        y: c_double,
2052        latitude: *mut c_double,
2053        longitude: *mut c_double,
2054    );
2055
2056    //=========================================================================
2057    // ShumateLocation
2058    //=========================================================================
2059    pub fn shumate_location_get_type() -> GType;
2060    #[cfg(feature = "v1_2")]
2061    #[cfg_attr(docsrs, doc(cfg(feature = "v1_2")))]
2062    pub fn shumate_location_distance(
2063        self_: *mut ShumateLocation,
2064        other: *mut ShumateLocation,
2065    ) -> c_double;
2066    pub fn shumate_location_get_latitude(location: *mut ShumateLocation) -> c_double;
2067    pub fn shumate_location_get_longitude(location: *mut ShumateLocation) -> c_double;
2068    pub fn shumate_location_set_location(
2069        location: *mut ShumateLocation,
2070        latitude: c_double,
2071        longitude: c_double,
2072    );
2073
2074    //=========================================================================
2075    // Other functions
2076    //=========================================================================
2077    pub fn shumate_get_user_agent() -> *const c_char;
2078    pub fn shumate_set_user_agent(new_user_agent: *const c_char);
2079
2080}