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_TRACKING,
200 CUSTOM_ACTION_TOGGLE_TRACKS,
201 CUSTOM_ACTION_TOGGLE_SCALE,
202 CUSTOM_ACTION_TOGGLE_POI,
203 CUSTOM_ACTION_CHANGE_REPO,
204 CUSTOM_ACTION_ROUTE_DISTNEXT,
205 CUSTOM_ACTION_ROUTE_DISTLAST,
206 CUSTOM_ACTION_TRACK_BREAK,
207 CUSTOM_ACTION_TRACK_CLEAR,
208 CUSTOM_ACTION_TRACK_DISTLAST,
209 CUSTOM_ACTION_TRACK_DISTFIRST,
210 CUSTOM_ACTION_TOGGLE_GPS,
211 CUSTOM_ACTION_TOGGLE_GPSINFO,
212 CUSTOM_ACTION_TOGGLE_SPEEDLIMIT,
213 CUSTOM_ACTION_RESET_BLUETOOTH,
214 CUSTOM_ACTION_ENUM_COUNT
217 /** This enum defines all of the customizable keys. */
227 CUSTOM_KEY_FULLSCREEN,
229 CUSTOM_KEY_ENUM_COUNT
232 /** This enum defines all of the colorable objects. */
236 COLORABLE_MARK_VELOCITY,
239 COLORABLE_TRACK_MARK,
240 COLORABLE_TRACK_BREAK,
243 COLORABLE_ROUTE_BREAK,
259 DEG_FORMAT_ENUM_COUNT
264 SPEED_LOCATION_BOTTOM_LEFT,
265 SPEED_LOCATION_BOTTOM_RIGHT,
266 SPEED_LOCATION_TOP_RIGHT,
267 SPEED_LOCATION_TOP_LEFT,
268 SPEED_LOCATION_ENUM_COUNT
274 MAP_UPDATE_OVERWRITE,
277 MAP_UPDATE_ENUM_COUNT
288 /** A general definition of a point in the Maemo Mapper unit system. */
289 typedef struct _Point Point;
297 /** A WayPoint, which is a Point with a description. */
298 typedef struct _WayPoint WayPoint;
304 /** A Path is a set of PathPoints and WayPoints. */
305 typedef struct _Path Path;
307 Point *head; /* points to first element in array; NULL if empty. */
308 Point *tail; /* points to last element in array. */
309 Point *cap; /* points after last slot in array. */
310 WayPoint *whead; /* points to first element in array; NULL if empty. */
311 WayPoint *wtail; /* points to last element in array. */
312 WayPoint *wcap; /* points after last slot in array. */
315 /** Data used during the SAX parsing operation. */
316 typedef struct _SaxData SaxData;
321 gboolean at_least_one_trkpt;
325 typedef struct _PathSaxData PathSaxData;
326 struct _PathSaxData {
331 /** Data to describe a POI. */
332 typedef struct _PoiInfo PoiInfo;
343 typedef struct _PoiSaxData PoiSaxData;
350 /** Data regarding a map repository. */
351 typedef struct _RepoData RepoData;
358 gint view_zoom_steps;
359 gboolean double_size;
366 sqlite3_stmt *stmt_map_select;
367 sqlite3_stmt *stmt_map_exists;
368 sqlite3_stmt *stmt_map_update;
369 sqlite3_stmt *stmt_map_insert;
370 sqlite3_stmt *stmt_map_delete;
371 sqlite3_stmt *stmt_dup_select;
372 sqlite3_stmt *stmt_dup_exists;
373 sqlite3_stmt *stmt_dup_insert;
374 sqlite3_stmt *stmt_dup_increm;
375 sqlite3_stmt *stmt_dup_decrem;
376 sqlite3_stmt *stmt_dup_delete;
377 sqlite3_stmt *stmt_trans_begin;
378 sqlite3_stmt *stmt_trans_commit;
379 sqlite3_stmt *stmt_trans_rollback;
383 GtkWidget *menu_item;
386 /** GPS Data and Satellite **/
387 typedef struct _GpsData GpsData;
393 gfloat speed; /* in knots */
394 gfloat maxspeed; /* in knots */
404 typedef struct _GpsSatelliteData GpsSatelliteData;
405 struct _GpsSatelliteData {
412 /** Data used for rendering the entire screen. */
413 typedef struct _MapRenderTask MapRenderTask;
414 struct _MapRenderTask
420 gint screen_width_pixels;
421 gint screen_height_pixels;
428 /** Data used for rendering the entire screen. */
429 typedef struct _MapOffsetArgs MapOffsetArgs;
430 struct _MapOffsetArgs
432 gfloat old_center_offset_devx;
433 gfloat old_center_offset_devy;
434 gfloat new_center_offset_devx;
435 gfloat new_center_offset_devy;
437 gfloat percent_complete;
440 typedef struct _ThreadLatch ThreadLatch;
444 gboolean is_done_adding_tasks;
451 /** Data used during the asynchronous progress update phase of automatic map
453 typedef struct _MapUpdateTask MapUpdateTask;
454 struct _MapUpdateTask
459 ThreadLatch *refresh_latch;
468 /** Data used during the asynchronous automatic route downloading operation. */
469 typedef struct _AutoRouteDownloadData AutoRouteDownloadData;
470 struct _AutoRouteDownloadData {
472 gboolean in_progress;
475 gboolean avoid_highways;
478 /** Data to describe the GPS connection. */
479 typedef struct _GpsRcvrInfo GpsRcvrInfo;
480 struct _GpsRcvrInfo {
488 typedef struct _BrowseInfo BrowseInfo;
494 #endif /* ifndef MAEMO_MAPPER_TYPES_H */