]> git.street.me.uk Git - andy/viking.git/blob - src/datasource_bfilter.c
Import Launchpad updates
[andy/viking.git] / src / datasource_bfilter.c
1 /*
2  * viking -- GPS Data and Topo Analyzer, Explorer, and Manager
3  *
4  * Copyright (C) 2003-2005, Evan Battaglia <gtoevan@gmx.net>
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  *
20  */
21 #ifdef HAVE_CONFIG_H
22 #include "config.h"
23 #endif
24 #include <string.h>
25 #include <glib/gi18n.h>
26
27 #include "viking.h"
28 #include "babel.h"
29 #include "gpx.h"
30 #include "acquire.h"
31
32
33 /************************************ Simplify ***********************************/
34
35 static void datasource_bfilter_simplify_get_cmd_string ( VikLayerParamData *paramdatas, gchar **cmd, gchar **input_file_type, const gchar *input_filename );
36
37 /* TODO: shell_escape stuff */
38 /* TODO: name is useless for filters */
39
40 /* spin button scales */
41 VikLayerParamScale simplify_params_scales[] = {
42   {1, 10000, 10, 0},
43 };
44
45 VikLayerParam bfilter_simplify_params[] = {
46   { "numberofpoints", VIK_LAYER_PARAM_UINT, VIK_LAYER_GROUP_NONE, N_("Max number of points:"), VIK_LAYER_WIDGET_SPINBUTTON, simplify_params_scales, NULL },
47 };
48
49 VikLayerParamData bfilter_simplify_params_defaults[] = {
50   /* Annoyingly 'C' cannot initialize unions properly */
51   /* It's dependent on the standard used or the compiler support... */
52 #if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L || __GNUC__
53   { .i = 100 },
54 #else
55   { 100 },
56 #endif
57 };
58
59 VikDataSourceInterface vik_datasource_bfilter_simplify_interface = {
60   N_("Simplify All Tracks"),
61   N_("Simplified Tracks"),
62   VIK_DATASOURCE_SHELL_CMD,
63   VIK_DATASOURCE_CREATENEWLAYER,
64   VIK_DATASOURCE_INPUTTYPE_TRWLAYER,
65   FALSE, /* keep dialog open after success */
66   NULL, NULL, NULL,
67   (VikDataSourceGetCmdStringFunc)       datasource_bfilter_simplify_get_cmd_string,
68   NULL, NULL, NULL,
69   (VikDataSourceOffFunc) NULL,
70
71   bfilter_simplify_params,
72   sizeof(bfilter_simplify_params)/sizeof(bfilter_simplify_params[0]),
73   bfilter_simplify_params_defaults,
74   NULL,
75   0
76 };
77
78
79 static void datasource_bfilter_simplify_get_cmd_string ( VikLayerParamData *paramdatas, gchar **cmd, gchar **input_file_type, const gchar *input_filename )
80 {
81   *input_file_type = NULL;
82   *cmd = g_strdup_printf ( "gpsbabel -i gpx -f %s -x simplify,count=%d -o gpx -F -", input_filename, paramdatas[0].u );
83 }
84
85 /************************************ Duplicate Location ***********************************/
86
87 static void datasource_bfilter_dup_get_cmd_string ( VikLayerParamData *paramdatas, gchar **cmd, gchar **input_file_type, const gchar *input_filename );
88
89 /* TODO: shell_escape stuff */
90 /* TODO: name is useless for filters */
91
92
93 VikDataSourceInterface vik_datasource_bfilter_dup_interface = {
94   N_("Remove Duplicate Waypoints"),
95   N_("Remove Duplicate Waypoints"),
96   VIK_DATASOURCE_SHELL_CMD,
97   VIK_DATASOURCE_CREATENEWLAYER,
98   VIK_DATASOURCE_INPUTTYPE_TRWLAYER,
99   FALSE, /* keep dialog open after success */
100   NULL, NULL, NULL,
101   (VikDataSourceGetCmdStringFunc)       datasource_bfilter_dup_get_cmd_string,
102   NULL, NULL, NULL,
103   (VikDataSourceOffFunc) NULL,
104
105   NULL, 0, NULL, NULL, 0
106 };
107
108
109 static void datasource_bfilter_dup_get_cmd_string ( VikLayerParamData *paramdatas, gchar **cmd, gchar **input_file_type, const gchar *input_filename )
110 {
111   *input_file_type = NULL;
112   *cmd = g_strdup_printf ( "gpsbabel -i gpx -f %s -x duplicate,location -o gpx -F -", input_filename );
113 }
114
115
116 /************************************ Polygon ***********************************/
117
118 static void datasource_bfilter_polygon_get_cmd_string ( VikLayerParamData *paramdatas, gchar **cmd, gchar **input_file_type, const gchar *input_filename, const gchar *input_track_filename );
119
120 /* TODO: shell_escape stuff */
121 /* TODO: name is useless for filters */
122
123
124 VikDataSourceInterface vik_datasource_bfilter_polygon_interface = {
125   N_("Waypoints Inside This"),
126   N_("Polygonized Layer"),
127   VIK_DATASOURCE_SHELL_CMD,
128   VIK_DATASOURCE_CREATENEWLAYER,
129   VIK_DATASOURCE_INPUTTYPE_TRWLAYER_TRACK,
130   FALSE, /* keep dialog open after success */
131   NULL, NULL, NULL,
132   (VikDataSourceGetCmdStringFunc)       datasource_bfilter_polygon_get_cmd_string,
133   NULL, NULL, NULL,
134   (VikDataSourceOffFunc) NULL,
135
136   NULL,
137   0,
138   NULL,
139   NULL,
140   0
141 };
142
143
144 static void datasource_bfilter_polygon_get_cmd_string ( VikLayerParamData *paramdatas, gchar **cmd, gchar **input_file_type, const gchar *input_filename, const gchar *input_track_filename )
145 {
146   *input_file_type = NULL;
147   *cmd = g_strdup_printf ( "gpsbabel -i gpx -f %s -o arc -F - | gpsbabel -i gpx -f %s -x polygon,file=- -o gpx -F -", input_track_filename, input_filename );
148 }
149
150 /************************************ Exclude Polygon ***********************************/
151
152 static void datasource_bfilter_exclude_polygon_get_cmd_string ( VikLayerParamData *paramdatas, gchar **cmd, gchar **input_file_type, const gchar *input_filename, const gchar *input_track_filename );
153
154 /* TODO: shell_escape stuff */
155 /* TODO: name is useless for filters */
156
157
158 VikDataSourceInterface vik_datasource_bfilter_exclude_polygon_interface = {
159   N_("Waypoints Outside This"),
160   N_("Polygonzied Layer"),
161   VIK_DATASOURCE_SHELL_CMD,
162   VIK_DATASOURCE_CREATENEWLAYER,
163   VIK_DATASOURCE_INPUTTYPE_TRWLAYER_TRACK,
164   FALSE, /* keep dialog open after success */
165   NULL, NULL, NULL,
166   (VikDataSourceGetCmdStringFunc)       datasource_bfilter_exclude_polygon_get_cmd_string,
167   NULL, NULL, NULL,
168   (VikDataSourceOffFunc) NULL,
169
170   NULL,
171   0,
172   NULL,
173   NULL,
174   0
175 };
176
177
178 static void datasource_bfilter_exclude_polygon_get_cmd_string ( VikLayerParamData *paramdatas, gchar **cmd, gchar **input_file_type, const gchar *input_filename, const gchar *input_track_filename )
179 {
180   *input_file_type = NULL;
181   *cmd = g_strdup_printf ( "gpsbabel -i gpx -f %s -o arc -F - | gpsbabel -i gpx -f %s -x polygon,exclude,file=- -o gpx -F -", input_track_filename, input_filename );
182 }
183