]> git.street.me.uk Git - andy/viking.git/blob - src/garminsymbols.c
Add Terraserver
[andy/viking.git] / src / garminsymbols.c
1 /*
2  * viking -- GPS Data and Topo Analyzer, Explorer, and Manager
3  *
4  * Copyright (C) 2003-2005, Evan Battaglia <gtoevan@gmx.net>
5  *
6  * This program 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 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program 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 this program; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  *
20  */
21
22 #include "viking.h"
23 #include "garminsymbols.h"
24 #include "icons/icons.h"
25
26 #include <string.h>
27 #include <stdlib.h>
28
29 struct {
30   gchar *sym;
31   gint num;
32   gchar *desc;
33   const GdkPixdata *data;
34   GdkPixbuf *icon;
35 } garmin_syms[] = {
36   /*---------------------------------------------------------------
37     Marine symbols
38     ---------------------------------------------------------------*/
39   { "anchor",         0,     "white anchor symbol",               &wp_anchor_pixbuf,          NULL },
40   { "bell",           1,     "white bell symbol",                 &wp_bell_pixbuf,            NULL },
41   { "diamond_grn",    2,     "green diamond symbol",              &wp_diamond_grn_pixbuf,     NULL },
42   { "diamond_red",    3,     "red diamond symbol",                &wp_diamond_red_pixbuf,     NULL },
43   { "dive1",          4,     "diver down flag 1",                 &wp_dive1_pixbuf,           NULL },
44   { "dive2",          5,     "diver down flag 2",                 &wp_dive2_pixbuf,           NULL },
45   { "dollar",         6,     "white dollar symbol",               &wp_dollar_pixbuf,          NULL },
46   { "fish",           7,     "white fish symbol",                 &wp_fish_pixbuf,            NULL },
47   { "fuel",           8,     "white fuel symbol",                 &wp_fuel_pixbuf,            NULL },
48   { "horn",           9,     "white horn symbol",                 &wp_horn_pixbuf,            NULL },
49   { "house",          10,    "white house symbol",                &wp_house_pixbuf,           NULL },
50   { "knife",          11,    "white knife & fork symbol",         &wp_knife_pixbuf,           NULL },
51   { "light",          12,    "white light symbol",                &wp_light_pixbuf,           NULL },
52   { "mug",            13,    "white mug symbol",                  &wp_mug_pixbuf,             NULL },
53   { "skull",          14,    "white skull and crossbones symbol", &wp_skull_pixbuf,           NULL },
54   { "square_grn",     15,    "green square symbol",               &wp_square_grn_pixbuf,      NULL },
55   { "square_red",     16,    "red square symbol",                 &wp_square_red_pixbuf,      NULL },
56   { "wbuoy",          17,    "white buoy waypoint symbol",        &wp_wbuoy_pixbuf,           NULL },
57   { "wpt_dot",        18,    "waypoint dot",                      &wp_wpt_dot_pixbuf,         NULL },
58   { "wreck",          19,    "white wreck symbol",                &wp_wreck_pixbuf,           NULL },
59   { "null",           20,    "null symbol (transparent)",         &wp_null_pixbuf,            NULL },
60   { "mob",            21,    "man overboard symbol",              &wp_mob_pixbuf,             NULL },
61   { "buoy_ambr",      22,    "amber map buoy symbol",             &wp_buoy_ambr_pixbuf,       NULL },
62   { "buoy_blck",      23,    "black map buoy symbol",             &wp_buoy_blck_pixbuf,       NULL },
63   { "buoy_blue",      24,    "blue map buoy symbol",              &wp_buoy_blue_pixbuf,       NULL },
64   { "buoy_grn",       25,    "green map buoy symbol",             &wp_buoy_grn_pixbuf,        NULL },
65   { "buoy_grn_red",   26,    "green/red map buoy symbol",         &wp_buoy_grn_red_pixbuf,    NULL },
66   { "buoy_grn_wht",   27,    "green/white map buoy symbol",       &wp_buoy_grn_wht_pixbuf,    NULL },
67   { "buoy_orng",      28,    "orange map buoy symbol",            &wp_buoy_orng_pixbuf,       NULL },
68   { "buoy_red",       29,    "red map buoy symbol",               &wp_buoy_red_pixbuf,        NULL },
69   { "buoy_red_grn",   30,    "red/green map buoy symbol",         &wp_buoy_red_grn_pixbuf,    NULL },
70   { "buoy_red_wht",   31,    "red/white map buoy symbol",         &wp_buoy_red_wht_pixbuf,    NULL },
71   { "buoy_violet",    32,    "violet map buoy symbol",            &wp_buoy_violet_pixbuf,     NULL },
72   { "buoy_wht",       33,    "white map buoy symbol",             &wp_buoy_wht_pixbuf,        NULL },
73   { "buoy_wht_grn",   34,    "white/green map buoy symbol",       &wp_buoy_wht_grn_pixbuf,    NULL },
74   { "buoy_wht_red",   35,    "white/red map buoy symbol",         &wp_buoy_wht_red_pixbuf,    NULL },
75   { "dot",            36,    "white dot symbol",                  &wp_dot_pixbuf,             NULL },
76   { "rbcn",           37,    "radio beacon symbol",               &wp_rbcn_pixbuf,            NULL },
77   { "boat_ramp",      150,   "boat ramp symbol",                  &wp_boat_ramp_pixbuf,       NULL },
78   { "camp",           151,   "campground symbol",                 &wp_camp_pixbuf,            NULL },
79   { "restrooms",      152,   "restrooms symbol",                  &wp_restroom_pixbuf,        NULL },
80   { "showers",        153,   "shower symbol",                     &wp_shower_pixbuf,          NULL },
81   { "drinking_wtr",   154,   "drinking water symbol",             &wp_drinking_wtr_pixbuf,    NULL },
82   { "phone",          155,   "telephone symbol",                  &wp_phone_pixbuf,           NULL },
83   { "1st_aid",        156,   "first aid symbol",                  &wp_1st_aid_pixbuf,         NULL },
84   { "info",           157,   "information symbol",                &wp_info_pixbuf,            NULL },
85   { "parking",        158,   "parking symbol",                    &wp_parking_pixbuf,         NULL },
86   { "park",           159,   "park symbol",                       &wp_park_pixbuf,            NULL },
87   { "picnic",         160,   "picnic symbol",                     &wp_picnic_pixbuf,          NULL },
88   { "scenic",         161,   "scenic area symbol",                &wp_scenic_pixbuf,          NULL },
89   { "skiing",         162,   "skiing symbol",                     &wp_skiing_pixbuf,          NULL },
90   { "swimming",       163,   "swimming symbol",                   &wp_swimming_pixbuf,        NULL },
91   { "dam",            164,   "dam symbol",                        &wp_dam_pixbuf,             NULL },
92   { "controlled",     165,   "controlled area symbol",            &wp_controlled_pixbuf,      NULL },
93   { "danger",         166,   "danger symbol",                     &wp_danger_pixbuf,          NULL },
94   { "restricted",     167,   "restricted area symbol",            &wp_restricted_pixbuf,      NULL },
95   { "null_2",         168,   "null symbol",                       NULL,                NULL },
96   { "ball",           169,   "ball symbol",                       &wp_ball_pixbuf,            NULL },
97   { "car",            170,   "car symbol",                        &wp_car_pixbuf,             NULL },
98   { "deer",           171,   "deer symbol",                       &wp_deer_pixbuf,            NULL },
99   { "shpng_cart",     172,   "shopping cart symbol",              NULL,                NULL },
100   { "lodging",        173,   "lodging symbol",                    NULL,                NULL },
101   { "mine",           174,   "mine symbol",                       &wp_mine_pixbuf,            NULL },
102   { "trail_head",     175,   "trail head symbol",                 NULL,                NULL },
103   { "truck_stop",     176,   "truck stop symbol",                 NULL,                NULL },
104   { "user_exit",      177,   "user exit symbol",                  NULL,                NULL },
105   { "flag",           178,   "flag symbol",                       &wp_flag_pixbuf,            NULL },
106   { "circle_x",       179,   "circle with x in the center",       NULL,                NULL },
107   { "open_24hr",      180,   "open 24 hours symbol",              NULL,                NULL },
108   { "fhs_facility",   181,   "U Fishing Hot SpotsTM Facility",    NULL,                NULL },
109   { "bot_cond",       182,   "Bottom Conditions",                 NULL,                NULL },
110   { "tide_pred_stn",  183,   "Tide/Current Prediction Station",   NULL,                NULL },
111   { "anchor_prohib",  184,   "U anchor prohibited symbol",        NULL,                NULL },
112   { "beacon",         185,   "U beacon symbol",                   NULL,                NULL },
113   { "coast_guard",    186,   "U coast guard symbol",              NULL,                NULL },
114   { "reef",           187,   "U reef symbol",                     NULL,                NULL },
115   { "weedbed",        188,   "U weedbed symbol",                  NULL,                NULL },
116   { "dropoff",        189,   "U dropoff symbol",                  NULL,                NULL },
117   { "dock",           190,   "U dock symbol",                     NULL,                NULL },
118   { "marina",         191,   "U marina symbol",                   NULL,                NULL },
119   { "bait_tackle",    192,   "U bait and tackle symbol",          NULL,                NULL },
120   { "stump",          193,   "U stump symbol",                    NULL,                NULL },
121   /*---------------------------------------------------------------
122     User customizable symbols
123     The values from begin_custom to end_custom inclusive are
124     reserved for the identification of user customizable symbols.
125     ---------------------------------------------------------------*/
126   { "begin_custom",   7680,  "first user customizable symbol",    NULL,                NULL },
127   { "end_custom",     8191,  "last user customizable symbol",     NULL,                NULL },
128   /*---------------------------------------------------------------
129     Land symbols
130     ---------------------------------------------------------------*/
131   { "is_hwy",         8192,  "interstate hwy symbol",             NULL,                NULL },
132   { "us_hwy",         8193,  "us hwy symbol",                     NULL,                NULL },
133   { "st_hwy",         8194,  "state hwy symbol",                  NULL,                NULL },
134   { "mi_mrkr",        8195,  "mile marker symbol",                NULL,                NULL },
135   { "trcbck",         8196,  "TracBack (feet) symbol",            NULL,                NULL },
136   { "golf",           8197,  "golf symbol",                       &wp_golf_pixbuf,            NULL },
137   { "sml_cty",        8198,  "small city symbol",                 &wp_sml_cty_pixbuf,         NULL },
138   { "med_cty",        8199,  "medium city symbol",                &wp_med_cty_pixbuf,         NULL },
139   { "lrg_cty",        8200,  "large city symbol",                 &wp_lrg_cty_pixbuf,         NULL },
140   { "freeway",        8201,  "intl freeway hwy symbol",           NULL,                NULL },
141   { "ntl_hwy",        8202,  "intl national hwy symbol",          NULL,                NULL },
142   { "cap_cty",        8203,  "capitol city symbol (star)",        &wp_cap_cty_pixbuf,         NULL },
143   { "amuse_pk",       8204,  "amusement park symbol",             NULL,                NULL },
144   { "bowling",        8205,  "bowling symbol",                    NULL,                NULL },
145   { "car_rental",     8206,  "car rental symbol",                 NULL,                NULL },
146   { "car_repair",     8207,  "car repair symbol",                 NULL,                NULL },
147   { "fastfood",       8208,  "fast food symbol",                  NULL,                NULL },
148   { "fitness",        8209,  "fitness symbol",                    NULL,                NULL },
149   { "movie",          8210,  "movie symbol",                      NULL,                NULL },
150   { "museum",         8211,  "museum symbol",                     NULL,                NULL },
151   { "pharmacy",       8212,  "pharmacy symbol",                   NULL,                NULL },
152   { "pizza",          8213,  "pizza symbol",                      NULL,                NULL },
153   { "post_ofc",       8214,  "post office symbol",                NULL,                NULL },
154   { "rv_park",        8215,  "RV park symbol",                    &wp_rv_park_pixbuf,         NULL },
155   { "school",         8216,  "school symbol",                     &wp_school_pixbuf,          NULL },
156   { "stadium",        8217,  "stadium symbol",                    NULL,                NULL },
157   { "store",          8218,  "dept. store symbol",                NULL,                NULL },
158   { "zoo",            8219,  "zoo symbol",                        NULL,                NULL },
159   { "gas_plus",       8220,  "convenience store symbol",          NULL,                NULL },
160   { "faces",          8221,  "live theater symbol",               NULL,                NULL },
161   { "ramp_int",       8222,  "ramp intersection symbol",          NULL,                NULL },
162   { "st_int",         8223,  "street intersection symbol",        NULL,                NULL },
163   { "weigh_sttn",     8226,  "inspection/weigh station symbol",   NULL,                NULL },
164   { "toll_booth",     8227,  "toll booth symbol",                 NULL,                NULL },
165   { "elev_pt",        8228,  "elevation point symbol",            NULL,                NULL },
166   { "ex_no_srvc",     8229,  "exit without services symbol",      NULL,                NULL },
167   { "geo_place_mm",   8230,  "Geographic place name, man-made",   NULL,                NULL },
168   { "geo_place_wtr",  8231,  "Geographic place name, water",      NULL,                NULL },
169   { "geo_place_lnd",  8232,  "Geographic place name, land",       NULL,                NULL },
170   { "bridge",         8233,  "bridge symbol",                     &wp_bridge_pixbuf,          NULL },
171   { "building",       8234,  "building symbol",                   &wp_building_pixbuf,        NULL },
172   { "cemetery",       8235,  "cemetery symbol",                   &wp_cemetery_pixbuf,        NULL },
173   { "church",         8236,  "church symbol",                     &wp_church_pixbuf,          NULL },
174   { "civil",          8237,  "civil location symbol",             NULL,                NULL },
175   { "crossing",       8238,  "crossing symbol",                   NULL,                NULL },
176   { "hist_town",      8239,  "historical town symbol",            NULL,                NULL },
177   { "levee",          8240,  "levee symbol",                      NULL,                NULL },
178   { "military",       8241,  "military location symbol",          &wp_military_pixbuf,        NULL },
179   { "oil_field",      8242,  "oil field symbol",                  NULL,                NULL },
180   { "tunnel",         8243,  "tunnel symbol",                     &wp_tunnel_pixbuf,          NULL },
181   { "beach",          8244,  "beach symbol",                      &wp_beach_pixbuf,           NULL },
182   { "forest",         8245,  "forest symbol",                     &wp_forest_pixbuf,          NULL },
183   { "summit",         8246,  "summit symbol",                     &wp_summit_pixbuf,          NULL },
184   { "lrg_ramp_int",   8247,  "large ramp intersection symbol",    NULL,                NULL },
185   { "lrg_ex_no_srvc", 8248,  "large exit without services smbl",  NULL,                NULL },
186   { "badge",          8249,  "police/official badge symbol",      NULL,                NULL },
187   { "cards",          8250,  "gambling/casino symbol",            NULL,                NULL },
188   { "snowski",        8251,  "snow skiing symbol",                NULL,                NULL },
189   { "iceskate",       8252,  "ice skating symbol",                NULL,                NULL },
190   { "wrecker",        8253,  "tow truck (wrecker) symbol",        NULL,                NULL },
191   { "border",         8254,  "border crossing (port of entry)",   NULL,                NULL },
192   { "geocache",       8255,  "geocache location",                 &wp_geocache_pixbuf,        NULL },
193   { "geocache_fnd",   8256,  "found geocache",                    &wp_geocache_fnd_pixbuf,    NULL },
194   { "cntct_smiley",   8257,  "Rino contact symbol, ""smiley""",   NULL,                NULL },
195   { "cntct_ball_cap", 8258,  "Rino contact symbol, ""ball cap""", NULL,                NULL },
196   { "cntct_big_ears", 8259,  "Rino contact symbol, ""big ear""",  NULL,                NULL },
197   { "cntct_spike",    8260,  "Rino contact symbol, ""spike""",    NULL,                NULL },
198   { "cntct_goatee",   8261,  "Rino contact symbol, ""goatee""",   NULL,                NULL },
199   { "cntct_afro",     8262,  "Rino contact symbol, ""afro""",     NULL,                NULL },
200   { "cntct_dreads",   8263,  "Rino contact symbol, ""dreads""",   NULL,                NULL },
201   { "cntct_female1",  8264,  "Rino contact symbol, ""female 1""", NULL,                NULL },
202   { "cntct_female2",  8265,  "Rino contact symbol, ""female 2""", NULL,                NULL },
203   { "cntct_female3",  8266,  "Rino contact symbol, ""female 3""", NULL,                NULL },
204   { "cntct_ranger",   8267,  "Rino contact symbol, ""ranger""",   NULL,                NULL },
205   { "cntct_kung_fu",  8268,  "Rino contact symbol, ""kung fu""",  NULL,                NULL },
206   { "cntct_sumo",     8269,  "Rino contact symbol, ""sumo""",     NULL,                NULL },
207   { "cntct_pirate",   8270,  "Rino contact symbol, ""pirate""",   NULL,                NULL },
208   { "cntct_biker",    8271,  "Rino contact symbol, ""biker""",    NULL,                NULL },
209   { "cntct_alien",    8272,  "Rino contact symbol, ""alien""",    NULL,                NULL },
210   { "cntct_bug",      8273,  "Rino contact symbol, ""bug""",      NULL,                NULL },
211   { "cntct_cat",      8274,  "Rino contact symbol, ""cat""",      NULL,                NULL },
212   { "cntct_dog",      8275,  "Rino contact symbol, ""dog""",      NULL,                NULL },
213   { "cntct_pig",      8276,  "Rino contact symbol, ""pig""",      NULL,                NULL },
214   { "hydrant",        8282,  "water hydrant symbol",              NULL,                NULL },
215   { "flag_blue",      8284,  "blue flag symbol",                  NULL,                NULL },
216   { "flag_green",     8285,  "green flag symbol",                 NULL,                NULL },
217   { "flag_red",       8286,  "red flag symbol",                   NULL,                NULL },
218   { "pin_blue",       8287,  "blue pin symbol",                   NULL,                NULL },
219   { "pin_green",      8288,  "green pin symbol",                  NULL,                NULL },
220   { "pin_red",        8289,  "red pin symbol",                    NULL,                NULL },
221   { "block_blue",     8290,  "blue block symbol",                 NULL,                NULL },
222   { "block_green",    8291,  "green block symbol",                NULL,                NULL },
223   { "block_red",      8292,  "red block symbol",                  NULL,                NULL },
224   { "bike_trail",     8293,  "bike trail symbol",                 NULL,                NULL },
225   { "circle_red",     8294,  "red circle symbol",                 NULL,                NULL },
226   { "circle_green",   8295,  "green circle symbol",               NULL,                NULL },
227   { "circle_blue",    8296,  "blue circle symbol",                NULL,                NULL },
228   { "diamond_blue",   8299,  "blue diamond symbol",               NULL,                NULL },
229   { "oval_red",       8300,  "red oval symbol",                   NULL,                NULL },
230   { "oval_green",     8301,  "green oval symbol",                 NULL,                NULL },
231   { "oval_blue",      8302,  "blue oval symbol",                  NULL,                NULL },
232   { "rect_red",       8303,  "red rectangle symbol",              NULL,                NULL },
233   { "rect_green",     8304,  "green rectangle symbol",            NULL,                NULL },
234   { "rect_blue",      8305,  "blue rectangle symbol",             NULL,                NULL },
235   { "square_blue",    8308,  "blue square symbol",                NULL,                NULL },
236   { "letter_a_red",   8309,  "red letter 'A' symbol",             NULL,                NULL },
237   { "letter_b_red",   8310,  "red letter 'B' symbol",             NULL,                NULL },
238   { "letter_c_red",   8311,  "red letter 'C' symbol",             NULL,                NULL },
239   { "letter_d_red",   8312,  "red letter 'D' symbol",             NULL,                NULL },
240   { "letter_a_green", 8313,  "green letter 'A' symbol",           NULL,                NULL },
241   { "letter_c_green", 8314,  "green letter 'C' symbol",           NULL,                NULL },
242   { "letter_b_green", 8315,  "green letter 'B' symbol",           NULL,                NULL },
243   { "letter_d_green", 8316,  "green letter 'D' symbol",           NULL,                NULL },
244   { "letter_a_blue",  8317,  "blue letter 'A' symbol",            NULL,                NULL },
245   { "letter_b_blue",  8318,  "blue letter 'B' symbol",            NULL,                NULL },
246   { "letter_c_blue",  8319,  "blue letter 'C' symbol",            NULL,                NULL },
247   { "letter_d_blue",  8320,  "blue letter 'D' symbol",            NULL,                NULL },
248   { "number_0_red",   8321,  "red number '0' symbol",             NULL,                NULL },
249   { "number_1_red",   8322,  "red number '1' symbol",             NULL,                NULL },
250   { "number_2_red",   8323,  "red number '2' symbol",             NULL,                NULL },
251   { "number_3_red",   8324,  "red number '3' symbol",             NULL,                NULL },
252   { "number_4_red",   8325,  "red number '4' symbol",             NULL,                NULL },
253   { "number_5_red",   8326,  "red number '5' symbol",             NULL,                NULL },
254   { "number_6_red",   8327,  "red number '6' symbol",             NULL,                NULL },
255   { "number_7_red",   8328,  "red number '7' symbol",             NULL,                NULL },
256   { "number_8_red",   8329,  "red number '8' symbol",             NULL,                NULL },
257   { "number_9_red",   8330,  "red number '9' symbol",             NULL,                NULL },
258   { "number_0_green", 8331,  "green number '0' symbol",           NULL,                NULL },
259   { "number_1_green", 8332,  "green number '1' symbol",           NULL,                NULL },
260   { "number_2_green", 8333,  "green number '2' symbol",           NULL,                NULL },
261   { "number_3_green", 8334,  "green number '3' symbol",           NULL,                NULL },
262   { "number_4_green", 8335,  "green number '4' symbol",           NULL,                NULL },
263   { "number_5_green", 8336,  "green number '5' symbol",           NULL,                NULL },
264   { "number_6_green", 8337,  "green number '6' symbol",           NULL,                NULL },
265   { "number_7_green", 8338,  "green number '7' symbol",           NULL,                NULL },
266   { "number_8_green", 8339,  "green number '8' symbol",           NULL,                NULL },
267   { "number_9_green", 8340,  "green number '9' symbol",           NULL,                NULL },
268   { "number_0_blue",  8341,  "blue number '0' symbol",            NULL,                NULL },
269   { "number_1_blue",  8342,  "blue number '1' symbol",            NULL,                NULL },
270   { "number_2_blue",  8343,  "blue number '2' symbol",            NULL,                NULL },
271   { "number_3_blue",  8344,  "blue number '3' symbol",            NULL,                NULL },
272   { "number_4_blue",  8345,  "blue number '4' symbol",            NULL,                NULL },
273   { "number_5_blue",  8346,  "blue number '5' symbol",            NULL,                NULL },
274   { "number_6_blue",  8347,  "blue number '6' symbol",            NULL,                NULL },
275   { "number_7_blue",  8348,  "blue number '7' symbol",            NULL,                NULL },
276   { "number_8_blue",  8349,  "blue number '8' symbol",            NULL,                NULL },
277   { "number_9_blue",  8350,  "blue number '9' symbol",            NULL,                NULL },
278   { "triangle_blue",  8351,  "blue triangle symbol",              NULL,                NULL },
279   { "triangle_green", 8352,  "green triangle symbol",             NULL,                NULL },
280   { "triangle_red",   8353,  "red triangle symbol",               NULL,                NULL },
281   /*---------------------------------------------------------------
282     Aviation symbols
283     ---------------------------------------------------------------*/
284   { "airport",        16384, "airport symbol",                    &wp_airplane_pixbuf,        NULL },
285   { "int",            16385, "intersection symbol",               NULL,                NULL },
286   { "ndb",            16386, "non-directional beacon symbol",     NULL,                NULL },
287   { "vor",            16387, "VHF omni-range symbol",             NULL,                NULL },
288   { "heliport",       16388, "heliport symbol",                   NULL,                NULL },
289   { "private",        16389, "private field symbol",              NULL,                NULL },
290   { "soft_fld",       16390, "soft field symbol",                 NULL,                NULL },
291   { "tall_tower",     16391, "tall tower symbol",                 NULL,                NULL },
292   { "short_tower",    16392, "short tower symbol",                NULL,                NULL },
293   { "glider",         16393, "glider symbol",                     NULL,                NULL },
294   { "ultralight",     16394, "ultralight symbol",                 NULL,                NULL },
295   { "parachute",      16395, "parachute symbol",                  NULL,                NULL },
296   { "vortac",         16396, "VOR/TACAN symbol",                  NULL,                NULL },
297   { "vordme",         16397, "VOR-DME symbol",                    NULL,                NULL },
298   { "faf",            16398, "first approach fix",                NULL,                NULL },
299   { "lom",            16399, "localizer outer marker",            NULL,                NULL },
300   { "map",            16400, "missed approach point",             NULL,                NULL },
301   { "tacan",          16401, "TACAN symbol",                      NULL,                NULL },
302   { "seaplane",       16402, "Seaplane Base",                     NULL,                NULL }
303 };
304
305 GHashTable *icons = NULL;
306
307 static void init_icons() {
308   icons = g_hash_table_new_full ( g_str_hash, g_str_equal, NULL, NULL);
309   gint i;
310   for (i=0; i<G_N_ELEMENTS(garmin_syms); i++) {
311     g_hash_table_insert(icons, garmin_syms[i].sym, GINT_TO_POINTER (i));
312   }
313 }
314
315 static GdkPixbuf *get_wp_sym_from_index ( gint i ) {
316   if ( !garmin_syms[i].icon && garmin_syms[i].data ) {
317     garmin_syms[i].icon = gdk_pixbuf_from_pixdata ( garmin_syms[i].data, FALSE, NULL );
318   }
319   return garmin_syms[i].icon;
320 }
321
322 GdkPixbuf *a_get_wp_sym ( const gchar *sym ) {
323   if (!sym) {
324     return NULL;
325   }
326   if (!icons) {
327     init_icons();
328   }
329   return get_wp_sym_from_index( GPOINTER_TO_INT ( g_hash_table_lookup (icons, sym) ) );
330 }
331
332 void a_populate_sym_list ( GtkListStore *list ) {
333   gint i;
334   for (i=0; i<G_N_ELEMENTS(garmin_syms); i++) {
335     if (garmin_syms[i].data) {
336       GtkTreeIter iter;
337       gtk_list_store_append(list, &iter);
338       gtk_list_store_set(list, &iter, 0, garmin_syms[i].sym, 1, get_wp_sym_from_index(i), -1);
339     }
340   }
341 }
342
343