1ade5abbe354b3356ceddd6b3f5667d04d24acbd
[fw/altos] / altoslib / AltosDistance.java
1 /*
2  * Copyright © 2012 Keith Packard <keithp@keithp.com>
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; version 2 of the License.
7  *
8  * This program is distributed in the hope that it will be useful, but
9  * WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11  * General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License along
14  * with this program; if not, write to the Free Software Foundation, Inc.,
15  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
16  */
17
18 package org.altusmetrum.altoslib_11;
19
20 public class AltosDistance extends AltosUnits {
21
22         public double value(double v, boolean imperial_units) {
23                 if (imperial_units)
24                         return AltosConvert.meters_to_miles(v);
25                 return v;
26         }
27
28         public double inverse(double v, boolean imperial_units) {
29                 if (imperial_units)
30                         return AltosConvert.miles_to_meters(v);
31                 return v;
32         }
33
34         public String show_units(boolean imperial_units) {
35                 if (imperial_units)
36                         return "miles";
37                 return "m";
38         }
39
40         public String say_units(boolean imperial_units) {
41                 if (imperial_units)
42                         return "miles";
43                 return "meters";
44         }
45
46         public int show_fraction(int width, boolean imperial_units) {
47                 if (imperial_units)
48                         return width / 3;
49                 return width / 9;
50         }
51
52         public int say_fraction(boolean imperial_units) {
53                 if (imperial_units)
54                         return 1;
55                 return 0;
56         }
57
58         public AltosDistance() {
59                 range_metric = new AltosUnitsRange[2];
60
61                 range_metric[0] = new AltosUnitsRange(0, "m", "meters") {
62                                 double value(double v) {
63                                         return v;
64                                 }
65                                 int show_fraction(int width) {
66                                         return width / 9;
67                                 }
68                                 int say_fraction() {
69                                         return 0;
70                                 }
71                         };
72                 range_metric[1] = new AltosUnitsRange(2000, "km", "kilometers") {
73                                 double value(double v) {
74                                         return v / 1000;
75                                 }
76                                 int show_fraction(int width) {
77                                         return width / 5;
78                                 }
79                                 int say_fraction() {
80                                         return 1;
81                                 }
82                         };
83
84                 range_imperial = new AltosUnitsRange[2];
85
86                 range_imperial[0] = new AltosUnitsRange(0, "ft", "feet") {
87                                 double value(double v) {
88                                         return AltosConvert.meters_to_feet(v);
89                                 }
90                                 int show_fraction(int width) {
91                                         return width / 9;
92                                 }
93                                 int say_fraction() {
94                                         return 0;
95                                 }
96                         };
97
98                 range_imperial[1] = new AltosUnitsRange(AltosConvert.feet_to_meters(1000),
99                                                         "mi", "miles") {
100                                 double value(double v) {
101                                         return AltosConvert.meters_to_miles(v);
102                                 }
103                                 int show_fraction(int width) {
104                                         return width / 5;
105                                 }
106                                 int say_fraction() {
107                                         return 1;
108                                 }
109                         };
110         }
111 }