altoslib: Switch distance from m/ft to km/miles for large values
[fw/altos] / altoslib / AltosDistance.java
index b68a4525d79c8565951930b91c2b1db0b8f020fb..1ec39f8dd64409a84e8a4e70f3ceb5bf0a859a9d 100644 (file)
@@ -54,4 +54,58 @@ public class AltosDistance extends AltosUnits {
                        return 1;
                return 0;
        }
-}
\ No newline at end of file
+
+       public AltosDistance() {
+               range_metric = new AltosUnitsRange[2];
+
+               range_metric[0] = new AltosUnitsRange(0, "m", "meters") {
+                               double value(double v) {
+                                       return v;
+                               }
+                               int show_fraction(int width) {
+                                       return width / 9;
+                               }
+                               int say_fraction() {
+                                       return 0;
+                               }
+                       };
+               range_metric[1] = new AltosUnitsRange(2000, "km", "kilometers") {
+                               double value(double v) {
+                                       return v / 1000;
+                               }
+                               int show_fraction(int width) {
+                                       return width / 5;
+                               }
+                               int say_fraction() {
+                                       return 1;
+                               }
+                       };
+
+               range_imperial = new AltosUnitsRange[2];
+
+               range_imperial[0] = new AltosUnitsRange(0, "ft", "feet") {
+                               double value(double v) {
+                                       return AltosConvert.meters_to_feet(v);
+                               }
+                               int show_fraction(int width) {
+                                       return width / 9;
+                               }
+                               int say_fraction() {
+                                       return 0;
+                               }
+                       };
+
+               range_imperial[1] = new AltosUnitsRange(AltosConvert.feet_to_meters(5280),
+                                                       "mi", "miles") {
+                               double value(double v) {
+                                       return AltosConvert.meters_to_miles(v);
+                               }
+                               int show_fraction(int width) {
+                                       return width / 5;
+                               }
+                               int say_fraction() {
+                                       return 1;
+                               }
+                       };
+       }
+}