]> git.street.me.uk Git - andy/viking.git/blame - src/babel.h
Fix crash if a route requested by the route finder is empty.
[andy/viking.git] / src / babel.h
CommitLineData
1d1bc3c1
EB
1/*
2 * viking -- GPS Data and Topo Analyzer, Explorer, and Manager
3 *
4 * Copyright (C) 2003-2005, Evan Battaglia <gtoevan@gmx.net>
5 * Copyright (C) 2005, Alex Foobarian <foobarian@gmail.com>
17acdaec 6 * Copyright (C) 2015, Rob Norris <rw_norris@hotmail.com>
1d1bc3c1
EB
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 *
22 */
23
24#ifndef _VIKING_BABEL_H
25#define _VIKING_BABEL_H
26
a25c4c50
GB
27#include <glib.h>
28
29#include "viktrwlayer.h"
512bc836 30#include "download.h"
a25c4c50 31
722b5481
RN
32G_BEGIN_DECLS
33
072cbb13
GB
34/**
35 * BabelProgressCode:
36 * @BABEL_DIAG_OUTPUT: a line of diagnostic output is available. The pointer is to a
37 * NULL-terminated line of diagnostic output from gpsbabel.
38 * @BABEL_DONE: gpsbabel finished, or %NULL if no callback is needed.
39 *
40 * Used when calling #BabelStatusFunc.
41 */
1d1bc3c1
EB
42typedef enum {
43 BABEL_DIAG_OUTPUT,
44 BABEL_DONE,
45} BabelProgressCode;
46
072cbb13
GB
47/**
48 * BabelStatusFunc:
49 *
50 * Callback function.
51 */
7b3479e3 52typedef void (*BabelStatusFunc)(BabelProgressCode, gpointer, gpointer);
1d1bc3c1 53
17acdaec
RN
54/**
55 * ProcessOptions:
56 *
57 * All values are defaulted to NULL
58 *
59 * Need to specify at least one of babelargs, URL or shell_command
60 */
61typedef struct {
62 gchar* babelargs; // The standard initial arguments to gpsbabel (if gpsbabel is to be used) - normally should include the input file type (-i) option.
63 gchar* filename; // Input filename (or device port e.g. /dev/ttyS0)
64 gchar* input_file_type; // If NULL then uses internal file format handler (GPX only ATM), otherwise specify gpsbabel input type like "kml","tcx", etc...
65 gchar* url; // URL input rather than a filename
66 gchar* babel_filters; // Optional filter arguments to gpsbabel
67 gchar* shell_command; // Optional shell command to run instead of gpsbabel - but will be (Unix) platform specific
68} ProcessOptions;
69
79e0f36e
GB
70/**
71 * BabelMode:
72 *
73 * Store the Read/Write support offered by gpsbabel for a given format.
74 */
75typedef struct {
76 unsigned waypointsRead : 1;
77 unsigned waypointsWrite : 1;
78 unsigned tracksRead : 1;
79 unsigned tracksWrite : 1;
80 unsigned routesRead : 1;
81 unsigned routesWrite : 1;
82} BabelMode;
83
84/**
85 * BabelDevice:
86 * @name: gpsbabel's identifier of the device
87 * @label: human readable label
88 *
89 * Representation of a supported device.
90 */
91typedef struct {
92 BabelMode mode;
93 gchar *name;
94 gchar *label;
95} BabelDevice;
96
97/**
98 * BabelFile:
c6acf18d 99 * @name: gpsbabel's identifier of the format
79e0f36e
GB
100 * @ext: file's extension for this format
101 * @label: human readable label
102 *
103 * Representation of a supported file format.
104 */
105typedef struct {
106 BabelMode mode;
107 gchar *name;
108 gchar *ext;
109 gchar *label;
110} BabelFile;
111
112GList *a_babel_file_list;
113GList *a_babel_device_list;
114
b666a8ba 115void a_babel_foreach_file_with_mode (BabelMode mode, GFunc func, gpointer user_data);
2f5f0fb8 116void a_babel_foreach_file_read_any (GFunc func, gpointer user_data);
b666a8ba 117
17acdaec 118// NB needs to match typedef VikDataSourceProcessFunc in acquire.h
155f558c 119gboolean a_babel_convert_from ( VikTrwLayer *vt, ProcessOptions *process_options, BabelStatusFunc cb, gpointer user_data, DownloadFileOptions *download_options );
17acdaec 120
6f94db6d 121gboolean a_babel_convert_to( VikTrwLayer *vt, VikTrack *track, const char *babelargs, const char *file, BabelStatusFunc cb, gpointer user_data );
8cf048bd 122
18ec873d 123void a_babel_init ();
e530cc9f 124void a_babel_post_init ();
18ec873d
GB
125void a_babel_uninit ();
126
430a37a9
GB
127gboolean a_babel_available ();
128
722b5481
RN
129G_END_DECLS
130
1d1bc3c1 131#endif