]> err.no Git - mapper/blobdiff - src/latlon.h
MapWidgetIntegration:
[mapper] / src / latlon.h
index 52f39ca2fd93c305743b4305865f8be5230af014..e9aeaa049b1fad86605cf69460c784aa204f824a 100644 (file)
@@ -2,15 +2,66 @@
 #define _LATLON_H
 
 #include <glib.h>
+#include <math.h>
 
 /* Int ranges for integerized lat/lon */
 #define LATLON_MAX 2147483646
 #define LATLON_MIN -2147483646
 #define EARTH_RADIUS (3440.06479f)
 
+typedef enum {
+       DDPDDDDD,
+       DD_MMPMMM,
+       DD_MM_SSPS,
+       DDPDDDDD_NSEW,
+       DD_MMPMMM_NSEW,
+       DD_MM_SSPS_NSEW,
+       DEG_FORMAT_ENUM_COUNT
+} DegFormat;
+gchar *DEG_FORMAT_TEXT[DEG_FORMAT_ENUM_COUNT];
+
+/** This enum defines the possible units we can use. */
+typedef enum {
+       UNITS_KM,
+       UNITS_MI,
+       UNITS_NM,
+       UNITS_ENUM_COUNT
+} UnitType;
+gchar *UNITS_TEXT[UNITS_ENUM_COUNT];
+
+/* UNITS_CONVERTS, when multiplied, converts from NM. */
+
+gfloat UNITS_CONVERT[UNITS_ENUM_COUNT];
+
+UnitType _units;
+
+#define lat_format(F, A, B) deg_format((F),(A), (B), 'S', 'N')
+#define lon_format(F, A, B) deg_format((F),(A), (B), 'W', 'E')
+
+void latlon_init(void);
+
 gint32 lon2mp_int(gdouble lon);
 gint32 lat2mp_int(gdouble lat);
+
+gdouble mp_int2lon(gint32 lon);
+gdouble mp_int2lat(gint32 lat);
+
 gdouble calculate_distance(gdouble lat1, gdouble lon1, gdouble lat2, gdouble lon2);
-gint calculate_idistance(gint lat1, gint lon1, gint lat2, gint lon2);
+gdouble calculate_ddistance(gint lat1, gint lon1, gint lat2, gint lon2);
+gulong calculate_idistance(gint lat1, gint lon1, gint lat2, gint lon2);
+gulong calculate_idistance_cmp(gint lat1, gint lon1, gint lat2, gint lon2);
+
+gdouble calculate_course_rad(gdouble lat1, gdouble lon1, gdouble lat2, gdouble lon2);
+gdouble calculate_course(gdouble lat1, gdouble lon1, gdouble lat2, gdouble lon2);
+
+gfloat angle_diff(gfloat a, gfloat b);
+
+gboolean distance_point_to_line(gdouble x, gdouble y, gdouble x1, gdouble y1, gdouble x2, gdouble y2, gdouble *d);
+
+guint32 xy2tile(guint x, guint y);
+guint32 lon2x(gdouble lon);
+guint32 lat2y(gdouble lat);
+
+void deg_format(DegFormat degformat, gdouble coor, gchar *scoor, gchar neg_char, gchar pos_char);
 
 #endif