navit  0.5.3-trunk
coord.h
Go to the documentation of this file.
1 
20 #ifndef NAVIT_COORD_H
21 #define NAVIT_COORD_H
22 
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 #include <stdio.h>
28 #include "config.h"
29 #include "projection.h"
30 
31 #define coord_is_equal(a,b) ((a).x==(b).x && (a).y==(b).y)
32 
34 struct coord {
35  int x;
36  int y;
37 };
38 
46 struct lcoord {
47  struct coord c;
48  char *label;
49 };
50 
52 struct pcoord {
53  enum projection pro;
54  int x;
55  int y;
56 };
57 
58 struct coord_rect {
59  struct coord lu;
60  struct coord rl;
61 };
62 
63 
64 #ifdef AVOID_FLOAT
70 typedef float navit_float;
71 #define navit_sin(x) sinf(x)
72 #define navit_cos(x) cosf(x)
73 #define navit_tan(x) tanf(x)
74 #define navit_atan(x) atanf(x)
75 #define navit_acos(x) acosf(x)
76 #define navit_asin(x) asinf(x)
77 #define navit_sqrt(x) sqrtf(x)
78 #else
79 typedef double navit_float;
80 #define navit_sin(x) sin(x)
81 #define navit_cos(x) cos(x)
82 #define navit_tan(x) tan(x)
83 #define navit_atan(x) atan(x)
84 #define navit_acos(x) acos(x)
85 #define navit_asin(x) asin(x)
86 #define navit_sqrt(x) sqrt(x)
87 #endif
88 
89 
91 struct coord_d {
92  double x;
93  double y;
94 };
95 
97 struct coord_geo {
100 };
101 
107 };
108 
114 {
120 
126 
132 
138 
144 };
145 
146 enum projection;
147 struct attr;
148 
149 struct coord * coord_get(unsigned char **p);
150 struct coord * coord_new(int x, int y);
151 struct coord * coord_new_from_attrs(struct attr *parent, struct attr **attrs);
152 void coord_destroy(struct coord *c);
153 int coord_parse(const char *c_str, enum projection pro, struct coord *c_ret);
154 int pcoord_parse(const char *c_str, enum projection pro, struct pcoord *c_ret);
155 void coord_print(enum projection pro, struct coord *c, FILE *out);
156 struct coord_rect * coord_rect_new(struct coord *lu, struct coord *rl);
157 void coord_rect_destroy(struct coord_rect *r);
158 int coord_rect_overlap(struct coord_rect *r1, struct coord_rect *r2);
159 int coord_rect_contains(struct coord_rect *r, struct coord *c);
160 void coord_rect_extend(struct coord_rect *r, struct coord *c);
161 void coord_format_with_sep(float lat,float lng, enum coord_format fmt, char *buffer, int size, const char *sep);
162 void coord_format(float lat,float lng, enum coord_format fmt, char *buffer, int size);
163 void coord_geo_format_short(const struct coord_geo *gc, char *buffer, int size, char *sep);
164 void pcoord_format_degree_short(const struct pcoord *pc, char *buffer, int size, char *sep);
165 void pcoord_format_absolute(const struct pcoord *pc, char *buffer, int size, char *sep);
166 char *coordinates_geo(const struct coord_geo *gc, char sep);
167 
168 /* prototypes */
169 enum coord_format;
170 enum projection;
171 struct attr;
172 struct coord;
173 struct coord_rect;
174 struct pcoord;
175 struct coord *coord_get(unsigned char **p);
176 struct coord *coord_new(int x, int y);
177 struct coord *coord_new_from_attrs(struct attr *parent, struct attr **attrs);
178 void coord_destroy(struct coord *c);
179 struct coord_rect *coord_rect_new(struct coord *lu, struct coord *rl);
180 void coord_rect_destroy(struct coord_rect *r);
181 int coord_rect_overlap(struct coord_rect *r1, struct coord_rect *r2);
182 int coord_rect_contains(struct coord_rect *r, struct coord *c);
183 void coord_rect_extend(struct coord_rect *r, struct coord *c);
184 int coord_parse(const char *c_str, enum projection pro, struct coord *c_ret);
185 int pcoord_parse(const char *c_str, enum projection pro, struct pcoord *pc_ret);
186 void coord_print(enum projection pro, struct coord *c, FILE *out);
187 void coord_format(float lat, float lng, enum coord_format fmt, char *buffer, int size);
188 unsigned int coord_hash(const void *key);
189 int coord_equal(const void *a, const void *b);
190 /* end of prototypes */
191 #ifdef __cplusplus
192 }
193 #endif
194 #endif
char * coordinates_geo(const struct coord_geo *gc, char sep)
double navit_float
Definition: coord.h:79
coord_format
Definition: coord.h:114
@ DEGREES_MINUTES
Definition: coord.h:131
@ DEGREES_DECIMAL
Definition: coord.h:125
@ DEGREES_MINUTES_SECONDS
Definition: coord.h:137
@ DEGREES_MINUTES_SECONDS_BRIEF
Definition: coord.h:143
@ DEGREES_DECIMAL_ABSOLUTE
Definition: coord.h:119
struct triple lng lat
Definition: garmin_img.c:0
int size
Definition: garmin_img.c:3
int coord_equal(const void *a, const void *b)
Test if two struct coord structures are equal.
Definition: coord.c:500
struct coord * coord_get(unsigned char **p)
Definition: coord.c:42
void coord_rect_extend(struct coord_rect *r, struct coord *c)
Definition: coord.c:120
void pcoord_format_absolute(const struct pcoord *pc, char *buffer, int size, char *sep)
Converts an integer mercator coordinate pair to its string representation.
Definition: coord.c:471
unsigned int coord_hash(const void *key)
Generate a hash from a struct coord pointed by key.
Definition: coord.c:487
void pcoord_format_degree_short(const struct pcoord *pc, char *buffer, int size, char *sep)
Converts an integer mercator coordinate pair to its string representation.
Definition: coord.c:450
void coord_print(enum projection pro, struct coord *c, FILE *out)
Definition: coord.c:285
int coord_parse(const char *c_str, enum projection pro, struct coord *c_ret)
Definition: coord.c:148
int pcoord_parse(const char *c_str, enum projection pro, struct pcoord *c_ret)
Definition: coord.c:275
struct coord_rect * coord_rect_new(struct coord *lu, struct coord *rl)
Definition: coord.c:71
int coord_rect_overlap(struct coord_rect *r1, struct coord_rect *r2)
Definition: coord.c:88
void coord_format_with_sep(float lat, float lng, enum coord_format fmt, char *buffer, int size, const char *sep)
Converts a lat/lon into a text formatted text string.
Definition: coord.c:326
struct coord * coord_new_from_attrs(struct attr *parent, struct attr **attrs)
Definition: coord.c:57
void coord_destroy(struct coord *c)
Definition: coord.c:67
void coord_geo_format_short(const struct coord_geo *gc, char *buffer, int size, char *sep)
Converts a WGS84 coordinate pair to its string representation.
Definition: coord.c:434
int coord_rect_contains(struct coord_rect *r, struct coord *c)
Definition: coord.c:106
struct coord * coord_new(int x, int y)
Definition: coord.c:48
void coord_rect_destroy(struct coord_rect *r)
Definition: coord.c:84
unsigned char p[5]
Definition: mg.h:2
static struct pcoord c
Definition: popup.c:375
projection
Definition: projection.h:23
Definition: attr.h:157
Definition: maptool.h:169
A double mercator coordinate.
Definition: coord.h:91
double x
Definition: coord.h:92
double y
Definition: coord.h:93
A cartesian coordinate.
Definition: coord.h:103
navit_float z
Definition: coord.h:106
navit_float y
Definition: coord.h:105
navit_float x
Definition: coord.h:104
A WGS84 coordinate.
Definition: coord.h:97
navit_float lat
Definition: coord.h:99
navit_float lng
Definition: coord.h:98
Definition: coord.h:58
struct coord rl
Definition: coord.h:60
struct coord lu
Definition: coord.h:59
Definition: coord.h:34
int y
Definition: coord.h:36
int x
Definition: coord.h:35
An integer mercator coordinate packed with a text label.
Definition: coord.h:46
struct coord c
Definition: coord.h:47
char * label
Definition: coord.h:48
Definition: gpx2navit_txt.h:51
Definition: coord.h:52
int y
Definition: coord.h:55
enum projection pro
Definition: coord.h:53
int x
Definition: coord.h:54
unsigned char key
Definition: tree.c:0