changed render levels for labels/place names
[navit-package] / src / tools / gpx2navit_txt / src / geod_set.c
1 #ifndef lint
2 /*
3  * static const char SCCSID[]="@(#)geod_set.c 4.8 95/09/23 GIE REL";
4  */
5 #endif
6
7 #define _IN_GEOD_SET
8
9 #include <string.h>
10 #include "projects.h"
11 #include "geodesic.h"
12 #include "emess.h"
13 void geod_set(int argc, char **argv)
14 {
15     paralist *start = 0, *curr = NULL;  /* added NULL */
16     double es;
17     char *name;
18     int i;
19
20 /*
21  * put arguments into internal linked list 
22  */
23     if (argc <= 0)
24         emess(1, "no arguments in initialization list");
25     for (i = 0; i < argc; ++i)
26         if (i)
27             curr = curr->next = pj_mkparam(argv[i]);
28         else
29             start = curr = pj_mkparam(argv[i]);
30 /*
31  * set elliptical parameters 
32  */
33     if (pj_ell_set(start, &geod_a, &es))
34         emess(1, "ellipse setup failure");
35 /*
36  * set units 
37  */
38     if ((name = pj_param(start, "sunits").s)) { /* added parentheses */
39         char *s;
40
41         for (i = 0; (s = pj_units[i].id) && strcmp(name, s); ++i);
42         if (!s)
43             emess(1, "%s unknown unit conversion id", name);
44         fr_meter = 1. / (to_meter = atof(pj_units[i].to_meter));
45     } else
46         to_meter = fr_meter = 1.;
47     if ((ellipse = es != 0.)) { /* added parentheses */
48         onef = sqrt(1. - es);
49         geod_f = 1 - onef;
50         f2 = geod_f / 2;
51         f4 = geod_f / 4;
52         f64 = geod_f * geod_f / 64;
53     } else {
54         onef = 1.;
55         geod_f = f2 = f4 = f64 = 0.;
56     }
57 /*
58  * check if line or arc mode 
59  */
60     if (pj_param(start, "tlat_1").i) {
61         double del_S;
62 #undef f
63         phi1 = pj_param(start, "rlat_1").f;
64         lam1 = pj_param(start, "rlon_1").f;
65         if (pj_param(start, "tlat_2").i) {
66             phi2 = pj_param(start, "rlat_2").f;
67             lam2 = pj_param(start, "rlon_2").f;
68             geod_inv();
69             geod_pre();
70         } else if ((geod_S = pj_param(start, "dS").f)) {        /* added
71                                                                  * parentheses 
72                                                                  */
73             al12 = pj_param(start, "rA").f;
74             geod_pre();
75             geod_for();
76         } else
77             emess(1, "incomplete geodesic/arc info");
78         if ((n_alpha = pj_param(start, "in_A").i) > 0) {
79             if (!(del_alpha = pj_param(start, "rdel_A").f))
80                 emess(1, "del azimuth == 0");
81         } else if ((del_S = fabs(pj_param(start, "ddel_S").f))) {       /* added 
82                                                                          * parentheses 
83                                                                          */
84             n_S = geod_S / del_S + .5;
85         } else if ((n_S = pj_param(start, "in_S").i) <= 0)
86             emess(1, "no interval divisor selected");
87     }
88 /*
89  * free up linked list 
90  */
91     for (; start; start = curr) {
92         curr = start->next;
93         pj_dalloc(start);
94     }
95 }