Contents of /trunk/src/gpx.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (hide annotations)
Sat Jun 20 11:08:47 2009 UTC (14 years, 11 months ago) by harbaum
File MIME type: text/plain
File size: 5334 byte(s)
Initial import
1 harbaum 1 /*
2     * Copyright (C) 2008 Till Harbaum <till@harbaum.org>.
3     *
4     * This file is part of GPXView.
5     *
6     * GPXView 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 3 of the License, or
9     * (at your option) any later version.
10     *
11     * GPXView 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 GPXView. If not, see <http://www.gnu.org/licenses/>.
18     */
19    
20     #ifndef GPX_H
21     #define GPX_H
22    
23     #ifndef NAN
24     #define NAN (0.0/0.0)
25     #endif
26    
27     #define WPT_SYM_UNKNOWN -1
28     #define WPT_SYM_MULTISTAGE 0
29     #define WPT_SYM_PARKING 1
30     #define WPT_SYM_FINAL 2
31     #define WPT_SYM_QUESTION 3
32     #define WPT_SYM_TRAILHEAD 4
33     #define WPT_SYM_REFPOINT 5
34     #define WPT_SYM_MAX (WPT_SYM_REFPOINT)
35    
36     #define CACHE_TYPE_UNKNOWN -1
37     #define CACHE_TYPE_TRADITIONAL 0
38     #define CACHE_TYPE_MULTI 1
39     #define CACHE_TYPE_MYSTERY 2
40     #define CACHE_TYPE_VIRTUAL 3
41     #define CACHE_TYPE_WEBCAM 4
42     #define CACHE_TYPE_EVENT 5
43     #define CACHE_TYPE_LETTERBOX 6
44     #define CACHE_TYPE_EARTHCACHE 7
45     #define CACHE_TYPE_WHERIGO 8
46     #define CACHE_TYPE_MEGA_EVENT 9
47     #define CACHE_TYPE_CITO 10
48     #define CACHE_TYPE_MAX (CACHE_TYPE_CITO)
49    
50     #define CACHE_CONT_UNKNOWN -1
51     #define CACHE_CONT_REGULAR 0
52     #define CACHE_CONT_SMALL 1
53     #define CACHE_CONT_MICRO 2
54     #define CACHE_CONT_OTHER 3
55     #define CACHE_CONT_NOT_CHOSEN 4
56     #define CACHE_CONT_LARGE 5
57     #define CACHE_CONT_VIRTUAL 6
58     #define CACHE_CONT_MAX (CACHE_CONT_VIRTUAL)
59    
60     #define LOG_TYPE_UNKNOWN -1
61     #define LOG_TYPE_FOUND 0
62     #define LOG_TYPE_NOT_FOUND 1
63     #define LOG_TYPE_MAINTENANCE 2
64     #define LOG_TYPE_WRITE_NOTE 3
65     #define LOG_TYPE_REVIEWER_NOTE 4
66     #define LOG_TYPE_ENABLE_LISTING 5
67     #define LOG_TYPE_PUBLISH_LISTING 6
68     #define LOG_TYPE_WILL_ATTEND 7
69     #define LOG_TYPE_ATTENDED 8
70     #define LOG_TYPE_PHOTO 9
71     #define LOG_TYPE_TEMP_DISABLE 10
72     #define LOG_TYPE_NEEDS_MAIN 11
73     #define LOG_TYPE_UPDATED_COORDINATES 12
74     #define LOG_TYPE_UNARCHIVE 13
75     #define LOG_TYPE_NEEDS_ARCHIVED 14
76     #define LOG_TYPE_ARCHIVE 15
77     #define LOG_TYPE_MAX (LOG_TYPE_ARCHIVE)
78    
79    
80     typedef struct tb {
81     char *name;
82     char *ref;
83     struct tb *next;
84     } tb_t;
85    
86     typedef struct log {
87     int day, month, year;
88     int type;
89     char *finder;
90     char *text;
91    
92     struct log *next;
93     } log_t;
94    
95     typedef struct pos {
96     float lat;
97     float lon;
98     } pos_t;
99    
100     typedef struct wpt {
101     char *id;
102     pos_t pos;
103     char *cmt;
104     char *desc;
105     int sym;
106    
107     struct wpt *next;
108     } wpt_t;
109    
110     typedef struct {
111     char *text;
112     pos_t pos;
113     gboolean override;
114     gboolean found;
115     gboolean logged;
116     time_t ftime;
117     } notes_t;
118    
119     typedef struct cache {
120     /* cache information */
121     char *id;
122     char *name;
123     char *owner;
124     int container;
125     int type;
126     char *short_description, *long_description;
127     int short_is_html, long_is_html;
128     float difficulty, terrain;
129     pos_t pos;
130     char *hint;
131     int hint_is_html;
132     int logs_are_html;
133     char *url;
134     int available, archived;
135    
136     notes_t *notes; /* user provides data. Doesn't come from gpx file */
137     wpt_t *wpt; /* pointer to list of waypoints */
138     log_t *log; /* pointer to list of logs */
139     tb_t *tb; /* pointer to list of travelbugs */
140     struct cache *next; /* pointer to next cache in list */
141     } cache_t;
142    
143     typedef struct gpx {
144     char *filename;
145     char *name;
146     char *desc;
147     int day, month, year;
148     int notes_loaded; /* notes are loaded on demand to keep reponse fast */
149     int closed; /* true if entry is "closed" */
150     cache_t *cache;
151    
152     /* pointer to next gpx in list */
153     struct gpx *next;
154     } gpx_t;
155    
156     typedef struct {
157     GtkWidget *dialog;
158     GtkWidget *label, *pbar;
159     } gpx_dialog_t;
160    
161     #define GPX_SORT_BY_DISTANCE 0
162     #define GPX_SORT_BY_ID 1
163     #define GPX_SORT_BY_NAME 2
164    
165     gpx_dialog_t *gpx_busy_dialog_new(GtkWidget *parent);
166     void gpx_busy_dialog_destroy(gpx_dialog_t *);
167    
168     gpx_t *gpx_parse(gpx_dialog_t *dialog, char *filename);
169     gpx_t *gpx_parse_dir(gpx_dialog_t *dialog, char *dirname);
170     void gpx_free(gpx_t *gpx);
171     void gpx_free_all(gpx_t *gpx);
172     void gpx_free_caches(gpx_t *gpx);
173     void gpx_display_all(gpx_t *gpx);
174     int gpx_total_caches(gpx_t *gpx);
175     void gpx_sort(gpx_t *gpx, int by, pos_t *refpos);
176     float gpx_pos_get_bearing(pos_t p1, pos_t p2);
177     float gpx_pos_get_distance(pos_t p1, pos_t p2, int miles);
178     int gpx_number_of_waypoints(wpt_t *wpt);
179     void gpx_pos_get_distance_str(char *str, int l, pos_t p1, pos_t p2, int mil);
180     int gpx_number_of_logs(log_t *log);
181     int gpx_number_of_tbs(tb_t *tb);
182     gpx_t *gpx_cache2gpx(gpx_t *gpx, cache_t *cache);
183     pos_t gpx_cache_pos(cache_t *cache);
184    
185     #endif /* GPX_H */