mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Add 'location_t' data structure
Instead of having people treat latitude and longitude as separate things, just add a 'location_t' data structure that contains both. Almost all cases want to always act on them together. This is really just prep-work for adding a few more locations that we track: I want to add a entry/exit location to each dive (independent of the dive site) because of how the Garmin Descent gives us the information (and hopefully, some day, other dive computers too). Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
c986940630
commit
28e3413ff6
40 changed files with 251 additions and 264 deletions
23
core/units.h
23
core/units.h
|
@ -134,6 +134,29 @@ typedef struct
|
|||
int udeg;
|
||||
} degrees_t;
|
||||
|
||||
typedef struct pos {
|
||||
degrees_t lat, lon;
|
||||
} location_t;
|
||||
|
||||
static inline bool has_location(const location_t *loc)
|
||||
{
|
||||
return loc->lat.udeg || loc->lon.udeg;
|
||||
}
|
||||
|
||||
static inline bool same_location(const location_t *a, const location_t *b)
|
||||
{
|
||||
return (a->lat.udeg == b->lat.udeg) && (a->lon.udeg == b->lon.udeg);
|
||||
}
|
||||
|
||||
static inline location_t create_location(double lat, double lon)
|
||||
{
|
||||
location_t location = {
|
||||
{ (int) lrint(lat * 1000000) },
|
||||
{ (int) lrint(lon * 1000000) }
|
||||
};
|
||||
return location;
|
||||
}
|
||||
|
||||
static inline double udeg_to_radians(int udeg)
|
||||
{
|
||||
return (udeg * M_PI) / (1000000.0 * 180.0);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue