]> err.no Git - mapper/blobdiff - src/osm.h
Move ProgressUpdateInfo struct
[mapper] / src / osm.h
index b28a2562837582a0e827d090b9e3f7719aa79c19..bce160ea7a1388263abc8ef88ed173b739a9acee 100644 (file)
--- a/src/osm.h
+++ b/src/osm.h
@@ -1,3 +1,23 @@
+/*
+ * This file is part of mapper
+ *
+ * Copyright (C) 2007 Kaj-Michael Lang
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
 #ifndef _OSM_H
 #define _OSM_H
 
@@ -7,6 +27,7 @@
 #define W_LINK         (1 << 3)
 #define W_AREA         (1 << 4)
 #define W_NOEXIT       (1 << 5)
+#define W_NOACCESS     (1 << 6)
 
 #define ILAT_TURKU 911084432
 #define ILON_TURKU 265542144
@@ -15,6 +36,7 @@
  * by 100 and the result is the importance/priority of the poi.
  * This can be used by the client program to discard 
  * unimportant poi at different zoom levels.
+ * It limits the categories to 100/priority but... I think that's fine :)
  */
 typedef enum {
        NODE_PLAIN=0,
@@ -24,49 +46,125 @@ typedef enum {
        NODE_AMENITY_PARKING=100,
        NODE_AMENITY_FUEL=101,
        NODE_AMENITY_SPEEDCAM=102,
+
        NODE_AMENITY_HOSPITAL=120,
        NODE_AMENITY_PHARMACY=121,
        NODE_AMENITY_POLICE=130,
-       NODE_AMENITY_HOTEL=200,
-       NODE_AMENITY_HOSTEL=201,
+
+       NODE_TOURISM_HOTEL=200,
+       NODE_TOURISM_HOSTEL=201,
+       NODE_TOURISM_MOTEL=202,
+
        NODE_AMENITY_ATM=205,
        NODE_AMENITY_BANK=206,
+
        NODE_AMENITY_POST=210,
        NODE_AMENITY_POST_BOX=211,
+
+       NODE_TOURISM_INFO=219,
+
        NODE_AMENITY_TAXI=220,
-       NODE_AMENITY_RAILWAY_STATION=230,
-       NODE_AMENITY_RAILWAY_HALT=231,
+       NODE_RAILWAY_STATION=230,
+       NODE_RAILWAY_HALT=231,
        NODE_AMENITY_BUS_STATION=236,
        NODE_AMENITY_BOAT=240,
-       NODE_AMENITY_AIRPORT=250,
+       NODE_AIRPORT_TERMINAL=250,
+
+       NODE_TOURISM_CAMP_SITE=280,
+       NODE_TOURISM_CARAVAN_SITE=281,
+       NODE_TOURISM_PICNIC_SITE=282,
+
+       NODE_AMENITY_RESTAURANT=300,
        NODE_AMENITY_FOOD=301,
        NODE_AMENITY_PUB=302,
+
        NODE_AMENITY_CINEMA=303,
        NODE_AMENITY_THEATRE=304,
        NODE_AMENITY_SHOP=305,
+       NODE_AMENITY_CAFE=306,
+       NODE_AMENITY_TELEPHONE=307,
+       NODE_AMENITY_WC=308,
+       NODE_TOURISM_THEME_PARK=309,
        NODE_AMENITY_POW=310,
+       NODE_AMENITY_LIBRARY=311,
+       NODE_AMENITY_NIGHTCLUB=312,
+       NODE_AMENITY_SHOP_ADULT=313,
        NODE_AMENITY_COLLEGE=320,
        NODE_AMENITY_SCHOOL=321,
+       NODE_AMENITY_TOWNHALL=325,
+       NODE_TOURISM_ATTRACTION=330,
+
+       NODE_HISTORIC_MUSEUM=340,
+       NODE_HISTORIC_CASTLE=341,
+
+       NODE_AMENITY_SHOP_SUPERMARKET=350,
+       NODE_AMENITY_SHOPPING_CENTER=351,
+       NODE_AMENITY_SHOP_ALCOHOL=352,
+       NODE_AMENITY_SHOP_FLOWERS=353,
+       NODE_AMENITY_SHOP_BAKERY=354,
+
+       /* Sport */
+       NODE_SPORT_CENTER=400,
+       NODE_SPORT_STADIUM=401,
+       NODE_SPORT_SKIING=402,
+       NODE_SPORT_SWIMMING=403,
+       NODE_SPORT_FOOTBALL=404,
+       NODE_SPORT_SOCCER=405,
+       NODE_SPORT_GOLF=406,
+       NODE_SPORT_TENNIS=407,
+       NODE_SPORT_BOWLING=408,
+       NODE_SPORT_RUGBY=409,   
+       NODE_SPORT_CLIMBING=410,
+       NODE_SPORT_MOTOR=411,
+       NODE_SPORT_HOCKEY=412,
+       NODE_SPORT_BASKETBALL=414,
+       NODE_SPORT_CANOE=415,
+       NODE_SPORT_BASEBALL=416,
+       NODE_SPORT_SKATING=417,
+       NODE_SPORT_SKATEBOARD=418,
+       NODE_SPORT_RACQUET=419,
+       NODE_SPORT_CROQUET=420,
+       NODE_SPORT_CRICKET=421,
+       NODE_SPORT_PELOTA=422,
+       NODE_SPORT_TABLE_TENNIS=423,
+       NODE_SPORT_GYMNASTICS=424,
+       NODE_SPORT_CYCLING=425,
+       NODE_SPORT_BOWLS=426,
+       NODE_SPORT_ATHLETICS=427,
+       NODE_SPORT_SHOOTING=430,
+       NODE_SPORT_PAINTBALL=431,
+       NODE_SPORT_DOG=435,
+       NODE_SPORT_HORSES=436,
+       NODE_SPORT_OTHER=450,
+
        NODE_AMENITY_GENERIC=900,
        /* */
        NODE_POI_END=999,
        /* Places */
        NODE_PLACE_START=1000,
-       NODE_PLACE_SUBURB=1001,
+       NODE_PLACE_SUBURB=1001, /* http://wiki.openstreetmap.org/index.php/Proposed_features/Suburb */
+       NODE_PLACE_LOCALITY=1002, /* http://wiki.openstreetmap.org/index.php/Proposed_features/Locality */
        NODE_PLACE_HAMLET=1049,
        NODE_PLACE_VILLAGE=1050,
+       NODE_PLACE_ISLAND=1051,
        NODE_PLACE_TOWN=1099,
        NODE_PLACE_CITY=1100,
+       NODE_PLACE_AREA=1200,
+       NODE_PLACE_COUNTRY=1490,
        NODE_PLACE_END=1500,
 
        /* Other */
        NODE_TRAFFIC_SIGNALS=2000,
+       NODE_GATE=2001,
+       NODE_TOLLBOOTH=2002,
+       NODE_JUNCTION=2003,
 
        NODE_TYPE_MAX=9000
 } node_type_t;
 
 typedef enum {
        WAY_UNWAYED=0,
+       WAY_ROAD_START,
        WAY_MOTORWAY,
        WAY_TRUNK,
        WAY_PRIMARY,
@@ -78,32 +176,96 @@ typedef enum {
        WAY_TRACK,
        WAY_FOOTWAY,
        WAY_CYCLEWAY,
+       WAY_ROAD_END,
 
+       /* Non-roads */
+       WAY_OTHER_START,
        WAY_RAIL,
-
+       WAY_RUNWAY,
+       WAY_TAXIWAY,
        WAY_WATER,
        WAY_WATER_RIVER,
        WAY_WATER_STREAM,
        WAY_WATER_CANAL,
-       WAY_OTHER
+       WAY_OTHER_WAY,
+       WAY_OTHER_END
 } way_type_t;
 
+/* Route waypoint types */
+typedef enum {
+       WPT_START,
+       WPT_STOP,
+       WPT_END
+} waypoint_type_t;
+
+/* A place (city,town,village,suburb) */
 typedef struct _osm_place osm_place;
 struct _osm_place {
        guint32 id;
        node_type_t type;
        gchar *name;
-       gint lat;
-       gint lon;
-       gint dist;
+       gint32 lat;
+       gint32 lon;
+       gdouble dist;
+       guint32 isin_p;
+       guint32 isin_c;
+};
+
+/* Way node */
+typedef struct _osm_way_node osm_way_node;
+struct _osm_way_node {
+       guint32 id;
+       guint32 flags;
+       gint32 lat;
+       gint32 lon;
 };
 
+/* Way */
 typedef struct _osm_way osm_way;
 struct _osm_way {
        guint32 id;
-       gshort type;
-       guint flags;
+       guint32 isin_c;
+       guint32 isin_p;
+       gint16 type;
+       guint32 flags;
+       guint16 nodecnt;
+       guint32 f;
+       guint32 t;
+       gint8 speed;
+       gdouble dist;
+       gdouble distance;
+       gchar *name;
+       gchar *ref;
+       gchar *int_ref;
+       osm_way_node *node_f;
+       osm_way_node *node_t;
+       gint8 direction;
        GList *nodes;
 };
 
+/* Route waypoint */
+typedef struct _osm_waypoint osm_waypoint;
+struct _osm_waypoint {
+       osm_way *way;
+       waypoint_type_t type;
+};
+
+/* Location: way/street we are on, city/town/village/hamlet and suburb */
+/* With helpers, speed and heading at last known location */
+typedef struct _osm_location osm_location;
+struct _osm_location {
+       osm_way *street;
+       osm_place *primary;
+       osm_place *secondary;
+       gboolean changed;
+       gboolean valid;
+       gint32 lat;
+       gint32 lon;
+       gfloat heading;
+       gfloat speed;
+
+       time_t last_valid;
+       gint nfcnt;
+};
+
 #endif