Contents of /trunk/src/gpx.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 293 - (show annotations)
Tue Aug 17 19:00:06 2010 UTC (13 years, 9 months ago) by harbaum
File MIME type: text/plain
File size: 7948 byte(s)
Attribute icon handling
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 // gpx 1.0.1 attributes
80 #define ATT_UNKNOWN 0
81 #define ATT_DOGS 1
82 #define ATT_FEE 2
83 #define ATT_RAPPELLING 3
84 #define ATT_BOAT 4
85 #define ATT_SCUBA 5
86 #define ATT_KIDS 6
87 #define ATT_ONEHOUR 7
88 #define ATT_SCENIC 8
89 #define ATT_HIKING 9
90 #define ATT_CLIMBING 10
91 #define ATT_WADING 11
92 #define ATT_SWIMMING 12
93 #define ATT_AVAILABLE 13
94 #define ATT_NIGHT 14
95 #define ATT_WINTER 15
96 #define ATT_UNKNOWN0 16 // <-- ???
97 #define ATT_POISONOAK 17
98 #define ATT_SNAKES 18
99 #define ATT_TICKS 19
100 #define ATT_MINE 20
101 #define ATT_CLIFF 21
102 #define ATT_HUNTING 22
103 #define ATT_DANGER 23
104 #define ATT_WHEELCHAIR 24
105 #define ATT_PARKING 25
106 #define ATT_PUBLIC 26
107 #define ATT_WATER 27
108 #define ATT_RESTROOMS 28
109 #define ATT_PHONE 29
110 #define ATT_PICNIC 30
111 #define ATT_CAMPING 31
112 #define ATT_BICYCLES 32
113 #define ATT_MOTORCYCLES 33
114 #define ATT_QUADS 34
115 #define ATT_JEEPS 35
116 #define ATT_SNOWMOBILES 36
117 #define ATT_HORSES 37
118 #define ATT_CAMPFIRES 38
119 #define ATT_THORN 39
120 #define ATT_STEALTH 40
121 #define ATT_STROLLER 41
122 #define ATT_FIRSTAID 42
123 #define ATT_COW 43
124 #define ATT_FLASHLIGHT 44
125 #define ATT_MAX (ATT_FLASHLIGHT)
126
127 // august 2010 attributes
128 #define ATT_LANDF 45
129 #define ATT_UNKNOWN1 46 // <-- ???
130 #define ATT_FIELD_PUZZLE 47
131 #define ATT_UV 48
132 #define ATT_SNOWSHOES 49
133 #define ATT_SKIIS 50
134 #define ATT_S_TOOL 51
135 #define ATT_NIGHTCACHE 52
136 #define ATT_PARKNGRAB 53
137 #define ATT_ABANDONEDBUILDING 54
138 #define ATT_HIKE_SHORT 55
139 #define ATT_HIKE_MED 56
140 #define ATT_HIKE_LONG 57
141 #define ATT_FUEL 58
142 #define ATT_FOOD 59
143
144 typedef struct attribute {
145 char *name;
146 unsigned int id;
147 gboolean inc;
148 struct attribute *next;
149 } attribute_t;
150
151 typedef struct {
152 char *name;
153 unsigned int id;
154 } user_t;
155
156 typedef struct tb {
157 char *name;
158 char *ref;
159 unsigned int id;
160 struct tb *next;
161 } tb_t;
162
163 typedef struct log {
164 int day, month, year;
165 int type;
166 user_t *finder;
167 unsigned int id;
168 char *text;
169
170 struct log *next;
171 } log_t;
172
173 typedef struct pos {
174 float lat;
175 float lon;
176 } pos_t;
177
178 typedef struct wpt {
179 char *id;
180 pos_t pos;
181 char *cmt;
182 char *desc;
183 int sym;
184
185 struct wpt *next;
186 } wpt_t;
187
188 typedef struct {
189 char *text;
190 pos_t pos;
191 gboolean override;
192 gboolean found;
193 gboolean logged;
194 time_t ftime;
195 } notes_t;
196
197 typedef struct cache {
198 /* cache information */
199 char *id;
200 char *name;
201
202 user_t *owner;
203
204 int container;
205 int type;
206 char *short_description, *long_description;
207 int short_is_html, long_is_html;
208 float difficulty, terrain;
209 pos_t pos;
210 char *hint;
211 int hint_is_html;
212 int logs_are_html;
213 char *url;
214 int available, archived;
215 gboolean found; /* determined by log */
216 gboolean mine;
217
218 notes_t *notes; /* user provides data. Doesn't come from gpx file */
219 wpt_t *wpt; /* pointer to list of waypoints */
220 log_t *log; /* pointer to list of logs */
221 tb_t *tb; /* pointer to list of travelbugs */
222 attribute_t *attribute; /* pointer to list of attributes */
223 struct cache *next; /* pointer to next cache in list */
224 } cache_t;
225
226 typedef struct gpx {
227 char *filename;
228 char *name;
229 char *desc;
230 int day, month, year;
231 int notes_loaded; /* notes are loaded on demand to keep reponse fast */
232 int closed; /* true if entry is "closed" */
233 cache_t *cache;
234
235 /* pointer to next gpx in list */
236 struct gpx *next;
237 } gpx_t;
238
239 typedef struct {
240 GtkWidget *dialog;
241 GtkWidget *label, *pbar;
242 } gpx_dialog_t;
243
244 #define GPX_SORT_BY_DISTANCE 0
245 #define GPX_SORT_BY_ID 1
246 #define GPX_SORT_BY_NAME 2
247
248 gpx_dialog_t *gpx_busy_dialog_new(GtkWidget *parent);
249 void gpx_busy_dialog_destroy(gpx_dialog_t *);
250
251 gpx_t *gpx_parse(gpx_dialog_t *dialog, char *filename, char *username);
252 gpx_t *gpx_parse_dir(gpx_dialog_t *dialog, char *dirname, char *username);
253 void gpx_free(gpx_t *gpx);
254 void gpx_free_all(gpx_t *gpx);
255 void gpx_free_caches(gpx_t *gpx);
256 void gpx_display_all(gpx_t *gpx);
257 int gpx_total_caches(gpx_t *gpx);
258 int gpx_total_caches_global(gpx_t *gpx);
259 void gpx_sort(gpx_t *gpx, int by, pos_t *refpos);
260 float gpx_pos_get_bearing(pos_t p1, pos_t p2);
261 float gpx_pos_get_distance(pos_t p1, pos_t p2, int miles);
262 int gpx_number_of_waypoints(wpt_t *wpt);
263 void gpx_pos_get_distance_str(char *str, int l, pos_t p1, pos_t p2, int mil);
264 int gpx_number_of_logs(log_t *log);
265 int gpx_number_of_tbs(tb_t *tb);
266 gpx_t *gpx_cache2gpx(gpx_t *gpx, cache_t *cache);
267 pos_t gpx_cache_pos(cache_t *cache);
268
269 #endif /* GPX_H */