summaryrefslogtreecommitdiff
path: root/altoslib/AltosDistance.java
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2016-05-10 22:46:58 -0700
committerKeith Packard <keithp@keithp.com>2016-05-11 23:22:15 -0700
commit60f4d69592c440ab7bb67a04f4c07fc7279d2c20 (patch)
tree8edfca4a59b5d15d251607075453aeab1a9f376f /altoslib/AltosDistance.java
parent6a6da23335e6e5864387c7a22946f80f51056a4f (diff)
altoslib: Switch distance from m/ft to km/miles for large values
This adds lots of infrastructure to deal with making the unit used depend on the value itself, and then uses it only for distances. Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'altoslib/AltosDistance.java')
-rw-r--r--altoslib/AltosDistance.java56
1 files changed, 55 insertions, 1 deletions
diff --git a/altoslib/AltosDistance.java b/altoslib/AltosDistance.java
index b68a4525..1ec39f8d 100644
--- a/altoslib/AltosDistance.java
+++ b/altoslib/AltosDistance.java
@@ -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;
+ }
+ };
+ }
+}