2 * Copyright (C) 2006, 2007 John Costigan.
4 * POI and GPS-Info code originally written by Cezary Jackiewicz.
6 * Default map data provided by http://www.openstreetmap.org/
8 * This file is part of Maemo Mapper.
10 * Maemo Mapper is free software: you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation, either version 3 of the License, or
13 * (at your option) any later version.
15 * Maemo Mapper is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
20 * You should have received a copy of the GNU General Public License
21 * along with Maemo Mapper. If not, see <http://www.gnu.org/licenses/>.
24 #ifndef MAEMO_MAPPER_TYPES_H
25 #define MAEMO_MAPPER_TYPES_H
30 #include <libgnomevfs/gnome-vfs.h>
32 #define _(String) gettext(String)
34 /* #define MAPDB_SQLITE */
40 /** This enumerated type defines the possible connection states. */
43 /** The receiver is "off", meaning that either the bluetooth radio is
44 * off or the user has requested not to connect to the GPS receiver.
45 * No gtk_banner is visible. */
48 /** The connection with the receiver is down. A gtk_banner is visible with
49 * the text, "Connecting to GPS receiver". */
52 /** The connection with the receiver is up, but a GPS fix is not available.
53 * A gtk_banner is visible with the text, "(Re-)Establishing GPS fix". */
56 /** The connection with the receiver is up and a GPS fix IS available.
57 * No gtk_banner is visible. */
61 /** This enumerated type defines the supported types of repositories. */
64 REPOTYPE_NONE, /* No URL set. */
65 REPOTYPE_XYZ, /* x=%d, y=%d, and zoom=%d */
66 REPOTYPE_XYZ_SIGNED, /* x=%d, y=%d, and zoom=%d-2 */
67 REPOTYPE_XYZ_INV, /* zoom=%0d, x=%d, y=%d */
68 REPOTYPE_QUAD_QRST, /* t=%s (%s = {qrst}*) */
69 REPOTYPE_QUAD_ZERO, /* t=%0s (%0s = {0123}*) */
70 REPOTYPE_WMS /* "service=wms" */
73 /** Possible center modes. The "WAS" modes imply no current center mode;
74 * they only hint at what the last center mode was, so that it can be
78 CENTER_WAS_LATLON = -2,
84 /** This enum defines the states of the SAX parsing state machine. */
95 INSIDE_PATH_POINT_ELE,
96 INSIDE_PATH_POINT_TIME,
97 INSIDE_PATH_POINT_DESC,
103 /** POI dialog action **/
110 /** Category list **/
138 /** This enum defines the possible units we can use. */
157 /** This enum defines the possible font sizes. */
170 /** This enum defines the possible font sizes. */
177 ROTATE_DIR_ENUM_COUNT
180 /** This enum defines all of the key-customizable actions. */
183 CUSTOM_ACTION_PAN_NORTH,
184 CUSTOM_ACTION_PAN_WEST,
185 CUSTOM_ACTION_PAN_SOUTH,
186 CUSTOM_ACTION_PAN_EAST,
187 CUSTOM_ACTION_PAN_UP,
188 CUSTOM_ACTION_PAN_DOWN,
189 CUSTOM_ACTION_PAN_LEFT,
190 CUSTOM_ACTION_PAN_RIGHT,
191 CUSTOM_ACTION_RESET_VIEW_ANGLE,
192 CUSTOM_ACTION_ROTATE_CLOCKWISE,
193 CUSTOM_ACTION_ROTATE_COUNTERCLOCKWISE,
194 CUSTOM_ACTION_TOGGLE_AUTOCENTER,
195 CUSTOM_ACTION_TOGGLE_AUTOROTATE,
196 CUSTOM_ACTION_ZOOM_IN,
197 CUSTOM_ACTION_ZOOM_OUT,
198 CUSTOM_ACTION_TOGGLE_FULLSCREEN,
199 CUSTOM_ACTION_TOGGLE_TRACKS,
200 CUSTOM_ACTION_TOGGLE_SCALE,
201 CUSTOM_ACTION_TOGGLE_POI,
202 CUSTOM_ACTION_CHANGE_REPO,
203 CUSTOM_ACTION_ROUTE_DISTNEXT,
204 CUSTOM_ACTION_ROUTE_DISTLAST,
205 CUSTOM_ACTION_TRACK_BREAK,
206 CUSTOM_ACTION_TRACK_CLEAR,
207 CUSTOM_ACTION_TRACK_DISTLAST,
208 CUSTOM_ACTION_TRACK_DISTFIRST,
209 CUSTOM_ACTION_TOGGLE_GPS,
210 CUSTOM_ACTION_TOGGLE_GPSINFO,
211 CUSTOM_ACTION_TOGGLE_SPEEDLIMIT,
212 CUSTOM_ACTION_RESET_BLUETOOTH,
213 CUSTOM_ACTION_ENUM_COUNT
216 /** This enum defines all of the customizable keys. */
226 CUSTOM_KEY_FULLSCREEN,
228 CUSTOM_KEY_ENUM_COUNT
231 /** This enum defines all of the colorable objects. */
235 COLORABLE_MARK_VELOCITY,
238 COLORABLE_TRACK_MARK,
239 COLORABLE_TRACK_BREAK,
242 COLORABLE_ROUTE_BREAK,
258 DEG_FORMAT_ENUM_COUNT
263 SPEED_LOCATION_BOTTOM_LEFT,
264 SPEED_LOCATION_BOTTOM_RIGHT,
265 SPEED_LOCATION_TOP_RIGHT,
266 SPEED_LOCATION_TOP_LEFT,
267 SPEED_LOCATION_ENUM_COUNT
273 MAP_UPDATE_OVERWRITE,
276 MAP_UPDATE_ENUM_COUNT
287 /** A general definition of a point in the Maemo Mapper unit system. */
288 typedef struct _Point Point;
296 /** A WayPoint, which is a Point with a description. */
297 typedef struct _WayPoint WayPoint;
303 /** A Path is a set of PathPoints and WayPoints. */
304 typedef struct _Path Path;
306 Point *head; /* points to first element in array; NULL if empty. */
307 Point *tail; /* points to last element in array. */
308 Point *cap; /* points after last slot in array. */
309 WayPoint *whead; /* points to first element in array; NULL if empty. */
310 WayPoint *wtail; /* points to last element in array. */
311 WayPoint *wcap; /* points after last slot in array. */
314 /** Data used during the SAX parsing operation. */
315 typedef struct _SaxData SaxData;
320 gboolean at_least_one_trkpt;
324 typedef struct _PathSaxData PathSaxData;
325 struct _PathSaxData {
330 /** Data to describe a POI. */
331 typedef struct _PoiInfo PoiInfo;
342 typedef struct _PoiSaxData PoiSaxData;
349 /** Data regarding a map repository. */
350 typedef struct _RepoData RepoData;
357 gint view_zoom_steps;
358 gboolean double_size;
365 sqlite3_stmt *stmt_map_select;
366 sqlite3_stmt *stmt_map_exists;
367 sqlite3_stmt *stmt_map_update;
368 sqlite3_stmt *stmt_map_insert;
369 sqlite3_stmt *stmt_map_delete;
370 sqlite3_stmt *stmt_dup_select;
371 sqlite3_stmt *stmt_dup_exists;
372 sqlite3_stmt *stmt_dup_insert;
373 sqlite3_stmt *stmt_dup_increm;
374 sqlite3_stmt *stmt_dup_decrem;
375 sqlite3_stmt *stmt_dup_delete;
376 sqlite3_stmt *stmt_trans_begin;
377 sqlite3_stmt *stmt_trans_commit;
378 sqlite3_stmt *stmt_trans_rollback;
382 GtkWidget *menu_item;
385 /** GPS Data and Satellite **/
386 typedef struct _GpsData GpsData;
392 gfloat speed; /* in knots */
393 gfloat maxspeed; /* in knots */
403 typedef struct _GpsSatelliteData GpsSatelliteData;
404 struct _GpsSatelliteData {
411 /** Data used for rendering the entire screen. */
412 typedef struct _MapRenderTask MapRenderTask;
413 struct _MapRenderTask
419 gint screen_width_pixels;
420 gint screen_height_pixels;
427 /** Data used for rendering the entire screen. */
428 typedef struct _MapOffsetArgs MapOffsetArgs;
429 struct _MapOffsetArgs
431 gfloat old_center_offset_devx;
432 gfloat old_center_offset_devy;
433 gfloat new_center_offset_devx;
434 gfloat new_center_offset_devy;
436 gfloat percent_complete;
439 typedef struct _ThreadLatch ThreadLatch;
443 gboolean is_done_adding_tasks;
450 /** Data used during the asynchronous progress update phase of automatic map
452 typedef struct _MapUpdateTask MapUpdateTask;
453 struct _MapUpdateTask
458 ThreadLatch *refresh_latch;
467 /** Data used during the asynchronous automatic route downloading operation. */
468 typedef struct _AutoRouteDownloadData AutoRouteDownloadData;
469 struct _AutoRouteDownloadData {
471 gboolean in_progress;
474 gboolean avoid_highways;
477 /** Data to describe the GPS connection. */
478 typedef struct _GpsRcvrInfo GpsRcvrInfo;
479 struct _GpsRcvrInfo {
487 typedef struct _BrowseInfo BrowseInfo;
493 #endif /* ifndef MAEMO_MAPPER_TYPES_H */