From e637367e8b940e1642a07b3b7c99147561de9cf1 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Mon, 2 Mar 2015 21:06:02 -0800 Subject: altosui/telegps: Add config option for APRS format Allow configuration of APRS compressed/uncompressed Signed-off-by: Keith Packard --- altoslib/AltosConfigData.java | 8 ++++++++ altoslib/AltosConfigValues.java | 4 ++++ altoslib/AltosLib.java | 7 +++++++ 3 files changed, 19 insertions(+) (limited to 'altoslib') diff --git a/altoslib/AltosConfigData.java b/altoslib/AltosConfigData.java index d8f4d945..0ffdcf60 100644 --- a/altoslib/AltosConfigData.java +++ b/altoslib/AltosConfigData.java @@ -75,6 +75,7 @@ public class AltosConfigData implements Iterable { /* HAS_APRS */ public int aprs_interval; public int aprs_ssid; + public int aprs_format; /* HAS_BEEP */ public int beep; @@ -270,6 +271,7 @@ public class AltosConfigData implements Iterable { aprs_interval = -1; aprs_ssid = -1; + aprs_format = -1; beep = -1; @@ -370,6 +372,7 @@ public class AltosConfigData implements Iterable { /* HAS_APRS */ try { aprs_interval = get_int(line, "APRS interval:"); } catch (Exception e) {} try { aprs_ssid = get_int(line, "APRS SSID:"); } catch (Exception e) {} + try { aprs_format = get_int(line, "APRS format:"); } catch (Exception e) {} /* HAS_BEEP */ try { beep = get_int(line, "Beeper setting:"); } catch (Exception e) {} @@ -518,6 +521,8 @@ public class AltosConfigData implements Iterable { aprs_interval = source.aprs_interval(); if (aprs_ssid >= 0) aprs_ssid = source.aprs_ssid(); + if (aprs_format >= 0) + aprs_format = source.aprs_format(); /* HAS_BEEP */ if (beep >= 0) @@ -572,6 +577,7 @@ public class AltosConfigData implements Iterable { dest.set_pyro_firing_time(pyro_firing_time); dest.set_aprs_interval(aprs_interval); dest.set_aprs_ssid(aprs_ssid); + dest.set_aprs_format(aprs_format); dest.set_beep(beep); dest.set_tracker_motion(tracker_motion); dest.set_tracker_interval(tracker_interval); @@ -674,6 +680,8 @@ public class AltosConfigData implements Iterable { link.printf("c A %d\n", aprs_interval); if (aprs_ssid >= 0) link.printf("c S %d\n", aprs_ssid); + if (aprs_format >= 0) + link.printf("c C %d\n", aprs_format); /* HAS_BEEP */ if (beep >= 0) diff --git a/altoslib/AltosConfigValues.java b/altoslib/AltosConfigValues.java index cfe9fc8b..3f26a078 100644 --- a/altoslib/AltosConfigValues.java +++ b/altoslib/AltosConfigValues.java @@ -91,6 +91,10 @@ public interface AltosConfigValues { public abstract void set_aprs_ssid(int new_aprs_ssid); + public abstract int aprs_format() throws AltosConfigDataException; + + public abstract void set_aprs_format(int new_aprs_format); + public abstract int beep() throws AltosConfigDataException; public abstract void set_beep(int new_beep); diff --git a/altoslib/AltosLib.java b/altoslib/AltosLib.java index b19f9f52..405a3acc 100644 --- a/altoslib/AltosLib.java +++ b/altoslib/AltosLib.java @@ -190,6 +190,13 @@ public class AltosLib { 38400, 9600, 2400 }; + public static final int ao_aprs_format_compressed = 0; + public static final int ao_aprs_format_uncompressed = 1; + + public static final String[] ao_aprs_format_name = { + "Compressed", "Uncompressed" + }; + public static final String launch_sites_url = "http://www.altusmetrum.org/AltOS/launch-sites.txt"; // public static final String launch_sites_url = "file:///home/keithp/misc/text/altusmetrum/AltOS/launch-sites.txt"; -- cgit v1.2.3 From ff3c27e3b842107680dc48084f71eb8c63f1bcab Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Mon, 2 Mar 2015 21:06:51 -0800 Subject: altoslib: Round frequency when configuring radio This makes sure we set the right frequency, instead of being off by 1kHz on a regular basis... Signed-off-by: Keith Packard --- altoslib/AltosLink.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'altoslib') diff --git a/altoslib/AltosLink.java b/altoslib/AltosLink.java index 01c37864..0105398d 100644 --- a/altoslib/AltosLink.java +++ b/altoslib/AltosLink.java @@ -354,7 +354,7 @@ public abstract class AltosLink implements Runnable { if (frequency == 0) return; if (has_frequency) - set_radio_freq((int) Math.floor (frequency * 1000)); + set_radio_freq((int) Math.floor (frequency * 1000 + 0.5)); else if (has_setting) set_radio_setting(AltosConvert.radio_frequency_to_setting(frequency, cal)); else -- cgit v1.2.3 From 3fbf0a29a1b8a67b90ef965ee3e2e972c0ec33a1 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Mon, 18 May 2015 10:52:24 -0700 Subject: altoslib: Use Locale.ROOT for KML export This avoids locale-specific number formatting, which breaks googleearth when importing the resulting file. Signed-off-by: Keith Packard --- altoslib/AltosKML.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'altoslib') diff --git a/altoslib/AltosKML.java b/altoslib/AltosKML.java index aa80fc21..1a0fcf3d 100644 --- a/altoslib/AltosKML.java +++ b/altoslib/AltosKML.java @@ -18,11 +18,22 @@ package org.altusmetrum.altoslib_6; import java.io.*; +import java.util.*; + +class KMLWriter extends PrintWriter { + public PrintWriter printf(String format, Object ... arguments) { + return printf(Locale.ROOT, format, arguments); + } + + public KMLWriter(File name) throws FileNotFoundException { + super(name); + } +} public class AltosKML implements AltosWriter { File name; - PrintStream out; + PrintWriter out; int flight_state = -1; AltosState prev = null; double gps_start_altitude; @@ -137,6 +148,10 @@ public class AltosKML implements AltosWriter { end(); prev = null; } + if (out != null) { + out.close(); + out = null; + } } public void write(AltosState state) { @@ -177,7 +192,7 @@ public class AltosKML implements AltosWriter { public AltosKML(File in_name) throws FileNotFoundException { name = in_name; - out = new PrintStream(name); + out = new KMLWriter(name); } public AltosKML(String in_string) throws FileNotFoundException { -- cgit v1.2.3 From 3e5e9333420ede74d998556c1bbd5888e8ff75ae Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 19 May 2015 10:09:22 -0700 Subject: altoslib: Expose locale and non-locale floating point parsing functions UI bits use locale-specific floating point formats, so parsing those needs to use the locale. Network-based data, like .kml bits need to use non-locale-specific parsing code, so now we've got both APIs available, and each used as appropriate. Signed-off-by: Keith Packard --- .../src/org/altusmetrum/AltosDroid/AltosDroid.java | 5 ++-- altoslib/AltosGPS.java | 6 ++--- altoslib/AltosParse.java | 21 ++++++++++++--- altoslib/AltosUnits.java | 21 +++++++++++---- altosui/AltosConfigPyroUI.java | 15 ++++++----- altosui/AltosConfigUI.java | 30 +++++++++++++++++----- altosuilib/AltosConfigFreqUI.java | 5 ++-- altosuilib/AltosUIMapPreload.java | 23 +++++++++-------- telegps/TeleGPS.java | 9 +++++-- telegps/TeleGPSConfigUI.java | 14 ++++++++-- 10 files changed, 105 insertions(+), 44 deletions(-) (limited to 'altoslib') diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java index b4fc3bc3..db065b3f 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java @@ -21,6 +21,7 @@ import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Timer; import java.util.TimerTask; +import java.text.*; import android.app.Activity; import android.app.PendingIntent; @@ -687,8 +688,8 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener { void setFrequency(String freq) { try { - setFrequency (Double.parseDouble(freq.substring(11, 17))); - } catch (NumberFormatException e) { + setFrequency (AltosParse.parse_double_net(freq.substring(11, 17))); + } catch (ParseException e) { } } diff --git a/altoslib/AltosGPS.java b/altoslib/AltosGPS.java index 2139efb2..e3aee4ea 100644 --- a/altoslib/AltosGPS.java +++ b/altoslib/AltosGPS.java @@ -195,10 +195,10 @@ public class AltosGPS implements Cloneable, Serializable { lon = AltosParse.parse_coord(words[i++]); alt = AltosParse.parse_int(words[i++]); if (version > 1 || (i < words.length && !words[i].equals("SAT"))) { - ground_speed = AltosParse.parse_double(AltosParse.strip_suffix(words[i++], "m/s(H)")); + ground_speed = AltosParse.parse_double_net(AltosParse.strip_suffix(words[i++], "m/s(H)")); course = AltosParse.parse_int(words[i++]); - climb_rate = AltosParse.parse_double(AltosParse.strip_suffix(words[i++], "m/s(V)")); - hdop = AltosParse.parse_double(AltosParse.strip_suffix(words[i++], "(hdop)")); + climb_rate = AltosParse.parse_double_net(AltosParse.strip_suffix(words[i++], "m/s(V)")); + hdop = AltosParse.parse_double_net(AltosParse.strip_suffix(words[i++], "(hdop)")); h_error = AltosParse.parse_int(words[i++]); v_error = AltosParse.parse_int(words[i++]); } diff --git a/altoslib/AltosParse.java b/altoslib/AltosParse.java index 2fb69c15..a8b02b56 100644 --- a/altoslib/AltosParse.java +++ b/altoslib/AltosParse.java @@ -17,6 +17,7 @@ package org.altusmetrum.altoslib_6; +import java.util.*; import java.text.*; public class AltosParse { @@ -40,11 +41,23 @@ public class AltosParse { } } - public static double parse_double(String v) throws ParseException { + static NumberFormat nf_locale = NumberFormat.getInstance(); + + static NumberFormat nf_net = NumberFormat.getInstance(Locale.ROOT); + + public static double parse_double_locale(String str) throws ParseException { try { - return Double.parseDouble(v); - } catch (NumberFormatException e) { - throw new ParseException("error parsing double " + v, 0); + return nf_locale.parse(str.trim()).doubleValue(); + } catch (ParseException pe) { + throw new ParseException("error parsing double " + str, 0); + } + } + + public static double parse_double_net(String str) throws ParseException { + try { + return nf_net.parse(str.trim()).doubleValue(); + } catch (ParseException pe) { + throw new ParseException("error parsing double " + str, 0); } } diff --git a/altoslib/AltosUnits.java b/altoslib/AltosUnits.java index f6e34e77..e266b243 100644 --- a/altoslib/AltosUnits.java +++ b/altoslib/AltosUnits.java @@ -17,6 +17,8 @@ package org.altusmetrum.altoslib_6; +import java.text.*; + public abstract class AltosUnits { public abstract double value(double v, boolean imperial_units); @@ -29,13 +31,22 @@ public abstract class AltosUnits { public abstract int show_fraction(int width, boolean imperial_units); - public double parse(String s, boolean imperial_units) throws NumberFormatException { - double v = Double.parseDouble(s); + public double parse_locale(String s, boolean imperial_units) throws ParseException { + double v = AltosParse.parse_double_locale(s); + return inverse(v, imperial_units); + } + + public double parse_net(String s, boolean imperial_units) throws ParseException { + double v = AltosParse.parse_double_net(s); return inverse(v, imperial_units); } - public double parse(String s) throws NumberFormatException { - return parse(s, AltosConvert.imperial_units); + public double parse_locale(String s) throws ParseException { + return parse_locale(s, AltosConvert.imperial_units); + } + + public double parse_net(String s) throws ParseException { + return parse_net(s, AltosConvert.imperial_units); } public double value(double v) { @@ -105,4 +116,4 @@ public abstract class AltosUnits { public String say_units(double v) { return say_units(v, AltosConvert.imperial_units); } -} \ No newline at end of file +} diff --git a/altosui/AltosConfigPyroUI.java b/altosui/AltosConfigPyroUI.java index 61208dfe..69b31ff5 100644 --- a/altosui/AltosConfigPyroUI.java +++ b/altosui/AltosConfigPyroUI.java @@ -17,6 +17,7 @@ package altosui; +import java.text.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; @@ -87,9 +88,9 @@ public class AltosConfigPyroUI if (units != null) { try { - double v = units.parse(value.getText(), !imperial_units); + double v = units.parse_locale(value.getText(), !imperial_units); set(enabled(), v); - } catch (NumberFormatException ne) { + } catch (ParseException pe) { set(enabled(), 0.0); } } @@ -129,9 +130,9 @@ public class AltosConfigPyroUI AltosUnits units = AltosPyro.pyro_to_units(flag); try { if (units != null) - return units.parse(value.getText()); - return Double.parseDouble(value.getText()); - } catch (NumberFormatException e) { + return units.parse_locale(value.getText()); + return AltosParse.parse_double_locale(value.getText()); + } catch (ParseException e) { throw new AltosConfigDataException("\"%s\": %s\n", value.getText(), e.getMessage()); } } @@ -298,8 +299,8 @@ public class AltosConfigPyroUI String v = pyro_firing_time_value.getSelectedItem().toString(); try { - return Double.parseDouble(v); - } catch (NumberFormatException e) { + return AltosParse.parse_double_locale(v); + } catch (ParseException e) { throw new AltosConfigDataException("Invalid pyro firing time \"%s\"", v); } } diff --git a/altosui/AltosConfigUI.java b/altosui/AltosConfigUI.java index 67decaa4..ef477ca9 100644 --- a/altosui/AltosConfigUI.java +++ b/altosui/AltosConfigUI.java @@ -21,6 +21,7 @@ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; +import java.text.*; import org.altusmetrum.altoslib_6.*; import org.altusmetrum.altosuilib_6.*; @@ -976,8 +977,13 @@ public class AltosConfigUI } - public int main_deploy() { - return (int) (AltosConvert.height.parse(main_deploy_value.getSelectedItem().toString()) + 0.5); + public int main_deploy() throws AltosConfigDataException { + String str = main_deploy_value.getSelectedItem().toString(); + try { + return (int) (AltosConvert.height.parse_locale(str) + 0.5); + } catch (ParseException pe) { + throw new AltosConfigDataException("invalid main deploy height %s", str); + } } String get_main_deploy_label() { @@ -1006,14 +1012,21 @@ public class AltosConfigUI String v = main_deploy_value.getSelectedItem().toString(); main_deploy_label.setText(get_main_deploy_label()); set_main_deploy_values(); - int m = (int) (AltosConvert.height.parse(v, !imperial_units) + 0.5); - set_main_deploy(m); + try { + int m = (int) (AltosConvert.height.parse_locale(v, !imperial_units) + 0.5); + set_main_deploy(m); + } catch (ParseException pe) { + } if (tracker_motion_value.isEnabled()) { String motion = tracker_motion_value.getSelectedItem().toString(); tracker_motion_label.setText(get_tracker_motion_label()); set_tracker_motion_values(); - set_tracker_motion((int) (AltosConvert.height.parse(motion, !imperial_units) + 0.5)); + try { + int m = (int) (AltosConvert.height.parse_locale(motion, !imperial_units) + 0.5); + set_tracker_motion(m); + } catch (ParseException pe) { + } } if (!was_dirty) @@ -1272,7 +1285,12 @@ public class AltosConfigUI } public int tracker_motion() throws AltosConfigDataException { - return (int) AltosConvert.height.parse(tracker_motion_value.getSelectedItem().toString()); + String str = tracker_motion_value.getSelectedItem().toString(); + try { + return (int) (AltosConvert.height.parse_locale(str) + 0.5); + } catch (ParseException pe) { + throw new AltosConfigDataException("invalid tracker motion %s", str); + } } public void set_tracker_interval(int tracker_interval) { diff --git a/altosuilib/AltosConfigFreqUI.java b/altosuilib/AltosConfigFreqUI.java index 6253e3e4..21514a81 100644 --- a/altosuilib/AltosConfigFreqUI.java +++ b/altosuilib/AltosConfigFreqUI.java @@ -18,6 +18,7 @@ package org.altusmetrum.altosuilib_6; import java.awt.*; +import java.text.*; import java.awt.event.*; import javax.swing.*; import java.util.*; @@ -51,10 +52,10 @@ class AltosEditFreqUI extends AltosUIDialog implements ActionListener { String d_s = description.getText(); try { - double f_d = Double.parseDouble(f_s); + double f_d = AltosParse.parse_double_locale(f_s); return new AltosFrequency(f_d, d_s); - } catch (NumberFormatException ne) { + } catch (ParseException ne) { } return null; } diff --git a/altosuilib/AltosUIMapPreload.java b/altosuilib/AltosUIMapPreload.java index e82b6c60..1973ae6e 100644 --- a/altosuilib/AltosUIMapPreload.java +++ b/altosuilib/AltosUIMapPreload.java @@ -53,33 +53,33 @@ class AltosUIMapPos extends Box { hemi.setSelectedIndex(h); } - public double get_value() throws NumberFormatException { + public double get_value() throws ParseException { int h = hemi.getSelectedIndex(); String d_t = deg.getText(); String m_t = min.getText(); double d, m, v; try { - d = Double.parseDouble(d_t); - } catch (NumberFormatException ne) { + d = AltosParse.parse_double_locale(d_t); + } catch (ParseException pe) { JOptionPane.showMessageDialog(owner, String.format("Invalid degrees \"%s\"", d_t), "Invalid number", JOptionPane.ERROR_MESSAGE); - throw ne; + throw pe; } try { if (m_t.equals("")) m = 0; else - m = Double.parseDouble(m_t); - } catch (NumberFormatException ne) { + m = AltosParse.parse_double_locale(m_t); + } catch (ParseException pe) { JOptionPane.showMessageDialog(owner, String.format("Invalid minutes \"%s\"", m_t), "Invalid number", JOptionPane.ERROR_MESSAGE); - throw ne; + throw pe; } v = d + m/60.0; if (h == 1) @@ -142,9 +142,9 @@ class AltosUISite { name = elements[0]; try { - latitude = Double.parseDouble(elements[1]); - longitude = Double.parseDouble(elements[2]); - } catch (NumberFormatException ne) { + latitude = AltosParse.parse_double_net(elements[1]); + longitude = AltosParse.parse_double_net(elements[2]); + } catch (ParseException pe) { throw new ParseException(String.format("Invalid site line %s", line), 0); } } @@ -171,6 +171,7 @@ class AltosUISites extends Thread { try { add(new AltosUISite(line)); } catch (ParseException pe) { + System.out.printf("parse exception %s\n", pe.toString()); } } @@ -394,7 +395,7 @@ public class AltosUIMapPreload extends AltosUIFrame implements ActionListener, I max_z = min_z; r = (Integer) radius.getSelectedItem(); loading = true; - } catch (NumberFormatException ne) { + } catch (ParseException pe) { load_button.setSelected(false); } start_load(); diff --git a/telegps/TeleGPS.java b/telegps/TeleGPS.java index fe335176..7570d380 100644 --- a/telegps/TeleGPS.java +++ b/telegps/TeleGPS.java @@ -23,6 +23,7 @@ import javax.swing.*; import java.io.*; import java.util.concurrent.*; import java.util.*; +import java.text.*; import org.altusmetrum.altoslib_6.*; import org.altusmetrum.altosuilib_6.*; @@ -679,9 +680,13 @@ public class TeleGPS if (args.length < i + 3) { help(1); } else { - double lat = Double.parseDouble(args[i+1]); - double lon = Double.parseDouble(args[i+2]); + try { + double lat = AltosParse.parse_double_locale(args[i+1]); + double lon = AltosParse.parse_double_locale(args[i+2]); AltosUIMap.prefetch_maps(lat, lon); + } catch (ParseException e) { + System.out.printf("Can't parse number %s\n", e.toString()); + } i += 2; } } else if (args[i].equals("--replay")) diff --git a/telegps/TeleGPSConfigUI.java b/telegps/TeleGPSConfigUI.java index 97ab34b4..4e657586 100644 --- a/telegps/TeleGPSConfigUI.java +++ b/telegps/TeleGPSConfigUI.java @@ -17,6 +17,7 @@ package org.altusmetrum.telegps; +import java.text.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; @@ -686,7 +687,11 @@ public class TeleGPSConfigUI String motion = tracker_motion_value.getSelectedItem().toString(); tracker_motion_label.setText(get_tracker_motion_label()); set_tracker_motion_values(); - set_tracker_motion((int) (AltosConvert.height.parse(motion, !imperial_units) + 0.5)); + try { + int m = (int) (AltosConvert.height.parse_locale(motion, !imperial_units) + 0.5); + set_tracker_motion(m); + } catch (ParseException pe) { + } } if (!was_dirty) set_clean(); @@ -886,7 +891,12 @@ public class TeleGPSConfigUI } public int tracker_motion() throws AltosConfigDataException { - return (int) AltosConvert.height.parse(tracker_motion_value.getSelectedItem().toString()); + String str = tracker_motion_value.getSelectedItem().toString(); + try { + return (int) (AltosConvert.height.parse_locale(str) + 0.5); + } catch (ParseException pe) { + throw new AltosConfigDataException("invalid tracker motion %s", str); + } } public void set_tracker_interval(int tracker_interval) { -- cgit v1.2.3 From 29edc37a8de56cb6eb028e3bf3f56aa70f109eba Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Thu, 21 May 2015 13:49:28 -0700 Subject: altoslib: Create display-independent map support code This takes the swing-specific map code and creates a generic version. Signed-off-by: Keith Packard --- altoslib/.gitignore | 1 + altoslib/AltosFlightDisplay.java | 26 +++ altoslib/AltosFontListener.java | 22 +++ altoslib/AltosImage.java | 25 +++ altoslib/AltosLatLon.java | 34 ++++ altoslib/AltosMap.java | 355 ++++++++++++++++++++++++++++++++++++ altoslib/AltosMapCache.java | 207 +++++++++++++++++++++ altoslib/AltosMapCacheListener.java | 22 +++ altoslib/AltosMapInterface.java | 47 +++++ altoslib/AltosMapLine.java | 83 +++++++++ altoslib/AltosMapMark.java | 38 ++++ altoslib/AltosMapPath.java | 67 +++++++ altoslib/AltosMapRectangle.java | 45 +++++ altoslib/AltosMapStore.java | 196 ++++++++++++++++++++ altoslib/AltosMapStoreListener.java | 22 +++ altoslib/AltosMapTile.java | 114 ++++++++++++ altoslib/AltosMapTileListener.java | 22 +++ altoslib/AltosMapTransform.java | 101 ++++++++++ altoslib/AltosMapZoomListener.java | 22 +++ altoslib/AltosPointDouble.java | 41 +++++ altoslib/AltosPointInt.java | 31 ++++ altoslib/AltosPreferences.java | 39 ++++ altoslib/AltosVersion.java.in | 28 +++ altoslib/Makefile.am | 23 ++- 24 files changed, 1610 insertions(+), 1 deletion(-) create mode 100644 altoslib/AltosFlightDisplay.java create mode 100644 altoslib/AltosFontListener.java create mode 100644 altoslib/AltosImage.java create mode 100644 altoslib/AltosLatLon.java create mode 100644 altoslib/AltosMap.java create mode 100644 altoslib/AltosMapCache.java create mode 100644 altoslib/AltosMapCacheListener.java create mode 100644 altoslib/AltosMapInterface.java create mode 100644 altoslib/AltosMapLine.java create mode 100644 altoslib/AltosMapMark.java create mode 100644 altoslib/AltosMapPath.java create mode 100644 altoslib/AltosMapRectangle.java create mode 100644 altoslib/AltosMapStore.java create mode 100644 altoslib/AltosMapStoreListener.java create mode 100644 altoslib/AltosMapTile.java create mode 100644 altoslib/AltosMapTileListener.java create mode 100644 altoslib/AltosMapTransform.java create mode 100644 altoslib/AltosMapZoomListener.java create mode 100644 altoslib/AltosPointDouble.java create mode 100644 altoslib/AltosPointInt.java create mode 100644 altoslib/AltosVersion.java.in (limited to 'altoslib') diff --git a/altoslib/.gitignore b/altoslib/.gitignore index ff0fd710..dc8b7e5e 100644 --- a/altoslib/.gitignore +++ b/altoslib/.gitignore @@ -1,3 +1,4 @@ bin classaltoslib.stamp altoslib*.jar +AltosVersion.java diff --git a/altoslib/AltosFlightDisplay.java b/altoslib/AltosFlightDisplay.java new file mode 100644 index 00000000..157a0710 --- /dev/null +++ b/altoslib/AltosFlightDisplay.java @@ -0,0 +1,26 @@ +/* + * Copyright © 2010 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.altoslib_6; + +public interface AltosFlightDisplay extends AltosUnitsListener, AltosFontListener { + void reset(); + + void show(AltosState state, AltosListenerState listener_state); + + String getName(); +} diff --git a/altoslib/AltosFontListener.java b/altoslib/AltosFontListener.java new file mode 100644 index 00000000..74988139 --- /dev/null +++ b/altoslib/AltosFontListener.java @@ -0,0 +1,22 @@ +/* + * Copyright © 2011 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.altoslib_6; + +public interface AltosFontListener { + void font_size_changed(int font_size); +} diff --git a/altoslib/AltosImage.java b/altoslib/AltosImage.java new file mode 100644 index 00000000..9a9b5777 --- /dev/null +++ b/altoslib/AltosImage.java @@ -0,0 +1,25 @@ +/* + * Copyright © 2015 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.altoslib_6; + +import java.io.*; + +public interface AltosImage { + /* Discard storage for image */ + public abstract void flush(); +} diff --git a/altoslib/AltosLatLon.java b/altoslib/AltosLatLon.java new file mode 100644 index 00000000..f1ecfc90 --- /dev/null +++ b/altoslib/AltosLatLon.java @@ -0,0 +1,34 @@ +/* + * Copyright © 2014 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.altoslib_6; + +public class AltosLatLon { + public double lat; + public double lon; + + public boolean equals(AltosLatLon other) { + if (other == null) + return false; + return lat == other.lat && lon == other.lon; + } + + public AltosLatLon(double lat, double lon) { + this.lat = lat; + this.lon = lon; + } +} diff --git a/altoslib/AltosMap.java b/altoslib/AltosMap.java new file mode 100644 index 00000000..b42f9f85 --- /dev/null +++ b/altoslib/AltosMap.java @@ -0,0 +1,355 @@ +/* + * Copyright © 2010 Anthony Towns + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.altoslib_6; + +import java.io.*; +import java.lang.*; +import java.util.*; +import java.util.concurrent.*; + +public class AltosMap implements AltosFlightDisplay, AltosMapTileListener, AltosMapStoreListener { + + static final int px_size = 512; + + static final int maptype_hybrid = 0; + static final int maptype_roadmap = 1; + static final int maptype_satellite = 2; + static final int maptype_terrain = 3; + static final int maptype_default = maptype_hybrid; + + static final int default_zoom = 15; + static final int min_zoom = 3; + static final int max_zoom = 21; + + static final String[] maptype_names = { + "hybrid", + "roadmap", + "satellite", + "terrain" + }; + + public static final String[] maptype_labels = { + "Hybrid", + "Roadmap", + "Satellite", + "Terrain" + }; + + AltosMapInterface map_interface; + + AltosMapCache cache; + + LinkedList marks = new LinkedList(); + + LinkedList zoom_listeners = new LinkedList(); + + public void add_zoom_listener(AltosMapZoomListener listener) { + if (!zoom_listeners.contains(listener)) + zoom_listeners.add(listener); + } + + public void remove_zoom_listener(AltosMapZoomListener listener) { + zoom_listeners.remove(listener); + } + + boolean have_boost = false; + boolean have_landed = false; + + ConcurrentHashMap tiles = new ConcurrentHashMap(); + int load_radius; + AltosLatLon load_centre = null; + AltosMapTileListener load_listener; + + int zoom = AltosMap.default_zoom; + int maptype = AltosMap.maptype_default; + + long user_input_time; + + /* Milliseconds to wait after user action before auto-scrolling + */ + static final long auto_scroll_delay = 20 * 1000; + + AltosMapTransform transform; + AltosLatLon centre; + + public void reset() { + // nothing + } + + /* MapInterface wrapping functions */ + public void set_units() { + map_interface.set_units(); + } + + public void repaint(AltosMapRectangle damage, int pad) { + map_interface.repaint(damage, pad); + } + + public void repaint(double x, double y, double w, double h) { + map_interface.repaint(x, y, w, h); + } + + public void repaint() { + map_interface.repaint(); + } + + public int width() { + return map_interface.width(); + } + + public int height() { + return map_interface.height(); + } + + public AltosPointInt floor(AltosPointDouble point) { + return new AltosPointInt ((int) Math.floor(point.x / AltosMap.px_size) * AltosMap.px_size, + (int) Math.floor(point.y / AltosMap.px_size) * AltosMap.px_size); + } + + public AltosPointInt ceil(AltosPointDouble point) { + return new AltosPointInt ((int) Math.ceil(point.x / AltosMap.px_size) * AltosMap.px_size, + (int) Math.ceil(point.y / AltosMap.px_size) * AltosMap.px_size); + } + + public void notice_user_input() { + user_input_time = System.currentTimeMillis(); + } + + public boolean recent_user_input() { + return (System.currentTimeMillis() - user_input_time) < auto_scroll_delay; + } + + public boolean far_from_centre(AltosLatLon lat_lon) { + + if (centre == null || transform == null) + return true; + + AltosPointDouble screen = transform.screen(lat_lon); + + int width = width(); + int dx = Math.abs ((int) (double) screen.x - width/2); + + if (dx > width / 4) + return true; + + int height = height(); + int dy = Math.abs ((int) (double) screen.y - height/2); + + if (dy > height / 4) + return true; + + return false; + } + + public void font_size_changed(int font_size) { + map_interface.line.font_size_changed(font_size); + for (AltosMapTile tile : tiles.values()) + tile.font_size_changed(font_size); + repaint(); + } + + public void units_changed(boolean imperial_units) { + } + + private void set_transform() { + transform = new AltosMapTransform(width(), height(), zoom, centre); + repaint(); + } + + public boolean set_zoom(int zoom) { + if (AltosMap.min_zoom <= zoom && zoom <= AltosMap.max_zoom && zoom != this.zoom) { + this.zoom = zoom; + tiles.clear(); + set_transform(); + + for (AltosMapZoomListener listener : zoom_listeners) + listener.zoom_changed(this.zoom); + + return true; + } + return false; + } + + public int get_zoom() { + return zoom; + } + + public boolean set_maptype(int maptype) { + if (maptype != this.maptype) { + this.maptype = maptype; + tiles.clear(); + repaint(); + return true; + } + return false; + } + + public void show(AltosState state, AltosListenerState listener_state) { + + /* If insufficient gps data, nothing to update + */ + AltosGPS gps = state.gps; + + if (gps == null) + return; + + if (!gps.locked && gps.nsat < 4) + return; + + AltosMapRectangle damage = map_interface.path.add(gps.lat, gps.lon, state.state); + + switch (state.state) { + case AltosLib.ao_flight_boost: + if (!have_boost) { + add_mark(gps.lat, gps.lon, state.state); + have_boost = true; + } + break; + case AltosLib.ao_flight_landed: + if (!have_landed) { + add_mark(gps.lat, gps.lon, state.state); + have_landed = true; + } + break; + } + + if (damage != null) + repaint(damage, AltosMapPath.stroke_width); + maybe_centre(gps.lat, gps.lon); + } + + public void centre(AltosLatLon lat_lon) { + centre = lat_lon; + set_transform(); + } + + public void centre(double lat, double lon) { + centre(new AltosLatLon(lat, lon)); + } + + public void centre(AltosState state) { + if (!state.gps.locked && state.gps.nsat < 4) + return; + centre(state.gps.lat, state.gps.lon); + } + + public void maybe_centre(double lat, double lon) { + AltosLatLon lat_lon = new AltosLatLon(lat, lon); + if (centre == null || (!recent_user_input() && far_from_centre(lat_lon))) + centre(lat_lon); + } + + public void add_mark(double lat, double lon, int state) { + synchronized(marks) { + marks.add(map_interface.new_mark(lat, lon, state)); + } + repaint(); + } + + public void clear_marks() { + synchronized(marks) { + marks.clear(); + } + } + + private void make_tiles() { + AltosPointInt upper_left; + AltosPointInt lower_right; + + if (load_centre != null) { + AltosPointInt centre = floor(transform.point(load_centre)); + + upper_left = new AltosPointInt(centre.x - load_radius * AltosMap.px_size, + centre.y - load_radius * AltosMap.px_size); + lower_right = new AltosPointInt(centre.x + load_radius * AltosMap.px_size, + centre.y + load_radius * AltosMap.px_size); + } else { + upper_left = floor(transform.screen_point(new AltosPointDouble(0.0, 0.0))); + lower_right = floor(transform.screen_point(new AltosPointDouble(width(), height()))); + } + LinkedList to_remove = new LinkedList(); + + for (AltosPointInt point : tiles.keySet()) { + if (point.x < upper_left.x || lower_right.x < point.x || + point.y < upper_left.y || lower_right.y < point.y) { + to_remove.add(point); + } + } + + for (AltosPointInt point : to_remove) + tiles.remove(point); + + cache.set_cache_size((width() / AltosMap.px_size + 2) * (height() / AltosMap.px_size + 2)); + for (int y = (int) upper_left.y; y <= lower_right.y; y += AltosMap.px_size) { + for (int x = (int) upper_left.x; x <= lower_right.x; x += AltosMap.px_size) { + AltosPointInt point = new AltosPointInt(x, y); + + if (!tiles.containsKey(point)) { + AltosLatLon ul = transform.lat_lon(new AltosPointDouble(x, y)); + AltosLatLon center = transform.lat_lon(new AltosPointDouble(x + AltosMap.px_size/2, y + AltosMap.px_size/2)); + AltosMapTile tile = new AltosMapTile(this, ul, center, zoom, maptype, + AltosMap.px_size); + tiles.put(point, tile); + } + } + } + } + + public void set_load_params(double lat, double lon, int radius, AltosMapTileListener listener) { + load_centre = new AltosLatLon(lat, lon); + load_radius = radius; + load_listener = listener; + centre(lat, lon); + make_tiles(); + for (AltosMapTile tile : tiles.values()) { + tile.add_store_listener(this); + if (tile.store_status() != AltosMapTile.loading) + listener.notify_tile(tile, tile.store_status()); + } + repaint(); + } + + public String getName() { + return "Map"; + } + + /* AltosMapTileListener methods */ + public synchronized void notify_tile(AltosMapTile tile, int status) { + for (AltosPointInt point : tiles.keySet()) { + if (tile == tiles.get(point)) { + AltosPointInt screen = transform.screen(point); + repaint(screen.x, screen.y, AltosMap.px_size, AltosMap.px_size); + } + } + } + + /* AltosMapStoreListener methods */ + public synchronized void notify_store(AltosMapStore store, int status) { + if (load_listener != null) { + for (AltosMapTile tile : tiles.values()) + if (store.equals(tile.store)) + load_listener.notify_tile(tile, status); + } + } + + public AltosMap(AltosMapInterface map_interface) { + this.map_interface = map_interface; + cache = new AltosMapCache(map_interface); + centre(0, 0); + } +} diff --git a/altoslib/AltosMapCache.java b/altoslib/AltosMapCache.java new file mode 100644 index 00000000..d94bae6c --- /dev/null +++ b/altoslib/AltosMapCache.java @@ -0,0 +1,207 @@ +/* + * Copyright © 2010 Anthony Towns + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.altoslib_6; + +import java.io.*; +import java.net.*; + +public class AltosMapCache implements AltosMapCacheListener { + + /* An entry in the MapCache */ + class MapCacheElement implements AltosMapStoreListener { + + AltosMapTile tile; /* Notify when image has been loaded */ + AltosImage image; + AltosMapStore store; + long used; + + class loader implements Runnable { + public void run() { + if (image != null) + tile.notify_image(image); + try { + image = map_interface.load_image(store.file); + } catch (Exception ex) { + } + if (image == null) + tile.set_status(AltosMapTile.failed); + else + tile.set_status(AltosMapTile.success); + tile.notify_image(image); + } + } + + private void load() { + loader l = new loader(); + Thread lt = new Thread(l); + lt.start(); + } + + public void flush() { + if (image != null) { + image.flush(); + image = null; + } + } + + public boolean has_map() { + return store.status() == AltosMapTile.success; + } + + public synchronized void notify_store(AltosMapStore store, int status) { + switch (status) { + case AltosMapTile.loading: + break; + case AltosMapTile.success: + load(); + break; + default: + tile.set_status(status); + tile.notify_image(null); + } + } + + public MapCacheElement(AltosMapTile tile, AltosMapStore store) throws IOException { + this.tile = tile; + this.image = null; + this.store = store; + this.used = 0; + + int status = store.status(); + switch (status) { + case AltosMapTile.loading: + store.add_listener(this); + break; + case AltosMapTile.success: + load(); + break; + default: + tile.set_status(status); + tile.notify_image(null); + break; + } + } + } + + int min_cache_size; /* configured minimum cache size */ + int cache_size; /* current cache size */ + int requested_cache_size; /* cache size computed by application */ + + private Object fetch_lock = new Object(); + private Object cache_lock = new Object(); + + AltosMapInterface map_interface; + + MapCacheElement[] elements = new MapCacheElement[cache_size]; + + long used; + + public void set_cache_size(int new_size) { + + requested_cache_size = new_size; + + if (new_size < min_cache_size) + new_size = min_cache_size; + + if (new_size == cache_size) + return; + + synchronized(cache_lock) { + MapCacheElement[] new_elements = new MapCacheElement[new_size]; + + for (int i = 0; i < cache_size; i++) { + if (i < new_size) + new_elements[i] = elements[i]; + else if (elements[i] != null) + elements[i].flush(); + } + elements = new_elements; + cache_size = new_size; + } + } + + public AltosImage get(AltosMapTile tile, AltosMapStore store, int width, int height) { + int oldest = -1; + long age = used; + + synchronized(cache_lock) { + MapCacheElement element = null; + for (int i = 0; i < cache_size; i++) { + element = elements[i]; + + if (element == null) { + oldest = i; + break; + } + if (store.equals(element.store)) { + element.used = used++; + return element.image; + } + if (element.used < age) { + oldest = i; + age = element.used; + } + } + + try { + element = new MapCacheElement(tile, store); + element.used = used++; + if (elements[oldest] != null) + elements[oldest].flush(); + + elements[oldest] = element; + + if (element.image == null) + tile.set_status(AltosMapTile.loading); + else + tile.set_status(AltosMapTile.success); + + return element.image; + } catch (IOException e) { + tile.set_status(AltosMapTile.failed); + return null; + } + } + } + + public void map_cache_changed(int map_cache) { + min_cache_size = map_cache; + + set_cache_size(requested_cache_size); + } + + public void dispose() { + AltosPreferences.unregister_map_cache_listener(this); + + for (int i = 0; i < cache_size; i++) { + MapCacheElement element = elements[i]; + + if (element != null) + element.flush(); + } + } + + public AltosMapCache(AltosMapInterface map_interface) { + this.map_interface = map_interface; + min_cache_size = AltosPreferences.map_cache(); + + set_cache_size(0); + + AltosPreferences.register_map_cache_listener(this); + } +} diff --git a/altoslib/AltosMapCacheListener.java b/altoslib/AltosMapCacheListener.java new file mode 100644 index 00000000..49b075dd --- /dev/null +++ b/altoslib/AltosMapCacheListener.java @@ -0,0 +1,22 @@ +/* + * Copyright © 2014 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.altoslib_6; + +public interface AltosMapCacheListener { + public void map_cache_changed(int map_cache); +} diff --git a/altoslib/AltosMapInterface.java b/altoslib/AltosMapInterface.java new file mode 100644 index 00000000..ea5454de --- /dev/null +++ b/altoslib/AltosMapInterface.java @@ -0,0 +1,47 @@ +/* + * Copyright © 2015 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.altoslib_6; + +import java.io.*; +import java.net.*; + +public abstract class AltosMapInterface { + + public AltosMapPath path; + public AltosMapLine line; + + public abstract AltosImage load_image(File file) throws Exception; + + public abstract AltosMapMark new_mark(double lat, double lon, int state); + + public abstract int width(); + public abstract int height(); + + public abstract void repaint(); + + public abstract void repaint(AltosMapRectangle damage, int pad); + + public abstract void repaint(double x, double y, double w, double h); + + public abstract void set_units(); + + public AltosMapInterface (AltosMapPath path, AltosMapLine line) { + this.path = path; + this.line = line; + } +} diff --git a/altoslib/AltosMapLine.java b/altoslib/AltosMapLine.java new file mode 100644 index 00000000..83de47f9 --- /dev/null +++ b/altoslib/AltosMapLine.java @@ -0,0 +1,83 @@ +/* + * Copyright © 2014 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.altoslib_6; + +import java.io.*; +import java.lang.Math; +import java.util.*; +import java.util.concurrent.*; + +public abstract class AltosMapLine implements AltosFontListener { + AltosLatLon start, end; + + static public int stroke_width = 6; + + public abstract void font_size_changed(int font_size); + + private AltosLatLon lat_lon(AltosPointDouble pt, AltosMapTransform t) { + return t.screen_lat_lon(pt); + } + + public void dragged(AltosPointDouble pt, AltosMapTransform t) { + end = lat_lon(pt, t); + } + + public void pressed(AltosPointDouble pt, AltosMapTransform t) { + start = lat_lon(pt, t); + end = null; + } + + private String line_dist() { + String format; + AltosGreatCircle g = new AltosGreatCircle(start.lat, start.lon, + end.lat, end.lon); + double distance = g.distance; + + if (AltosConvert.imperial_units) { + distance = AltosConvert.meters_to_feet(distance); + if (distance < 10000) { + format = "%4.0fft"; + } else { + distance /= 5280; + if (distance < 10) + format = "%5.3fmi"; + else if (distance < 100) + format = "%5.2fmi"; + else if (distance < 1000) + format = "%5.1fmi"; + else + format = "%5.0fmi"; + } + } else { + if (distance < 10000) { + format = "%4.0fm"; + } else { + distance /= 1000; + if (distance < 100) + format = "%5.2fkm"; + else if (distance < 1000) + format = "%5.1fkm"; + else + format = "%5.0fkm"; + } + } + return String.format(format, distance); + } + + public abstract void paint(AltosMapTransform t); +} diff --git a/altoslib/AltosMapMark.java b/altoslib/AltosMapMark.java new file mode 100644 index 00000000..9b77d539 --- /dev/null +++ b/altoslib/AltosMapMark.java @@ -0,0 +1,38 @@ +/* + * Copyright © 2014 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.altoslib_6; + +import java.io.*; +import java.lang.Math; +import java.util.*; +import java.util.concurrent.*; + +public abstract class AltosMapMark { + + AltosLatLon lat_lon; + int state; + + static public int stroke_width = 6; + + public abstract void paint(AltosMapTransform t); + + public AltosMapMark (double lat, double lon, int state) { + lat_lon = new AltosLatLon(lat, lon); + this.state = state; + } +} diff --git a/altoslib/AltosMapPath.java b/altoslib/AltosMapPath.java new file mode 100644 index 00000000..272a4316 --- /dev/null +++ b/altoslib/AltosMapPath.java @@ -0,0 +1,67 @@ +/* + * Copyright © 2014 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.altoslib_6; + +import java.io.*; +import java.lang.Math; +import java.util.*; +import java.util.concurrent.*; + +class PathPoint { + AltosLatLon lat_lon; + int state; + + public PathPoint(AltosLatLon lat_lon, int state) { + this.lat_lon = lat_lon; + this.state = state; + } + + public boolean equals(PathPoint other) { + if (other == null) + return false; + + return lat_lon.equals(other.lat_lon) && state == other.state; + } +} + +public abstract class AltosMapPath { + + LinkedList points = new LinkedList(); + PathPoint last_point = null; + + static public int stroke_width = 6; + + public abstract void paint(AltosMapTransform t); + + public AltosMapRectangle add(double lat, double lon, int state) { + PathPoint point = new PathPoint(new AltosLatLon (lat, lon), state); + AltosMapRectangle rect = null; + + if (!point.equals(last_point)) { + if (last_point != null) + rect = new AltosMapRectangle(last_point.lat_lon, point.lat_lon); + points.add (point); + last_point = point; + } + return rect; + } + + public void clear () { + points = new LinkedList(); + } +} diff --git a/altoslib/AltosMapRectangle.java b/altoslib/AltosMapRectangle.java new file mode 100644 index 00000000..f2f30103 --- /dev/null +++ b/altoslib/AltosMapRectangle.java @@ -0,0 +1,45 @@ +/* + * Copyright © 2014 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.altoslib_6; + +public class AltosMapRectangle { + AltosLatLon ul, lr; + + public AltosMapRectangle(AltosLatLon a, AltosLatLon b) { + double ul_lat, ul_lon; + double lr_lat, lr_lon; + + if (a.lat > b.lat) { + ul_lat = a.lat; + lr_lat = b.lat; + } else { + ul_lat = b.lat; + lr_lat = a.lat; + } + if (a.lon < b.lon) { + ul_lon = a.lon; + lr_lon = b.lon; + } else { + ul_lon = b.lon; + lr_lon = a.lon; + } + + ul = new AltosLatLon(ul_lat, ul_lon); + lr = new AltosLatLon(lr_lat, lr_lon); + } +} diff --git a/altoslib/AltosMapStore.java b/altoslib/AltosMapStore.java new file mode 100644 index 00000000..2f52edb6 --- /dev/null +++ b/altoslib/AltosMapStore.java @@ -0,0 +1,196 @@ +/* + * Copyright © 2014 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.altoslib_6; + +import java.io.*; +import java.net.*; +import java.util.*; + +public class AltosMapStore { + String url; + public File file; + LinkedList listeners = new LinkedList(); + + int status; + + public int status() { + return status; + } + + public synchronized void add_listener(AltosMapStoreListener listener) { + if (!listeners.contains(listener)) + listeners.add(listener); + } + + public synchronized void remove_listener(AltosMapStoreListener listener) { + listeners.remove(listener); + } + + private synchronized void notify_listeners(int status) { + this.status = status; + for (AltosMapStoreListener listener : listeners) + listener.notify_store(this, status); + } + + static Object forbidden_lock = new Object(); + static long forbidden_time; + static boolean forbidden_set; + + private int fetch_url() { + URL u; + + try { + u = new URL(url); + } catch (java.net.MalformedURLException e) { + return AltosMapTile.bad_request; + } + + byte[] data; + URLConnection uc = null; + try { + uc = u.openConnection(); + String type = uc.getContentType(); + int contentLength = uc.getContentLength(); + if (uc instanceof HttpURLConnection) { + int response = ((HttpURLConnection) uc).getResponseCode(); + switch (response) { + case HttpURLConnection.HTTP_FORBIDDEN: + case HttpURLConnection.HTTP_PAYMENT_REQUIRED: + case HttpURLConnection.HTTP_UNAUTHORIZED: + synchronized (forbidden_lock) { + forbidden_time = System.nanoTime(); + forbidden_set = true; + return AltosMapTile.forbidden; + } + } + } + InputStream in = new BufferedInputStream(uc.getInputStream()); + int bytesRead = 0; + int offset = 0; + data = new byte[contentLength]; + while (offset < contentLength) { + bytesRead = in.read(data, offset, data.length - offset); + if (bytesRead == -1) + break; + offset += bytesRead; + } + in.close(); + + if (offset != contentLength) + return AltosMapTile.failed; + + } catch (IOException e) { + return AltosMapTile.failed; + } + + try { + FileOutputStream out = new FileOutputStream(file); + out.write(data); + out.flush(); + out.close(); + } catch (FileNotFoundException e) { + return AltosMapTile.bad_request; + } catch (IOException e) { + if (file.exists()) + file.delete(); + return AltosMapTile.bad_request; + } + return AltosMapTile.success; + } + + static Object fetch_lock = new Object(); + + static final long forbidden_interval = 60l * 1000l * 1000l * 1000l; + static final long google_maps_ratelimit_ms = 1200; + + class loader implements Runnable { + + public void run() { + if (file.exists()) { + notify_listeners(AltosMapTile.success); + return; + } + + synchronized(forbidden_lock) { + if (forbidden_set && (System.nanoTime() - forbidden_time) < forbidden_interval) { + notify_listeners(AltosMapTile.forbidden); + return; + } + } + + int new_status; + + if (!AltosVersion.has_google_maps_api_key()) { + synchronized (fetch_lock) { + long startTime = System.nanoTime(); + new_status = fetch_url(); + if (new_status == AltosMapTile.success) { + long duration_ms = (System.nanoTime() - startTime) / 1000000; + if (duration_ms < google_maps_ratelimit_ms) { + try { + Thread.sleep(google_maps_ratelimit_ms - duration_ms); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } + } + } + } else { + new_status = fetch_url(); + } + notify_listeners(new_status); + } + } + + private void load() { + loader l = new loader(); + Thread lt = new Thread(l); + lt.start(); + } + + private AltosMapStore (String url, File file) { + this.url = url; + this.file = file; + + if (file.exists()) + status = AltosMapTile.success; + else { + status = AltosMapTile.loading; + load(); + } + } + + public boolean equals(AltosMapStore other) { + return url.equals(other.url); + } + + static HashMap stores = new HashMap(); + + public static AltosMapStore get(String url, File file) { + AltosMapStore store; + synchronized(stores) { + if (stores.containsKey(url)) { + store = stores.get(url); + } else { + store = new AltosMapStore(url, file); + stores.put(url, store); + } + } + return store; + } +} diff --git a/altoslib/AltosMapStoreListener.java b/altoslib/AltosMapStoreListener.java new file mode 100644 index 00000000..a272e864 --- /dev/null +++ b/altoslib/AltosMapStoreListener.java @@ -0,0 +1,22 @@ +/* + * Copyright © 2014 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.altoslib_6; + +public interface AltosMapStoreListener { + abstract void notify_store(AltosMapStore store, int status); +} diff --git a/altoslib/AltosMapTile.java b/altoslib/AltosMapTile.java new file mode 100644 index 00000000..b5dee7a4 --- /dev/null +++ b/altoslib/AltosMapTile.java @@ -0,0 +1,114 @@ +/* + * Copyright © 2010 Anthony Towns + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.altoslib_6; + +import java.io.*; +import java.util.*; + +public class AltosMapTile implements AltosFontListener { + AltosMapTileListener listener; + AltosLatLon upper_left, center; + int px_size; + int zoom; + int maptype; + AltosMapStore store; + AltosMapCache cache; + int status; + + static public final int success = 0; + static public final int loading = 1; + static public final int failed = 2; + static public final int bad_request = 3; + static public final int forbidden = 4; + + private File map_file() { + double lat = center.lat; + double lon = center.lon; + char chlat = lat < 0 ? 'S' : 'N'; + char chlon = lon < 0 ? 'W' : 'E'; + + if (lat < 0) lat = -lat; + if (lon < 0) lon = -lon; + String maptype_string = String.format("%s-", AltosMap.maptype_names[maptype]); + String format_string; + if (maptype == AltosMap.maptype_hybrid || maptype == AltosMap.maptype_satellite || maptype == AltosMap.maptype_terrain) + format_string = "jpg"; + else + format_string = "png"; + return new File(AltosPreferences.mapdir(), + String.format("map-%c%.6f,%c%.6f-%s%d.%s", + chlat, lat, chlon, lon, maptype_string, zoom, format_string)); + } + + private String map_url() { + String format_string; + if (maptype == AltosMap.maptype_hybrid || maptype == AltosMap.maptype_satellite || maptype == AltosMap.maptype_terrain) + format_string = "jpg"; + else + format_string = "png32"; + + if (AltosVersion.has_google_maps_api_key()) + return String.format("http://maps.google.com/maps/api/staticmap?center=%.6f,%.6f&zoom=%d&size=%dx%d&sensor=false&maptype=%s&format=%s&key=%s", + center.lat, center.lon, zoom, px_size, px_size, AltosMap.maptype_names[maptype], format_string, AltosVersion.google_maps_api_key); + else + return String.format("http://maps.google.com/maps/api/staticmap?center=%.6f,%.6f&zoom=%d&size=%dx%d&sensor=false&maptype=%s&format=%s", + center.lat, center.lon, zoom, px_size, px_size, AltosMap.maptype_names[maptype], format_string); + } + + public void font_size_changed(int font_size) { + } + + public void set_status(int status) { + this.status = status; + listener.notify_tile(this, status); + } + + public void notify_image(AltosImage image) { + listener.notify_tile(this, status); + } + + public int store_status() { + return store.status(); + } + + public void add_store_listener(AltosMapStoreListener listener) { + store.add_listener(listener); + } + + public void remove_store_listener(AltosMapStoreListener listener) { + store.remove_listener(listener); + } + + public AltosMapTile(AltosMapTileListener listener, AltosLatLon upper_left, AltosLatLon center, int zoom, int maptype, int px_size) { + this.listener = listener; + this.upper_left = upper_left; + + while (center.lon < -180.0) + center.lon += 360.0; + while (center.lon > 180.0) + center.lon -= 360.0; + + this.center = center; + this.zoom = zoom; + this.maptype = maptype; + this.px_size = px_size; + + status = AltosMapTile.loading; + store = AltosMapStore.get(map_url(), map_file()); + } +} diff --git a/altoslib/AltosMapTileListener.java b/altoslib/AltosMapTileListener.java new file mode 100644 index 00000000..8abc8b5a --- /dev/null +++ b/altoslib/AltosMapTileListener.java @@ -0,0 +1,22 @@ +/* + * Copyright © 2014 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.altoslib_6; + +public interface AltosMapTileListener { + abstract public void notify_tile(AltosMapTile tile, int status); +} diff --git a/altoslib/AltosMapTransform.java b/altoslib/AltosMapTransform.java new file mode 100644 index 00000000..f5fc5ebe --- /dev/null +++ b/altoslib/AltosMapTransform.java @@ -0,0 +1,101 @@ +/* + * Copyright © 2014 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.altoslib_6; + +import java.io.*; +import java.lang.Math; +import java.util.*; +import java.util.concurrent.*; + +public class AltosMapTransform { + + double scale_x, scale_y; + + double offset_x, offset_y; + + public AltosLatLon lat_lon (AltosPointDouble point) { + double lat, lon; + double rads; + + lon = point.x/scale_x; + rads = 2 * Math.atan(Math.exp(-point.y/scale_y)); + lat = Math.toDegrees(rads - Math.PI/2); + + return new AltosLatLon(lat,lon); + } + + public AltosPointDouble screen_point(AltosPointDouble screen) { + return new AltosPointDouble(screen.x + offset_x, screen.y + offset_y); + } + + public AltosLatLon screen_lat_lon(AltosPointDouble screen) { + return lat_lon(screen_point(screen)); + } + + public AltosPointDouble point(AltosLatLon lat_lon) { + double x, y; + double e; + + x = lat_lon.lon * scale_x; + + e = Math.sin(Math.toRadians(lat_lon.lat)); + e = Math.max(e,-(1-1.0E-15)); + e = Math.min(e, 1-1.0E-15 ); + + y = 0.5*Math.log((1+e)/(1-e))*-scale_y; + + return new AltosPointDouble(x, y); + } + + public AltosPointDouble screen(AltosPointDouble point) { + return new AltosPointDouble(point.x - offset_x, point.y - offset_y); + } + + public AltosPointInt screen(AltosPointInt point) { + return new AltosPointInt((int) (point.x - offset_x + 0.5), + (int) (point.y - offset_y + 0.5)); + } + +// public Rectangle screen(AltosMapRectangle map_rect) { +// AltosPoint2D ul = screen(map_rect.ul); +// AltosPoint2D lr = screen(map_rect.lr); +// +// return new Rectangle((int) ul.x, (int) ul.y, (int) (lr.x - ul.x), (int) (lr.y - ul.y)); +// } + + public AltosPointDouble screen(AltosLatLon lat_lon) { + return screen(point(lat_lon)); + } + + private boolean has_location; + + public boolean has_location() { + return has_location; + } + + public AltosMapTransform(int width, int height, int zoom, AltosLatLon centre_lat_lon) { + scale_x = 256/360.0 * Math.pow(2, zoom); + scale_y = 256/(2.0*Math.PI) * Math.pow(2, zoom); + + AltosPointDouble centre_pt = point(centre_lat_lon); + + has_location = (centre_lat_lon.lat != 0 || centre_lat_lon.lon != 0); + offset_x = centre_pt.x - width / 2.0; + offset_y = centre_pt.y - height / 2.0; + } +} diff --git a/altoslib/AltosMapZoomListener.java b/altoslib/AltosMapZoomListener.java new file mode 100644 index 00000000..34edb19b --- /dev/null +++ b/altoslib/AltosMapZoomListener.java @@ -0,0 +1,22 @@ +/* + * Copyright © 2014 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.altoslib_6; + +public interface AltosMapZoomListener { + abstract public void zoom_changed(int zoom); +} diff --git a/altoslib/AltosPointDouble.java b/altoslib/AltosPointDouble.java new file mode 100644 index 00000000..96fb9161 --- /dev/null +++ b/altoslib/AltosPointDouble.java @@ -0,0 +1,41 @@ +/* + * Copyright © 2015 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.altoslib_6; + +public class AltosPointDouble { + public double x, y; + + public boolean equals(AltosPointDouble n) { + return n.x == x && n.y == y; + } + + public AltosPointDouble(double x, double y) { + this.x = x; + this.y = y; + } + + public AltosPointDouble(int x, int y) { + this.x = x; + this.y = y; + } + + public AltosPointDouble(AltosPointInt p) { + this.x = p.x; + this.y = p.y; + } +} diff --git a/altoslib/AltosPointInt.java b/altoslib/AltosPointInt.java new file mode 100644 index 00000000..6ee077ab --- /dev/null +++ b/altoslib/AltosPointInt.java @@ -0,0 +1,31 @@ +/* + * Copyright © 2015 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.altoslib_6; + +public class AltosPointInt { + public int x, y; + + public boolean equals(AltosPointInt n) { + return n.x == x && n.y == y; + } + + public AltosPointInt(int x, int y) { + this.x = x; + this.y = y; + } +} diff --git a/altoslib/AltosPreferences.java b/altoslib/AltosPreferences.java index 5aa45d3f..9c4cadff 100644 --- a/altoslib/AltosPreferences.java +++ b/altoslib/AltosPreferences.java @@ -118,6 +118,13 @@ public class AltosPreferences { public final static String unitsPreference = "IMPERIAL-UNITS"; + /* Maps cache size preference name */ + final static String mapCachePreference = "MAP-CACHE"; + + static LinkedList map_cache_listeners; + + public static int map_cache = 9; + public static AltosFrequency[] load_common_frequencies() { AltosFrequency[] frequencies = null; boolean existing = false; @@ -208,6 +215,9 @@ public class AltosPreferences { common_frequencies = load_common_frequencies(); AltosConvert.imperial_units = backend.getBoolean(unitsPreference, false); + + map_cache = backend.getInt(mapCachePreference, 9); + map_cache_listeners = new LinkedList(); } public static void flush_preferences() { @@ -548,4 +558,33 @@ public class AltosPreferences { units_listeners.remove(l); } } + + + public static void register_map_cache_listener(AltosMapCacheListener l) { + synchronized(backend) { + map_cache_listeners.add(l); + } + } + + public static void unregister_map_cache_listener(AltosMapCacheListener l) { + synchronized (backend) { + map_cache_listeners.remove(l); + } + } + + public static void set_map_cache(int new_map_cache) { + synchronized(backend) { + map_cache = new_map_cache; + backend.putInt(mapCachePreference, map_cache); + flush_preferences(); + for (AltosMapCacheListener l: map_cache_listeners) + l.map_cache_changed(map_cache); + } + } + + public static int map_cache() { + synchronized(backend) { + return map_cache; + } + } } diff --git a/altoslib/AltosVersion.java.in b/altoslib/AltosVersion.java.in new file mode 100644 index 00000000..6bfef181 --- /dev/null +++ b/altoslib/AltosVersion.java.in @@ -0,0 +1,28 @@ +/* + * Copyright © 2011 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.altoslib_6; + +public class AltosVersion { + public final static String version = "@VERSION@"; + + public final static String google_maps_api_key = @GOOGLEKEY@; + + static boolean has_google_maps_api_key() { + return google_maps_api_key != null && google_maps_api_key.length() > 1; + } +} diff --git a/altoslib/Makefile.am b/altoslib/Makefile.am index c640c69c..0ee7b935 100644 --- a/altoslib/Makefile.am +++ b/altoslib/Makefile.am @@ -128,7 +128,28 @@ altoslib_JAVA = \ AltosPyro.java \ AltosWriter.java \ AltosQuaternion.java \ - AltosRotation.java + AltosRotation.java \ + AltosImage.java \ + AltosLatLon.java \ + AltosMap.java \ + AltosMapCache.java \ + AltosMapCacheListener.java \ + AltosMapInterface.java \ + AltosMapLine.java \ + AltosMapMark.java \ + AltosMapPath.java \ + AltosMapRectangle.java \ + AltosMapStore.java \ + AltosMapStoreListener.java \ + AltosMapTile.java \ + AltosMapTileListener.java \ + AltosMapTransform.java \ + AltosMapZoomListener.java \ + AltosPointDouble.java \ + AltosPointInt.java \ + AltosFlightDisplay.java \ + AltosFontListener.java \ + AltosVersion.java JAR=altoslib_$(ALTOSLIB_VERSION).jar -- cgit v1.2.3 From 00aca369c4070901e0400f291d5f269b5fb8015c Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Mon, 25 May 2015 20:10:37 -0700 Subject: altoslib: Get new abstract mapping code compiling Not useful yet, but at least it compiles now? Signed-off-by: Keith Packard --- altoslib/AltosMap.java | 48 +++++++++++++++++++++++++++-------------- altoslib/AltosMapInterface.java | 15 ++++++------- altoslib/AltosMapLine.java | 14 ++++++------ altoslib/AltosMapPath.java | 25 ++++----------------- altoslib/AltosMapPathPoint.java | 41 +++++++++++++++++++++++++++++++++++ altoslib/AltosMapTile.java | 4 +++- altoslib/AltosMapTransform.java | 20 +++++++++++------ altoslib/AltosRectangle.java | 29 +++++++++++++++++++++++++ altoslib/Makefile.am | 2 ++ 9 files changed, 138 insertions(+), 60 deletions(-) create mode 100644 altoslib/AltosMapPathPoint.java create mode 100644 altoslib/AltosRectangle.java (limited to 'altoslib') diff --git a/altoslib/AltosMap.java b/altoslib/AltosMap.java index b42f9f85..f8c3a36b 100644 --- a/altoslib/AltosMap.java +++ b/altoslib/AltosMap.java @@ -24,19 +24,19 @@ import java.util.concurrent.*; public class AltosMap implements AltosFlightDisplay, AltosMapTileListener, AltosMapStoreListener { - static final int px_size = 512; + public static final int px_size = 512; - static final int maptype_hybrid = 0; - static final int maptype_roadmap = 1; - static final int maptype_satellite = 2; - static final int maptype_terrain = 3; - static final int maptype_default = maptype_hybrid; + public static final int maptype_hybrid = 0; + public static final int maptype_roadmap = 1; + public static final int maptype_satellite = 2; + public static final int maptype_terrain = 3; + public static final int maptype_default = maptype_hybrid; - static final int default_zoom = 15; - static final int min_zoom = 3; - static final int max_zoom = 21; + public static final int default_zoom = 15; + public static final int min_zoom = 3; + public static final int max_zoom = 21; - static final String[] maptype_names = { + public static final String[] maptype_names = { "hybrid", "roadmap", "satellite", @@ -157,7 +157,7 @@ public class AltosMap implements AltosFlightDisplay, AltosMapTileListener, Altos } public void font_size_changed(int font_size) { - map_interface.line.font_size_changed(font_size); + map_interface.line().font_size_changed(font_size); for (AltosMapTile tile : tiles.values()) tile.font_size_changed(font_size); repaint(); @@ -211,7 +211,7 @@ public class AltosMap implements AltosFlightDisplay, AltosMapTileListener, Altos if (!gps.locked && gps.nsat < 4) return; - AltosMapRectangle damage = map_interface.path.add(gps.lat, gps.lon, state.state); + AltosMapRectangle damage = map_interface.path().add(gps.lat, gps.lon, state.state); switch (state.state) { case AltosLib.ao_flight_boost: @@ -279,8 +279,8 @@ public class AltosMap implements AltosFlightDisplay, AltosMapTileListener, Altos lower_right = new AltosPointInt(centre.x + load_radius * AltosMap.px_size, centre.y + load_radius * AltosMap.px_size); } else { - upper_left = floor(transform.screen_point(new AltosPointDouble(0.0, 0.0))); - lower_right = floor(transform.screen_point(new AltosPointDouble(width(), height()))); + upper_left = floor(transform.screen_point(new AltosPointInt(0, 0))); + lower_right = floor(transform.screen_point(new AltosPointInt(width(), height()))); } LinkedList to_remove = new LinkedList(); @@ -302,8 +302,8 @@ public class AltosMap implements AltosFlightDisplay, AltosMapTileListener, Altos if (!tiles.containsKey(point)) { AltosLatLon ul = transform.lat_lon(new AltosPointDouble(x, y)); AltosLatLon center = transform.lat_lon(new AltosPointDouble(x + AltosMap.px_size/2, y + AltosMap.px_size/2)); - AltosMapTile tile = new AltosMapTile(this, ul, center, zoom, maptype, - AltosMap.px_size); + AltosMapTile tile = map_interface.new_tile(this, ul, center, zoom, maptype, + AltosMap.px_size); tiles.put(point, tile); } } @@ -328,6 +328,22 @@ public class AltosMap implements AltosFlightDisplay, AltosMapTileListener, Altos return "Map"; } + public void paint() { + make_tiles(); + + for (AltosMapTile tile : tiles.values()) + tile.paint(transform); + + synchronized(marks) { + for (AltosMapMark mark : marks) + mark.paint(transform); + } + + map_interface.path().paint(transform); + + map_interface.line().paint(transform); + } + /* AltosMapTileListener methods */ public synchronized void notify_tile(AltosMapTile tile, int status) { for (AltosPointInt point : tiles.keySet()) { diff --git a/altoslib/AltosMapInterface.java b/altoslib/AltosMapInterface.java index ea5454de..c548744b 100644 --- a/altoslib/AltosMapInterface.java +++ b/altoslib/AltosMapInterface.java @@ -20,16 +20,18 @@ package org.altusmetrum.altoslib_6; import java.io.*; import java.net.*; -public abstract class AltosMapInterface { - - public AltosMapPath path; - public AltosMapLine line; +public interface AltosMapInterface { + public abstract AltosMapPath path(); + public abstract AltosMapLine line(); public abstract AltosImage load_image(File file) throws Exception; public abstract AltosMapMark new_mark(double lat, double lon, int state); + public abstract AltosMapTile new_tile(AltosMapTileListener listener, AltosLatLon upper_left, AltosLatLon center, int zoom, int maptype, int px_size); + public abstract int width(); + public abstract int height(); public abstract void repaint(); @@ -39,9 +41,4 @@ public abstract class AltosMapInterface { public abstract void repaint(double x, double y, double w, double h); public abstract void set_units(); - - public AltosMapInterface (AltosMapPath path, AltosMapLine line) { - this.path = path; - this.line = line; - } } diff --git a/altoslib/AltosMapLine.java b/altoslib/AltosMapLine.java index 83de47f9..77807b94 100644 --- a/altoslib/AltosMapLine.java +++ b/altoslib/AltosMapLine.java @@ -23,26 +23,28 @@ import java.util.*; import java.util.concurrent.*; public abstract class AltosMapLine implements AltosFontListener { - AltosLatLon start, end; + public AltosLatLon start, end; static public int stroke_width = 6; public abstract void font_size_changed(int font_size); - private AltosLatLon lat_lon(AltosPointDouble pt, AltosMapTransform t) { + public abstract void paint(AltosMapTransform t); + + private AltosLatLon lat_lon(AltosPointInt pt, AltosMapTransform t) { return t.screen_lat_lon(pt); } - public void dragged(AltosPointDouble pt, AltosMapTransform t) { + public void dragged(AltosPointInt pt, AltosMapTransform t) { end = lat_lon(pt, t); } - public void pressed(AltosPointDouble pt, AltosMapTransform t) { + public void pressed(AltosPointInt pt, AltosMapTransform t) { start = lat_lon(pt, t); end = null; } - private String line_dist() { + public String line_dist() { String format; AltosGreatCircle g = new AltosGreatCircle(start.lat, start.lon, end.lat, end.lon); @@ -78,6 +80,4 @@ public abstract class AltosMapLine implements AltosFontListener { } return String.format(format, distance); } - - public abstract void paint(AltosMapTransform t); } diff --git a/altoslib/AltosMapPath.java b/altoslib/AltosMapPath.java index 272a4316..e7224b57 100644 --- a/altoslib/AltosMapPath.java +++ b/altoslib/AltosMapPath.java @@ -22,34 +22,17 @@ import java.lang.Math; import java.util.*; import java.util.concurrent.*; -class PathPoint { - AltosLatLon lat_lon; - int state; - - public PathPoint(AltosLatLon lat_lon, int state) { - this.lat_lon = lat_lon; - this.state = state; - } - - public boolean equals(PathPoint other) { - if (other == null) - return false; - - return lat_lon.equals(other.lat_lon) && state == other.state; - } -} - public abstract class AltosMapPath { - LinkedList points = new LinkedList(); - PathPoint last_point = null; + public LinkedList points = new LinkedList(); + public AltosMapPathPoint last_point = null; static public int stroke_width = 6; public abstract void paint(AltosMapTransform t); public AltosMapRectangle add(double lat, double lon, int state) { - PathPoint point = new PathPoint(new AltosLatLon (lat, lon), state); + AltosMapPathPoint point = new AltosMapPathPoint(new AltosLatLon (lat, lon), state); AltosMapRectangle rect = null; if (!point.equals(last_point)) { @@ -62,6 +45,6 @@ public abstract class AltosMapPath { } public void clear () { - points = new LinkedList(); + points = new LinkedList(); } } diff --git a/altoslib/AltosMapPathPoint.java b/altoslib/AltosMapPathPoint.java new file mode 100644 index 00000000..757211af --- /dev/null +++ b/altoslib/AltosMapPathPoint.java @@ -0,0 +1,41 @@ +/* + * Copyright © 2015 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.altoslib_6; + +import java.io.*; +import java.lang.Math; +import java.util.*; +import java.util.concurrent.*; + +public class AltosMapPathPoint { + public AltosLatLon lat_lon; + public int state; + + public boolean equals(AltosMapPathPoint other) { + if (other == null) + return false; + + return lat_lon.equals(other.lat_lon) && state == other.state; + } + + public AltosMapPathPoint(AltosLatLon lat_lon, int state) { + this.lat_lon = lat_lon; + this.state = state; + } +} + diff --git a/altoslib/AltosMapTile.java b/altoslib/AltosMapTile.java index b5dee7a4..923b7c6b 100644 --- a/altoslib/AltosMapTile.java +++ b/altoslib/AltosMapTile.java @@ -20,7 +20,7 @@ package org.altusmetrum.altoslib_6; import java.io.*; import java.util.*; -public class AltosMapTile implements AltosFontListener { +public abstract class AltosMapTile implements AltosFontListener { AltosMapTileListener listener; AltosLatLon upper_left, center; int px_size; @@ -94,6 +94,8 @@ public class AltosMapTile implements AltosFontListener { store.remove_listener(listener); } + public abstract void paint(AltosMapTransform t); + public AltosMapTile(AltosMapTileListener listener, AltosLatLon upper_left, AltosLatLon center, int zoom, int maptype, int px_size) { this.listener = listener; this.upper_left = upper_left; diff --git a/altoslib/AltosMapTransform.java b/altoslib/AltosMapTransform.java index f5fc5ebe..384c1744 100644 --- a/altoslib/AltosMapTransform.java +++ b/altoslib/AltosMapTransform.java @@ -39,10 +39,18 @@ public class AltosMapTransform { return new AltosLatLon(lat,lon); } + public AltosPointDouble screen_point(AltosPointInt screen) { + return new AltosPointDouble(screen.x + offset_x, screen.y + offset_y); + } + public AltosPointDouble screen_point(AltosPointDouble screen) { return new AltosPointDouble(screen.x + offset_x, screen.y + offset_y); } + public AltosLatLon screen_lat_lon(AltosPointInt screen) { + return lat_lon(screen_point(screen)); + } + public AltosLatLon screen_lat_lon(AltosPointDouble screen) { return lat_lon(screen_point(screen)); } @@ -71,12 +79,12 @@ public class AltosMapTransform { (int) (point.y - offset_y + 0.5)); } -// public Rectangle screen(AltosMapRectangle map_rect) { -// AltosPoint2D ul = screen(map_rect.ul); -// AltosPoint2D lr = screen(map_rect.lr); -// -// return new Rectangle((int) ul.x, (int) ul.y, (int) (lr.x - ul.x), (int) (lr.y - ul.y)); -// } + public AltosRectangle screen(AltosMapRectangle map_rect) { + AltosPointDouble ul = screen(map_rect.ul); + AltosPointDouble lr = screen(map_rect.lr); + + return new AltosRectangle((int) ul.x, (int) ul.y, (int) (lr.x - ul.x), (int) (lr.y - ul.y)); + } public AltosPointDouble screen(AltosLatLon lat_lon) { return screen(point(lat_lon)); diff --git a/altoslib/AltosRectangle.java b/altoslib/AltosRectangle.java new file mode 100644 index 00000000..c55fd613 --- /dev/null +++ b/altoslib/AltosRectangle.java @@ -0,0 +1,29 @@ +/* + * Copyright © 2015 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.altoslib_6; + +public class AltosRectangle { + public int x, y, width, height; + + public AltosRectangle(int x, int y, int w, int h) { + this.x = x; + this.y = y; + this.width = w; + this.height = h; + } +} diff --git a/altoslib/Makefile.am b/altoslib/Makefile.am index 0ee7b935..481c974f 100644 --- a/altoslib/Makefile.am +++ b/altoslib/Makefile.am @@ -138,6 +138,7 @@ altoslib_JAVA = \ AltosMapLine.java \ AltosMapMark.java \ AltosMapPath.java \ + AltosMapPathPoint.java \ AltosMapRectangle.java \ AltosMapStore.java \ AltosMapStoreListener.java \ @@ -147,6 +148,7 @@ altoslib_JAVA = \ AltosMapZoomListener.java \ AltosPointDouble.java \ AltosPointInt.java \ + AltosRectangle.java \ AltosFlightDisplay.java \ AltosFontListener.java \ AltosVersion.java -- cgit v1.2.3 From 68effc6e39f731a2d7bbe2963999c1e785118897 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Mon, 25 May 2015 20:33:28 -0700 Subject: altoslib: More frobbing with new map bits Signed-off-by: Keith Packard --- altoslib/AltosMapTile.java | 10 +++++----- altosui/AltosFlightUI.java | 4 ++-- altosuilib/AltosFlightDisplay.java | 28 ---------------------------- altosuilib/AltosFontListener.java | 22 ---------------------- altosuilib/AltosUIMapView.java | 15 --------------- altosuilib/Makefile.am | 4 ++-- configure.ac | 4 ++-- 7 files changed, 11 insertions(+), 76 deletions(-) delete mode 100644 altosuilib/AltosFlightDisplay.java delete mode 100644 altosuilib/AltosFontListener.java (limited to 'altoslib') diff --git a/altoslib/AltosMapTile.java b/altoslib/AltosMapTile.java index 923b7c6b..92b7a985 100644 --- a/altoslib/AltosMapTile.java +++ b/altoslib/AltosMapTile.java @@ -22,13 +22,13 @@ import java.util.*; public abstract class AltosMapTile implements AltosFontListener { AltosMapTileListener listener; - AltosLatLon upper_left, center; - int px_size; + public AltosLatLon upper_left, center; + public int px_size; int zoom; int maptype; - AltosMapStore store; - AltosMapCache cache; - int status; + public AltosMapStore store; + public AltosMapCache cache; + public int status; static public final int success = 0; static public final int loading = 1; diff --git a/altosui/AltosFlightUI.java b/altosui/AltosFlightUI.java index 424c57da..6ef85a96 100644 --- a/altosui/AltosFlightUI.java +++ b/altosui/AltosFlightUI.java @@ -40,7 +40,7 @@ public class AltosFlightUI extends AltosUIFrame implements AltosFlightDisplay { AltosDescent descent; AltosLanded landed; AltosCompanionInfo companion; - AltosUIMap sitemap; + AltosUIMapNew sitemap; boolean has_map; boolean has_companion; boolean has_state; @@ -319,7 +319,7 @@ public class AltosFlightUI extends AltosUIFrame implements AltosFlightDisplay { has_companion = false; has_state = false; - sitemap = new AltosUIMap(); + sitemap = new AltosUIMapNew(); displays.add(sitemap); has_map = false; diff --git a/altosuilib/AltosFlightDisplay.java b/altosuilib/AltosFlightDisplay.java deleted file mode 100644 index ac65c49e..00000000 --- a/altosuilib/AltosFlightDisplay.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright © 2010 Keith Packard - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. - */ - -package org.altusmetrum.altosuilib_6; - -import org.altusmetrum.altoslib_6.*; - -public interface AltosFlightDisplay extends AltosUnitsListener, AltosFontListener { - void reset(); - - void show(AltosState state, AltosListenerState listener_state); - - String getName(); -} diff --git a/altosuilib/AltosFontListener.java b/altosuilib/AltosFontListener.java deleted file mode 100644 index 93625278..00000000 --- a/altosuilib/AltosFontListener.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright © 2011 Keith Packard - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. - */ - -package org.altusmetrum.altosuilib_6; - -public interface AltosFontListener { - void font_size_changed(int font_size); -} diff --git a/altosuilib/AltosUIMapView.java b/altosuilib/AltosUIMapView.java index c8632b99..d110f803 100644 --- a/altosuilib/AltosUIMapView.java +++ b/altosuilib/AltosUIMapView.java @@ -426,21 +426,6 @@ public class AltosUIMapView extends Component implements MouseMotionListener, Mo } public void paint(Graphics g) { - VolatileImage back_buffer = create_back_buffer(); - do { - GraphicsConfiguration gc = getGraphicsConfiguration(); - int code = back_buffer.validate(gc); - if (code == VolatileImage.IMAGE_INCOMPATIBLE) - back_buffer = create_back_buffer(); - - Graphics g_back = back_buffer.getGraphics(); - g_back.setClip(g.getClip()); - do_paint(g_back); - g_back.dispose(); - - g.drawImage(back_buffer, 0, 0, this); - } while (back_buffer.contentsLost()); - back_buffer.flush(); } public void update(Graphics g) { diff --git a/altosuilib/Makefile.am b/altosuilib/Makefile.am index d51da91d..30d003e9 100644 --- a/altosuilib/Makefile.am +++ b/altosuilib/Makefile.am @@ -12,8 +12,6 @@ altosuilib_JAVA = \ GrabNDrag.java \ AltosDevice.java \ AltosDeviceDialog.java \ - AltosFlightDisplay.java \ - AltosFontListener.java \ AltosPositionListener.java \ AltosUIConfigure.java \ AltosUIAxis.java \ @@ -61,6 +59,7 @@ altosuilib_JAVA = \ AltosBTManage.java \ AltosBTKnown.java \ AltosUIMap.java \ + AltosUIMapNew.java \ AltosUIMapView.java \ AltosUIMapLine.java \ AltosUIMapMark.java \ @@ -84,6 +83,7 @@ altosuilib_JAVA = \ AltosUIFreqList.java \ AltosUITelemetryList.java \ AltosUIRateList.java \ + AltosUIImage.java \ OSXAdapter.java JAR=altosuilib_$(ALTOSUILIB_VERSION).jar diff --git a/configure.ac b/configure.ac index 171d1410..0564f4f8 100644 --- a/configure.ac +++ b/configure.ac @@ -29,8 +29,8 @@ AC_SUBST(VERSION_DASH) dnl ========================================================================== dnl Java library versions -ALTOSUILIB_VERSION=6 -ALTOSLIB_VERSION=6 +ALTOSUILIB_VERSION=7 +ALTOSLIB_VERSION=7 AC_SUBST(ALTOSLIB_VERSION) AC_DEFINE(ALTOSLIB_VERSION,$ALTOSLIB_VERSION,[Version of the AltosLib package]) -- cgit v1.2.3 From cb23b992be8ba40c97d8988c134a814a13ccd58c Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Mon, 25 May 2015 20:34:05 -0700 Subject: altoslib/altosuilib: Update library version to 7 So many ABI/API changes Signed-off-by: Keith Packard --- altosdroid/src/org/altusmetrum/AltosDroid/AltosBluetooth.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidLink.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidPreferences.java | 2 +- .../src/org/altusmetrum/AltosDroid/AltosDroidPreferencesBackend.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/AltosUsb.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/AltosVoice.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/TabAscent.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/TabDescent.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/TabLanded.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/TelemetryLogger.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/TelemetryReader.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java | 2 +- altosdroid/src/org/altusmetrum/AltosDroid/TelemetryState.java | 2 +- altoslib/AltosAccel.java | 2 +- altoslib/AltosCRCException.java | 2 +- altoslib/AltosCSV.java | 2 +- altoslib/AltosCompanion.java | 2 +- altoslib/AltosConfigData.java | 2 +- altoslib/AltosConfigDataException.java | 2 +- altoslib/AltosConfigValues.java | 2 +- altoslib/AltosConvert.java | 2 +- altoslib/AltosDebug.java | 2 +- altoslib/AltosDistance.java | 2 +- altoslib/AltosEeprom.java | 2 +- altoslib/AltosEepromChunk.java | 2 +- altoslib/AltosEepromDownload.java | 2 +- altoslib/AltosEepromFile.java | 2 +- altoslib/AltosEepromGPS.java | 2 +- altoslib/AltosEepromHeader.java | 2 +- altoslib/AltosEepromIterable.java | 2 +- altoslib/AltosEepromList.java | 2 +- altoslib/AltosEepromLog.java | 2 +- altoslib/AltosEepromMega.java | 2 +- altoslib/AltosEepromMetrum2.java | 2 +- altoslib/AltosEepromMini.java | 2 +- altoslib/AltosEepromMonitor.java | 2 +- altoslib/AltosEepromTM.java | 2 +- altoslib/AltosEepromTm.java | 2 +- altoslib/AltosFile.java | 2 +- altoslib/AltosFlash.java | 2 +- altoslib/AltosFlashListener.java | 2 +- altoslib/AltosFlightDisplay.java | 2 +- altoslib/AltosFlightReader.java | 2 +- altoslib/AltosFlightStats.java | 2 +- altoslib/AltosFontListener.java | 2 +- altoslib/AltosFrequency.java | 2 +- altoslib/AltosGPS.java | 2 +- altoslib/AltosGPSSat.java | 2 +- altoslib/AltosGreatCircle.java | 2 +- altoslib/AltosHeight.java | 2 +- altoslib/AltosHexfile.java | 2 +- altoslib/AltosHexsym.java | 2 +- altoslib/AltosIMU.java | 2 +- altoslib/AltosIdle.java | 2 +- altoslib/AltosIdleFetch.java | 2 +- altoslib/AltosIdleMonitor.java | 2 +- altoslib/AltosIdleMonitorListener.java | 2 +- altoslib/AltosIgnite.java | 2 +- altoslib/AltosImage.java | 2 +- altoslib/AltosKML.java | 2 +- altoslib/AltosLatLon.java | 2 +- altoslib/AltosLatitude.java | 2 +- altoslib/AltosLib.java | 2 +- altoslib/AltosLine.java | 2 +- altoslib/AltosLink.java | 2 +- altoslib/AltosListenerState.java | 2 +- altoslib/AltosLocation.java | 2 +- altoslib/AltosLog.java | 2 +- altoslib/AltosLongitude.java | 2 +- altoslib/AltosMag.java | 2 +- altoslib/AltosMap.java | 2 +- altoslib/AltosMapCache.java | 2 +- altoslib/AltosMapCacheListener.java | 2 +- altoslib/AltosMapInterface.java | 2 +- altoslib/AltosMapLine.java | 2 +- altoslib/AltosMapMark.java | 2 +- altoslib/AltosMapPath.java | 2 +- altoslib/AltosMapPathPoint.java | 2 +- altoslib/AltosMapRectangle.java | 2 +- altoslib/AltosMapStore.java | 2 +- altoslib/AltosMapStoreListener.java | 2 +- altoslib/AltosMapTile.java | 2 +- altoslib/AltosMapTileListener.java | 2 +- altoslib/AltosMapTransform.java | 2 +- altoslib/AltosMapZoomListener.java | 2 +- altoslib/AltosMma655x.java | 2 +- altoslib/AltosMs5607.java | 2 +- altoslib/AltosNoSymbol.java | 2 +- altoslib/AltosOrient.java | 2 +- altoslib/AltosParse.java | 2 +- altoslib/AltosPointDouble.java | 2 +- altoslib/AltosPointInt.java | 2 +- altoslib/AltosPreferences.java | 2 +- altoslib/AltosPreferencesBackend.java | 2 +- altoslib/AltosProgrammer.java | 2 +- altoslib/AltosPyro.java | 2 +- altoslib/AltosQuaternion.java | 2 +- altoslib/AltosRectangle.java | 2 +- altoslib/AltosReplayReader.java | 2 +- altoslib/AltosRomconfig.java | 2 +- altoslib/AltosRotation.java | 2 +- altoslib/AltosSavedState.java | 2 +- altoslib/AltosSelfFlash.java | 2 +- altoslib/AltosSensorEMini.java | 2 +- altoslib/AltosSensorMM.java | 2 +- altoslib/AltosSensorMega.java | 2 +- altoslib/AltosSensorMetrum.java | 2 +- altoslib/AltosSensorTGPS.java | 2 +- altoslib/AltosSensorTM.java | 2 +- altoslib/AltosSensorTMini.java | 2 +- altoslib/AltosSpeed.java | 2 +- altoslib/AltosState.java | 2 +- altoslib/AltosStateIterable.java | 2 +- altoslib/AltosStateUpdate.java | 2 +- altoslib/AltosTelemetry.java | 2 +- altoslib/AltosTelemetryConfiguration.java | 2 +- altoslib/AltosTelemetryFile.java | 2 +- altoslib/AltosTelemetryIterable.java | 2 +- altoslib/AltosTelemetryLegacy.java | 2 +- altoslib/AltosTelemetryLocation.java | 2 +- altoslib/AltosTelemetryMap.java | 2 +- altoslib/AltosTelemetryMegaData.java | 2 +- altoslib/AltosTelemetryMegaSensor.java | 2 +- altoslib/AltosTelemetryMetrumData.java | 2 +- altoslib/AltosTelemetryMetrumSensor.java | 2 +- altoslib/AltosTelemetryMini.java | 2 +- altoslib/AltosTelemetryRaw.java | 2 +- altoslib/AltosTelemetryReader.java | 2 +- altoslib/AltosTelemetrySatellite.java | 2 +- altoslib/AltosTelemetrySensor.java | 2 +- altoslib/AltosTelemetryStandard.java | 2 +- altoslib/AltosTemperature.java | 2 +- altoslib/AltosUnits.java | 2 +- altoslib/AltosUnitsListener.java | 2 +- altoslib/AltosVersion.java.in | 2 +- altoslib/AltosVoltage.java | 2 +- altoslib/AltosWriter.java | 2 +- altosui/Altos.java | 4 ++-- altosui/AltosAscent.java | 4 ++-- altosui/AltosCompanionInfo.java | 4 ++-- altosui/AltosConfig.java | 4 ++-- altosui/AltosConfigPyroUI.java | 4 ++-- altosui/AltosConfigTD.java | 4 ++-- altosui/AltosConfigTDUI.java | 4 ++-- altosui/AltosConfigUI.java | 4 ++-- altosui/AltosConfigureUI.java | 2 +- altosui/AltosDescent.java | 4 ++-- altosui/AltosFlightStatus.java | 4 ++-- altosui/AltosFlightStatusTableModel.java | 2 +- altosui/AltosFlightStatusUpdate.java | 2 +- altosui/AltosFlightUI.java | 4 ++-- altosui/AltosGraphUI.java | 4 ++-- altosui/AltosIdleMonitorUI.java | 4 ++-- altosui/AltosIgniteUI.java | 4 ++-- altosui/AltosIgnitor.java | 4 ++-- altosui/AltosLanded.java | 4 ++-- altosui/AltosLaunch.java | 2 +- altosui/AltosLaunchUI.java | 2 +- altosui/AltosPad.java | 4 ++-- altosui/AltosUI.java | 4 ++-- altosuilib/AltosBTDevice.java | 4 ++-- altosuilib/AltosBTDeviceIterator.java | 4 ++-- altosuilib/AltosBTKnown.java | 4 ++-- altosuilib/AltosBTManage.java | 4 ++-- altosuilib/AltosCSVUI.java | 4 ++-- altosuilib/AltosConfigFreqUI.java | 4 ++-- altosuilib/AltosDataChooser.java | 4 ++-- altosuilib/AltosDevice.java | 2 +- altosuilib/AltosDeviceDialog.java | 2 +- altosuilib/AltosDeviceUIDialog.java | 2 +- altosuilib/AltosDisplayThread.java | 4 ++-- altosuilib/AltosEepromDelete.java | 4 ++-- altosuilib/AltosEepromManage.java | 4 ++-- altosuilib/AltosEepromMonitor.java | 2 +- altosuilib/AltosEepromMonitorUI.java | 4 ++-- altosuilib/AltosEepromSelect.java | 4 ++-- altosuilib/AltosFlashUI.java | 4 ++-- altosuilib/AltosFlightInfoTableModel.java | 2 +- altosuilib/AltosFlightStatsTable.java | 4 ++-- altosuilib/AltosGraph.java | 4 ++-- altosuilib/AltosGraphDataPoint.java | 4 ++-- altosuilib/AltosGraphDataSet.java | 4 ++-- altosuilib/AltosInfoTable.java | 4 ++-- altosuilib/AltosLed.java | 2 +- altosuilib/AltosLights.java | 2 +- altosuilib/AltosPositionListener.java | 2 +- altosuilib/AltosRomconfigUI.java | 4 ++-- altosuilib/AltosScanUI.java | 4 ++-- altosuilib/AltosSerial.java | 4 ++-- altosuilib/AltosSerialInUseException.java | 2 +- altosuilib/AltosUIAxis.java | 4 ++-- altosuilib/AltosUIConfigure.java | 2 +- altosuilib/AltosUIDataMissing.java | 2 +- altosuilib/AltosUIDataPoint.java | 2 +- altosuilib/AltosUIDataSet.java | 2 +- altosuilib/AltosUIDialog.java | 2 +- altosuilib/AltosUIEnable.java | 4 ++-- altosuilib/AltosUIFlightTab.java | 4 ++-- altosuilib/AltosUIFrame.java | 2 +- altosuilib/AltosUIFreqList.java | 4 ++-- altosuilib/AltosUIGraph.java | 4 ++-- altosuilib/AltosUIGrapher.java | 4 ++-- altosuilib/AltosUIIndicator.java | 4 ++-- altosuilib/AltosUILatLon.java | 4 ++-- altosuilib/AltosUILib.java | 4 ++-- altosuilib/AltosUIListener.java | 2 +- altosuilib/AltosUIMap.java | 4 ++-- altosuilib/AltosUIMapCache.java | 2 +- altosuilib/AltosUIMapCacheListener.java | 2 +- altosuilib/AltosUIMapImage.java | 2 +- altosuilib/AltosUIMapLine.java | 4 ++-- altosuilib/AltosUIMapMark.java | 4 ++-- altosuilib/AltosUIMapPath.java | 4 ++-- altosuilib/AltosUIMapPreload.java | 4 ++-- altosuilib/AltosUIMapRectangle.java | 2 +- altosuilib/AltosUIMapStore.java | 2 +- altosuilib/AltosUIMapStoreListener.java | 2 +- altosuilib/AltosUIMapTile.java | 4 ++-- altosuilib/AltosUIMapTileListener.java | 2 +- altosuilib/AltosUIMapTransform.java | 4 ++-- altosuilib/AltosUIMapView.java | 4 ++-- altosuilib/AltosUIMapZoomListener.java | 2 +- altosuilib/AltosUIMarker.java | 4 ++-- altosuilib/AltosUIPreferences.java | 4 ++-- altosuilib/AltosUIPreferencesBackend.java | 4 ++-- altosuilib/AltosUIRateList.java | 4 ++-- altosuilib/AltosUISeries.java | 4 ++-- altosuilib/AltosUITelemetryList.java | 4 ++-- altosuilib/AltosUIUnitsIndicator.java | 4 ++-- altosuilib/AltosUIVersion.java.in | 2 +- altosuilib/AltosUIVoltageIndicator.java | 4 ++-- altosuilib/AltosUSBDevice.java | 2 +- altosuilib/AltosVoice.java | 2 +- altosuilib/GrabNDrag.java | 2 +- altosuilib/OSXAdapter.java | 2 +- micropeak/MicroData.java | 4 ++-- micropeak/MicroDataPoint.java | 2 +- micropeak/MicroDeviceDialog.java | 2 +- micropeak/MicroDownload.java | 4 ++-- micropeak/MicroExport.java | 4 ++-- micropeak/MicroFile.java | 4 ++-- micropeak/MicroFileChooser.java | 4 ++-- micropeak/MicroFrame.java | 2 +- micropeak/MicroGraph.java | 4 ++-- micropeak/MicroPeak.java | 4 ++-- micropeak/MicroRaw.java | 4 ++-- micropeak/MicroSave.java | 4 ++-- micropeak/MicroSerial.java | 2 +- micropeak/MicroSerialLog.java | 2 +- micropeak/MicroStats.java | 4 ++-- micropeak/MicroStatsTable.java | 4 ++-- micropeak/MicroUSB.java | 4 ++-- telegps/TeleGPS.java | 4 ++-- telegps/TeleGPSConfig.java | 4 ++-- telegps/TeleGPSConfigUI.java | 4 ++-- telegps/TeleGPSDisplayThread.java | 4 ++-- telegps/TeleGPSGraphUI.java | 4 ++-- telegps/TeleGPSInfo.java | 4 ++-- telegps/TeleGPSPreferences.java | 2 +- telegps/TeleGPSState.java | 4 ++-- telegps/TeleGPSStatus.java | 4 ++-- telegps/TeleGPSStatusUpdate.java | 2 +- 266 files changed, 350 insertions(+), 350 deletions(-) (limited to 'altoslib') diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosBluetooth.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosBluetooth.java index 32b7a65b..e68b1885 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosBluetooth.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosBluetooth.java @@ -31,7 +31,7 @@ import android.os.Handler; //import android.os.Message; import android.util.Log; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosBluetooth extends AltosDroidLink { diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java index db065b3f..eff24b10 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java @@ -57,7 +57,7 @@ import android.app.AlertDialog; import android.location.Location; import android.hardware.usb.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosDroid extends FragmentActivity implements AltosUnitsListener { // Debugging diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidLink.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidLink.java index badb2caa..62090774 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidLink.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidLink.java @@ -25,7 +25,7 @@ import java.util.UUID; import android.os.Handler; import android.util.Log; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public abstract class AltosDroidLink extends AltosLink { diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidPreferences.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidPreferences.java index 372500c1..cda35f1d 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidPreferences.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidPreferences.java @@ -17,7 +17,7 @@ package org.altusmetrum.AltosDroid; import android.content.Context; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosDroidPreferences extends AltosPreferences { diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidPreferencesBackend.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidPreferencesBackend.java index bc5300fd..75676e28 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidPreferencesBackend.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidPreferencesBackend.java @@ -24,7 +24,7 @@ import android.content.SharedPreferences; import android.os.Environment; import android.util.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosDroidPreferencesBackend implements AltosPreferencesBackend { public final static String NAME = "org.altusmetrum.AltosDroid"; diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java index 0896b3a3..f91ddf58 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java @@ -17,7 +17,7 @@ package org.altusmetrum.AltosDroid; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; import android.location.Location; import android.app.Activity; import android.graphics.Color; diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosUsb.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosUsb.java index 81d50ab3..4685a824 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosUsb.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosUsb.java @@ -29,7 +29,7 @@ import android.app.*; import android.os.Handler; import android.util.Log; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosUsb extends AltosDroidLink { diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosVoice.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosVoice.java index 2d32dc07..e79972e3 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosVoice.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosVoice.java @@ -21,7 +21,7 @@ package org.altusmetrum.AltosDroid; import android.speech.tts.TextToSpeech; import android.speech.tts.TextToSpeech.OnInitListener; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosVoice { diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabAscent.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabAscent.java index 23de9622..797dc7c3 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabAscent.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabAscent.java @@ -17,7 +17,7 @@ package org.altusmetrum.AltosDroid; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; import android.app.Activity; import android.os.Bundle; diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabDescent.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabDescent.java index 4ec6f409..f3f5a0f1 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabDescent.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabDescent.java @@ -17,7 +17,7 @@ package org.altusmetrum.AltosDroid; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; import android.app.Activity; import android.os.Bundle; diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabLanded.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabLanded.java index 4c69d869..d37891f7 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabLanded.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabLanded.java @@ -17,7 +17,7 @@ package org.altusmetrum.AltosDroid; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; import android.app.Activity; import android.os.Bundle; diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java index 871b94a1..83c8f7f8 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java @@ -19,7 +19,7 @@ package org.altusmetrum.AltosDroid; import java.util.Arrays; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java index 0ac78219..f7eb43db 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabPad.java @@ -17,7 +17,7 @@ package org.altusmetrum.AltosDroid; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; import android.app.Activity; import android.os.Bundle; diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryLogger.java b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryLogger.java index 9764ab72..0cd9b2c1 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryLogger.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryLogger.java @@ -1,6 +1,6 @@ package org.altusmetrum.AltosDroid; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; import android.content.BroadcastReceiver; import android.content.Context; diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryReader.java b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryReader.java index bdb2bae4..3f31fa6b 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryReader.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryReader.java @@ -25,7 +25,7 @@ import java.util.concurrent.*; import android.util.Log; import android.os.Handler; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class TelemetryReader extends Thread { diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java index e7f958b9..82c546c5 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java @@ -46,7 +46,7 @@ import android.location.LocationManager; import android.location.LocationListener; import android.location.Criteria; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class TelemetryService extends Service implements LocationListener { diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryState.java b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryState.java index ca066fc2..fb7e1893 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryState.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryState.java @@ -17,7 +17,7 @@ package org.altusmetrum.AltosDroid; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; import android.location.Location; public class TelemetryState { diff --git a/altoslib/AltosAccel.java b/altoslib/AltosAccel.java index b11dc3a1..a358eda9 100644 --- a/altoslib/AltosAccel.java +++ b/altoslib/AltosAccel.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; diff --git a/altoslib/AltosCRCException.java b/altoslib/AltosCRCException.java index 4167aecf..8100f4f6 100644 --- a/altoslib/AltosCRCException.java +++ b/altoslib/AltosCRCException.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public class AltosCRCException extends Exception { public int rssi; diff --git a/altoslib/AltosCSV.java b/altoslib/AltosCSV.java index 02f7806f..f4e50ff1 100644 --- a/altoslib/AltosCSV.java +++ b/altoslib/AltosCSV.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.util.*; diff --git a/altoslib/AltosCompanion.java b/altoslib/AltosCompanion.java index 8992b018..f4221c4b 100644 --- a/altoslib/AltosCompanion.java +++ b/altoslib/AltosCompanion.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; diff --git a/altoslib/AltosConfigData.java b/altoslib/AltosConfigData.java index 0ffdcf60..a722a689 100644 --- a/altoslib/AltosConfigData.java +++ b/altoslib/AltosConfigData.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.util.*; import java.text.*; diff --git a/altoslib/AltosConfigDataException.java b/altoslib/AltosConfigDataException.java index 11aa4d24..32f1ab51 100644 --- a/altoslib/AltosConfigDataException.java +++ b/altoslib/AltosConfigDataException.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public class AltosConfigDataException extends Exception { diff --git a/altoslib/AltosConfigValues.java b/altoslib/AltosConfigValues.java index 3f26a078..d11bcde1 100644 --- a/altoslib/AltosConfigValues.java +++ b/altoslib/AltosConfigValues.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public interface AltosConfigValues { /* set and get all of the dialog values */ diff --git a/altoslib/AltosConvert.java b/altoslib/AltosConvert.java index a5eb7ff8..5750afad 100644 --- a/altoslib/AltosConvert.java +++ b/altoslib/AltosConvert.java @@ -18,7 +18,7 @@ /* * Sensor data conversion functions */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public class AltosConvert { /* diff --git a/altoslib/AltosDebug.java b/altoslib/AltosDebug.java index ef5edc6a..004ab566 100644 --- a/altoslib/AltosDebug.java +++ b/altoslib/AltosDebug.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; diff --git a/altoslib/AltosDistance.java b/altoslib/AltosDistance.java index b0666f33..e00f9500 100644 --- a/altoslib/AltosDistance.java +++ b/altoslib/AltosDistance.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public class AltosDistance extends AltosUnits { diff --git a/altoslib/AltosEeprom.java b/altoslib/AltosEeprom.java index 777988e7..4aed6ba2 100644 --- a/altoslib/AltosEeprom.java +++ b/altoslib/AltosEeprom.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.util.*; diff --git a/altoslib/AltosEepromChunk.java b/altoslib/AltosEepromChunk.java index 19a8807d..75dd2998 100644 --- a/altoslib/AltosEepromChunk.java +++ b/altoslib/AltosEepromChunk.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.text.*; import java.util.concurrent.*; diff --git a/altoslib/AltosEepromDownload.java b/altoslib/AltosEepromDownload.java index 9598bd93..868571e4 100644 --- a/altoslib/AltosEepromDownload.java +++ b/altoslib/AltosEepromDownload.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.util.*; diff --git a/altoslib/AltosEepromFile.java b/altoslib/AltosEepromFile.java index c8443549..ac537856 100644 --- a/altoslib/AltosEepromFile.java +++ b/altoslib/AltosEepromFile.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.util.*; diff --git a/altoslib/AltosEepromGPS.java b/altoslib/AltosEepromGPS.java index 96cfc0e1..564cd70c 100644 --- a/altoslib/AltosEepromGPS.java +++ b/altoslib/AltosEepromGPS.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.util.*; diff --git a/altoslib/AltosEepromHeader.java b/altoslib/AltosEepromHeader.java index fc4e9caa..5483ebb7 100644 --- a/altoslib/AltosEepromHeader.java +++ b/altoslib/AltosEepromHeader.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.util.*; diff --git a/altoslib/AltosEepromIterable.java b/altoslib/AltosEepromIterable.java index 94487ab5..515efda7 100644 --- a/altoslib/AltosEepromIterable.java +++ b/altoslib/AltosEepromIterable.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.util.*; diff --git a/altoslib/AltosEepromList.java b/altoslib/AltosEepromList.java index 39768a21..086483e3 100644 --- a/altoslib/AltosEepromList.java +++ b/altoslib/AltosEepromList.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.util.*; diff --git a/altoslib/AltosEepromLog.java b/altoslib/AltosEepromLog.java index 0fc82ab4..fe1c25dc 100644 --- a/altoslib/AltosEepromLog.java +++ b/altoslib/AltosEepromLog.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.text.*; import java.util.concurrent.*; diff --git a/altoslib/AltosEepromMega.java b/altoslib/AltosEepromMega.java index c2edcf23..49ea3b5d 100644 --- a/altoslib/AltosEepromMega.java +++ b/altoslib/AltosEepromMega.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.util.*; diff --git a/altoslib/AltosEepromMetrum2.java b/altoslib/AltosEepromMetrum2.java index 39425e10..4dacb7cb 100644 --- a/altoslib/AltosEepromMetrum2.java +++ b/altoslib/AltosEepromMetrum2.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.util.*; diff --git a/altoslib/AltosEepromMini.java b/altoslib/AltosEepromMini.java index ef13d0a7..c9b41004 100644 --- a/altoslib/AltosEepromMini.java +++ b/altoslib/AltosEepromMini.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.util.*; diff --git a/altoslib/AltosEepromMonitor.java b/altoslib/AltosEepromMonitor.java index 35ed5a6e..c1a7fdf8 100644 --- a/altoslib/AltosEepromMonitor.java +++ b/altoslib/AltosEepromMonitor.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public interface AltosEepromMonitor { diff --git a/altoslib/AltosEepromTM.java b/altoslib/AltosEepromTM.java index 2bdd64f0..39bbb336 100644 --- a/altoslib/AltosEepromTM.java +++ b/altoslib/AltosEepromTM.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.util.*; diff --git a/altoslib/AltosEepromTm.java b/altoslib/AltosEepromTm.java index 36500393..2f857667 100644 --- a/altoslib/AltosEepromTm.java +++ b/altoslib/AltosEepromTm.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.util.*; diff --git a/altoslib/AltosFile.java b/altoslib/AltosFile.java index a79216a2..80468079 100644 --- a/altoslib/AltosFile.java +++ b/altoslib/AltosFile.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.File; import java.util.*; diff --git a/altoslib/AltosFlash.java b/altoslib/AltosFlash.java index e58b652e..95ea73b5 100644 --- a/altoslib/AltosFlash.java +++ b/altoslib/AltosFlash.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; diff --git a/altoslib/AltosFlashListener.java b/altoslib/AltosFlashListener.java index 1c7cd77d..03404a4e 100644 --- a/altoslib/AltosFlashListener.java +++ b/altoslib/AltosFlashListener.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public interface AltosFlashListener { public void position(String label, int percent); diff --git a/altoslib/AltosFlightDisplay.java b/altoslib/AltosFlightDisplay.java index 157a0710..e87865bd 100644 --- a/altoslib/AltosFlightDisplay.java +++ b/altoslib/AltosFlightDisplay.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public interface AltosFlightDisplay extends AltosUnitsListener, AltosFontListener { void reset(); diff --git a/altoslib/AltosFlightReader.java b/altoslib/AltosFlightReader.java index 03c53ff4..9c4b7351 100644 --- a/altoslib/AltosFlightReader.java +++ b/altoslib/AltosFlightReader.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.text.*; import java.io.*; diff --git a/altoslib/AltosFlightStats.java b/altoslib/AltosFlightStats.java index 82e477f8..8bdd43cf 100644 --- a/altoslib/AltosFlightStats.java +++ b/altoslib/AltosFlightStats.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; diff --git a/altoslib/AltosFontListener.java b/altoslib/AltosFontListener.java index 74988139..0d8effa3 100644 --- a/altoslib/AltosFontListener.java +++ b/altoslib/AltosFontListener.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public interface AltosFontListener { void font_size_changed(int font_size); diff --git a/altoslib/AltosFrequency.java b/altoslib/AltosFrequency.java index 1dd4819d..15ace0c2 100644 --- a/altoslib/AltosFrequency.java +++ b/altoslib/AltosFrequency.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public class AltosFrequency { public double frequency; diff --git a/altoslib/AltosGPS.java b/altoslib/AltosGPS.java index e3aee4ea..6793adf1 100644 --- a/altoslib/AltosGPS.java +++ b/altoslib/AltosGPS.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.text.*; import java.util.concurrent.*; diff --git a/altoslib/AltosGPSSat.java b/altoslib/AltosGPSSat.java index 57491f4d..3cbdcd9b 100644 --- a/altoslib/AltosGPSSat.java +++ b/altoslib/AltosGPSSat.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public class AltosGPSSat { public int svid; diff --git a/altoslib/AltosGreatCircle.java b/altoslib/AltosGreatCircle.java index c48755be..f64a3662 100644 --- a/altoslib/AltosGreatCircle.java +++ b/altoslib/AltosGreatCircle.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.lang.Math; import java.io.*; diff --git a/altoslib/AltosHeight.java b/altoslib/AltosHeight.java index c4419ae6..b7b3529b 100644 --- a/altoslib/AltosHeight.java +++ b/altoslib/AltosHeight.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public class AltosHeight extends AltosUnits { diff --git a/altoslib/AltosHexfile.java b/altoslib/AltosHexfile.java index 9f45d65a..6a66a869 100644 --- a/altoslib/AltosHexfile.java +++ b/altoslib/AltosHexfile.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.util.LinkedList; diff --git a/altoslib/AltosHexsym.java b/altoslib/AltosHexsym.java index 0c61fd02..fba50527 100644 --- a/altoslib/AltosHexsym.java +++ b/altoslib/AltosHexsym.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public class AltosHexsym { String name; diff --git a/altoslib/AltosIMU.java b/altoslib/AltosIMU.java index 8c219d9f..fe264d3c 100644 --- a/altoslib/AltosIMU.java +++ b/altoslib/AltosIMU.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.util.concurrent.*; import java.io.*; diff --git a/altoslib/AltosIdle.java b/altoslib/AltosIdle.java index 82b18ca2..89f8ed64 100644 --- a/altoslib/AltosIdle.java +++ b/altoslib/AltosIdle.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.util.*; diff --git a/altoslib/AltosIdleFetch.java b/altoslib/AltosIdleFetch.java index 4c5e8285..e1658683 100644 --- a/altoslib/AltosIdleFetch.java +++ b/altoslib/AltosIdleFetch.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.util.*; diff --git a/altoslib/AltosIdleMonitor.java b/altoslib/AltosIdleMonitor.java index 4d0968bf..74536204 100644 --- a/altoslib/AltosIdleMonitor.java +++ b/altoslib/AltosIdleMonitor.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.util.concurrent.*; diff --git a/altoslib/AltosIdleMonitorListener.java b/altoslib/AltosIdleMonitorListener.java index fdf4be9d..86135a2e 100644 --- a/altoslib/AltosIdleMonitorListener.java +++ b/altoslib/AltosIdleMonitorListener.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public interface AltosIdleMonitorListener { public void update(AltosState state, AltosListenerState listener_state); diff --git a/altoslib/AltosIgnite.java b/altoslib/AltosIgnite.java index ffb6ed15..8701aec9 100644 --- a/altoslib/AltosIgnite.java +++ b/altoslib/AltosIgnite.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.util.*; import java.io.*; diff --git a/altoslib/AltosImage.java b/altoslib/AltosImage.java index 9a9b5777..6360ecea 100644 --- a/altoslib/AltosImage.java +++ b/altoslib/AltosImage.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; diff --git a/altoslib/AltosKML.java b/altoslib/AltosKML.java index 1a0fcf3d..0c9f46c9 100644 --- a/altoslib/AltosKML.java +++ b/altoslib/AltosKML.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.util.*; diff --git a/altoslib/AltosLatLon.java b/altoslib/AltosLatLon.java index f1ecfc90..e0fd45e7 100644 --- a/altoslib/AltosLatLon.java +++ b/altoslib/AltosLatLon.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public class AltosLatLon { public double lat; diff --git a/altoslib/AltosLatitude.java b/altoslib/AltosLatitude.java index 191a46ee..f4580cde 100644 --- a/altoslib/AltosLatitude.java +++ b/altoslib/AltosLatitude.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public class AltosLatitude extends AltosLocation { public String pos() { return "N"; } diff --git a/altoslib/AltosLib.java b/altoslib/AltosLib.java index 405a3acc..a4afd269 100644 --- a/altoslib/AltosLib.java +++ b/altoslib/AltosLib.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.util.*; import java.io.*; diff --git a/altoslib/AltosLine.java b/altoslib/AltosLine.java index a65ba593..33737e95 100644 --- a/altoslib/AltosLine.java +++ b/altoslib/AltosLine.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public class AltosLine { public String line; diff --git a/altoslib/AltosLink.java b/altoslib/AltosLink.java index 0105398d..fca8beb8 100644 --- a/altoslib/AltosLink.java +++ b/altoslib/AltosLink.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.util.concurrent.*; diff --git a/altoslib/AltosListenerState.java b/altoslib/AltosListenerState.java index d7e18008..ac31e198 100644 --- a/altoslib/AltosListenerState.java +++ b/altoslib/AltosListenerState.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; diff --git a/altoslib/AltosLocation.java b/altoslib/AltosLocation.java index b21014db..5fc4a368 100644 --- a/altoslib/AltosLocation.java +++ b/altoslib/AltosLocation.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public abstract class AltosLocation extends AltosUnits { diff --git a/altoslib/AltosLog.java b/altoslib/AltosLog.java index 9241581a..704dfc68 100644 --- a/altoslib/AltosLog.java +++ b/altoslib/AltosLog.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.text.*; diff --git a/altoslib/AltosLongitude.java b/altoslib/AltosLongitude.java index ff4f0c2b..65e1402c 100644 --- a/altoslib/AltosLongitude.java +++ b/altoslib/AltosLongitude.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public class AltosLongitude extends AltosLocation { public String pos() { return "E"; } diff --git a/altoslib/AltosMag.java b/altoslib/AltosMag.java index f7595639..e03108d6 100644 --- a/altoslib/AltosMag.java +++ b/altoslib/AltosMag.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.util.concurrent.*; import java.io.*; diff --git a/altoslib/AltosMap.java b/altoslib/AltosMap.java index f8c3a36b..7c7c7305 100644 --- a/altoslib/AltosMap.java +++ b/altoslib/AltosMap.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.lang.*; diff --git a/altoslib/AltosMapCache.java b/altoslib/AltosMapCache.java index d94bae6c..929fbb01 100644 --- a/altoslib/AltosMapCache.java +++ b/altoslib/AltosMapCache.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.net.*; diff --git a/altoslib/AltosMapCacheListener.java b/altoslib/AltosMapCacheListener.java index 49b075dd..26618c0f 100644 --- a/altoslib/AltosMapCacheListener.java +++ b/altoslib/AltosMapCacheListener.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public interface AltosMapCacheListener { public void map_cache_changed(int map_cache); diff --git a/altoslib/AltosMapInterface.java b/altoslib/AltosMapInterface.java index c548744b..0dcd646e 100644 --- a/altoslib/AltosMapInterface.java +++ b/altoslib/AltosMapInterface.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.net.*; diff --git a/altoslib/AltosMapLine.java b/altoslib/AltosMapLine.java index 77807b94..e727e338 100644 --- a/altoslib/AltosMapLine.java +++ b/altoslib/AltosMapLine.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.lang.Math; diff --git a/altoslib/AltosMapMark.java b/altoslib/AltosMapMark.java index 9b77d539..5eb1907b 100644 --- a/altoslib/AltosMapMark.java +++ b/altoslib/AltosMapMark.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.lang.Math; diff --git a/altoslib/AltosMapPath.java b/altoslib/AltosMapPath.java index e7224b57..a238ba1a 100644 --- a/altoslib/AltosMapPath.java +++ b/altoslib/AltosMapPath.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.lang.Math; diff --git a/altoslib/AltosMapPathPoint.java b/altoslib/AltosMapPathPoint.java index 757211af..9f82f02a 100644 --- a/altoslib/AltosMapPathPoint.java +++ b/altoslib/AltosMapPathPoint.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.lang.Math; diff --git a/altoslib/AltosMapRectangle.java b/altoslib/AltosMapRectangle.java index f2f30103..941bad9e 100644 --- a/altoslib/AltosMapRectangle.java +++ b/altoslib/AltosMapRectangle.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public class AltosMapRectangle { AltosLatLon ul, lr; diff --git a/altoslib/AltosMapStore.java b/altoslib/AltosMapStore.java index 2f52edb6..1107bec2 100644 --- a/altoslib/AltosMapStore.java +++ b/altoslib/AltosMapStore.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.net.*; diff --git a/altoslib/AltosMapStoreListener.java b/altoslib/AltosMapStoreListener.java index a272e864..b744b88c 100644 --- a/altoslib/AltosMapStoreListener.java +++ b/altoslib/AltosMapStoreListener.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public interface AltosMapStoreListener { abstract void notify_store(AltosMapStore store, int status); diff --git a/altoslib/AltosMapTile.java b/altoslib/AltosMapTile.java index 92b7a985..e61746f8 100644 --- a/altoslib/AltosMapTile.java +++ b/altoslib/AltosMapTile.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.util.*; diff --git a/altoslib/AltosMapTileListener.java b/altoslib/AltosMapTileListener.java index 8abc8b5a..60d92c75 100644 --- a/altoslib/AltosMapTileListener.java +++ b/altoslib/AltosMapTileListener.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public interface AltosMapTileListener { abstract public void notify_tile(AltosMapTile tile, int status); diff --git a/altoslib/AltosMapTransform.java b/altoslib/AltosMapTransform.java index 384c1744..e0e8afb0 100644 --- a/altoslib/AltosMapTransform.java +++ b/altoslib/AltosMapTransform.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.lang.Math; diff --git a/altoslib/AltosMapZoomListener.java b/altoslib/AltosMapZoomListener.java index 34edb19b..d50774b4 100644 --- a/altoslib/AltosMapZoomListener.java +++ b/altoslib/AltosMapZoomListener.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public interface AltosMapZoomListener { abstract public void zoom_changed(int zoom); diff --git a/altoslib/AltosMma655x.java b/altoslib/AltosMma655x.java index c0b94b8c..a24e76bd 100644 --- a/altoslib/AltosMma655x.java +++ b/altoslib/AltosMma655x.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.util.concurrent.*; diff --git a/altoslib/AltosMs5607.java b/altoslib/AltosMs5607.java index 2bd4ba8f..8e6f2658 100644 --- a/altoslib/AltosMs5607.java +++ b/altoslib/AltosMs5607.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.util.concurrent.*; import java.io.*; diff --git a/altoslib/AltosNoSymbol.java b/altoslib/AltosNoSymbol.java index 77410a25..2e1da598 100644 --- a/altoslib/AltosNoSymbol.java +++ b/altoslib/AltosNoSymbol.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public class AltosNoSymbol extends Exception { public AltosNoSymbol(String name) { diff --git a/altoslib/AltosOrient.java b/altoslib/AltosOrient.java index 8cdde750..d9350554 100644 --- a/altoslib/AltosOrient.java +++ b/altoslib/AltosOrient.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public class AltosOrient extends AltosUnits { diff --git a/altoslib/AltosParse.java b/altoslib/AltosParse.java index a8b02b56..de79c2fb 100644 --- a/altoslib/AltosParse.java +++ b/altoslib/AltosParse.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.util.*; import java.text.*; diff --git a/altoslib/AltosPointDouble.java b/altoslib/AltosPointDouble.java index 96fb9161..4a940676 100644 --- a/altoslib/AltosPointDouble.java +++ b/altoslib/AltosPointDouble.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public class AltosPointDouble { public double x, y; diff --git a/altoslib/AltosPointInt.java b/altoslib/AltosPointInt.java index 6ee077ab..e133ae9c 100644 --- a/altoslib/AltosPointInt.java +++ b/altoslib/AltosPointInt.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public class AltosPointInt { public int x, y; diff --git a/altoslib/AltosPreferences.java b/altoslib/AltosPreferences.java index 9c4cadff..2fad96fd 100644 --- a/altoslib/AltosPreferences.java +++ b/altoslib/AltosPreferences.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.util.*; diff --git a/altoslib/AltosPreferencesBackend.java b/altoslib/AltosPreferencesBackend.java index c83eaa47..b68eea19 100644 --- a/altoslib/AltosPreferencesBackend.java +++ b/altoslib/AltosPreferencesBackend.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.File; diff --git a/altoslib/AltosProgrammer.java b/altoslib/AltosProgrammer.java index 7a92c2d0..6c53e1db 100644 --- a/altoslib/AltosProgrammer.java +++ b/altoslib/AltosProgrammer.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; diff --git a/altoslib/AltosPyro.java b/altoslib/AltosPyro.java index 502e34de..c5b3e0eb 100644 --- a/altoslib/AltosPyro.java +++ b/altoslib/AltosPyro.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.util.*; import java.text.*; diff --git a/altoslib/AltosQuaternion.java b/altoslib/AltosQuaternion.java index 4ad1f3d6..af7667d0 100644 --- a/altoslib/AltosQuaternion.java +++ b/altoslib/AltosQuaternion.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public class AltosQuaternion { double r; /* real bit */ diff --git a/altoslib/AltosRectangle.java b/altoslib/AltosRectangle.java index c55fd613..cfa2ea60 100644 --- a/altoslib/AltosRectangle.java +++ b/altoslib/AltosRectangle.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public class AltosRectangle { public int x, y, width, height; diff --git a/altoslib/AltosReplayReader.java b/altoslib/AltosReplayReader.java index 98f0e7d5..bcc07587 100644 --- a/altoslib/AltosReplayReader.java +++ b/altoslib/AltosReplayReader.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.util.*; diff --git a/altoslib/AltosRomconfig.java b/altoslib/AltosRomconfig.java index c93a01c3..d0912f4b 100644 --- a/altoslib/AltosRomconfig.java +++ b/altoslib/AltosRomconfig.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; diff --git a/altoslib/AltosRotation.java b/altoslib/AltosRotation.java index 49225f77..4e4127cf 100644 --- a/altoslib/AltosRotation.java +++ b/altoslib/AltosRotation.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public class AltosRotation { private AltosQuaternion rotation; diff --git a/altoslib/AltosSavedState.java b/altoslib/AltosSavedState.java index 552e4533..f557801a 100644 --- a/altoslib/AltosSavedState.java +++ b/altoslib/AltosSavedState.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; diff --git a/altoslib/AltosSelfFlash.java b/altoslib/AltosSelfFlash.java index 83be4be1..1be45998 100644 --- a/altoslib/AltosSelfFlash.java +++ b/altoslib/AltosSelfFlash.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; diff --git a/altoslib/AltosSensorEMini.java b/altoslib/AltosSensorEMini.java index cb8356a1..cdcd9f20 100644 --- a/altoslib/AltosSensorEMini.java +++ b/altoslib/AltosSensorEMini.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.util.concurrent.TimeoutException; diff --git a/altoslib/AltosSensorMM.java b/altoslib/AltosSensorMM.java index 9d5649aa..95edea22 100644 --- a/altoslib/AltosSensorMM.java +++ b/altoslib/AltosSensorMM.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.util.concurrent.TimeoutException; diff --git a/altoslib/AltosSensorMega.java b/altoslib/AltosSensorMega.java index a3c2a033..939bae16 100644 --- a/altoslib/AltosSensorMega.java +++ b/altoslib/AltosSensorMega.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.util.concurrent.TimeoutException; diff --git a/altoslib/AltosSensorMetrum.java b/altoslib/AltosSensorMetrum.java index 39592b50..6feb26c0 100644 --- a/altoslib/AltosSensorMetrum.java +++ b/altoslib/AltosSensorMetrum.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.util.concurrent.TimeoutException; diff --git a/altoslib/AltosSensorTGPS.java b/altoslib/AltosSensorTGPS.java index 32607fba..e9265bce 100644 --- a/altoslib/AltosSensorTGPS.java +++ b/altoslib/AltosSensorTGPS.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.util.concurrent.TimeoutException; diff --git a/altoslib/AltosSensorTM.java b/altoslib/AltosSensorTM.java index c82ba93c..1c439817 100644 --- a/altoslib/AltosSensorTM.java +++ b/altoslib/AltosSensorTM.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.util.concurrent.TimeoutException; diff --git a/altoslib/AltosSensorTMini.java b/altoslib/AltosSensorTMini.java index 0fc70e71..ee51a8f6 100644 --- a/altoslib/AltosSensorTMini.java +++ b/altoslib/AltosSensorTMini.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.util.concurrent.TimeoutException; diff --git a/altoslib/AltosSpeed.java b/altoslib/AltosSpeed.java index b714412f..093d196d 100644 --- a/altoslib/AltosSpeed.java +++ b/altoslib/AltosSpeed.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public class AltosSpeed extends AltosUnits { diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java index d363027c..ad032a16 100644 --- a/altoslib/AltosState.java +++ b/altoslib/AltosState.java @@ -19,7 +19,7 @@ * Track flight state from telemetry or eeprom data stream */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; diff --git a/altoslib/AltosStateIterable.java b/altoslib/AltosStateIterable.java index 3b58fc32..6202f970 100644 --- a/altoslib/AltosStateIterable.java +++ b/altoslib/AltosStateIterable.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.util.*; diff --git a/altoslib/AltosStateUpdate.java b/altoslib/AltosStateUpdate.java index 93b9f1c0..55007eb1 100644 --- a/altoslib/AltosStateUpdate.java +++ b/altoslib/AltosStateUpdate.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public interface AltosStateUpdate { public void update_state(AltosState state) throws InterruptedException; diff --git a/altoslib/AltosTelemetry.java b/altoslib/AltosTelemetry.java index 449384d5..3825ab8f 100644 --- a/altoslib/AltosTelemetry.java +++ b/altoslib/AltosTelemetry.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.text.*; diff --git a/altoslib/AltosTelemetryConfiguration.java b/altoslib/AltosTelemetryConfiguration.java index 8c922b03..1cce0f24 100644 --- a/altoslib/AltosTelemetryConfiguration.java +++ b/altoslib/AltosTelemetryConfiguration.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public class AltosTelemetryConfiguration extends AltosTelemetryStandard { diff --git a/altoslib/AltosTelemetryFile.java b/altoslib/AltosTelemetryFile.java index 738e4dd7..d28795c4 100644 --- a/altoslib/AltosTelemetryFile.java +++ b/altoslib/AltosTelemetryFile.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.util.*; diff --git a/altoslib/AltosTelemetryIterable.java b/altoslib/AltosTelemetryIterable.java index 131389d5..ced29121 100644 --- a/altoslib/AltosTelemetryIterable.java +++ b/altoslib/AltosTelemetryIterable.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.io.*; import java.util.*; diff --git a/altoslib/AltosTelemetryLegacy.java b/altoslib/AltosTelemetryLegacy.java index 923d139e..5aad8e62 100644 --- a/altoslib/AltosTelemetryLegacy.java +++ b/altoslib/AltosTelemetryLegacy.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.text.*; diff --git a/altoslib/AltosTelemetryLocation.java b/altoslib/AltosTelemetryLocation.java index 85da27d5..2cd75621 100644 --- a/altoslib/AltosTelemetryLocation.java +++ b/altoslib/AltosTelemetryLocation.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public class AltosTelemetryLocation extends AltosTelemetryStandard { diff --git a/altoslib/AltosTelemetryMap.java b/altoslib/AltosTelemetryMap.java index e8c02e9b..36b5b1c8 100644 --- a/altoslib/AltosTelemetryMap.java +++ b/altoslib/AltosTelemetryMap.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.text.*; import java.util.HashMap; diff --git a/altoslib/AltosTelemetryMegaData.java b/altoslib/AltosTelemetryMegaData.java index 2b80df4a..30752365 100644 --- a/altoslib/AltosTelemetryMegaData.java +++ b/altoslib/AltosTelemetryMegaData.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public class AltosTelemetryMegaData extends AltosTelemetryStandard { int state; diff --git a/altoslib/AltosTelemetryMegaSensor.java b/altoslib/AltosTelemetryMegaSensor.java index a01c0826..bb3fdb37 100644 --- a/altoslib/AltosTelemetryMegaSensor.java +++ b/altoslib/AltosTelemetryMegaSensor.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public class AltosTelemetryMegaSensor extends AltosTelemetryStandard { int accel; diff --git a/altoslib/AltosTelemetryMetrumData.java b/altoslib/AltosTelemetryMetrumData.java index e53f1283..6d593467 100644 --- a/altoslib/AltosTelemetryMetrumData.java +++ b/altoslib/AltosTelemetryMetrumData.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public class AltosTelemetryMetrumData extends AltosTelemetryStandard { diff --git a/altoslib/AltosTelemetryMetrumSensor.java b/altoslib/AltosTelemetryMetrumSensor.java index 415b00a6..6d4cbea0 100644 --- a/altoslib/AltosTelemetryMetrumSensor.java +++ b/altoslib/AltosTelemetryMetrumSensor.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public class AltosTelemetryMetrumSensor extends AltosTelemetryStandard { diff --git a/altoslib/AltosTelemetryMini.java b/altoslib/AltosTelemetryMini.java index 02537c9c..fa722fa5 100644 --- a/altoslib/AltosTelemetryMini.java +++ b/altoslib/AltosTelemetryMini.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public class AltosTelemetryMini extends AltosTelemetryStandard { diff --git a/altoslib/AltosTelemetryRaw.java b/altoslib/AltosTelemetryRaw.java index 4254fc83..a6e5ca49 100644 --- a/altoslib/AltosTelemetryRaw.java +++ b/altoslib/AltosTelemetryRaw.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public class AltosTelemetryRaw extends AltosTelemetryStandard { public AltosTelemetryRaw(int[] bytes) { diff --git a/altoslib/AltosTelemetryReader.java b/altoslib/AltosTelemetryReader.java index 908fb5c7..cd5a08c4 100644 --- a/altoslib/AltosTelemetryReader.java +++ b/altoslib/AltosTelemetryReader.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.text.*; import java.io.*; diff --git a/altoslib/AltosTelemetrySatellite.java b/altoslib/AltosTelemetrySatellite.java index 474789ba..e3d52b46 100644 --- a/altoslib/AltosTelemetrySatellite.java +++ b/altoslib/AltosTelemetrySatellite.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public class AltosTelemetrySatellite extends AltosTelemetryStandard { int channels; diff --git a/altoslib/AltosTelemetrySensor.java b/altoslib/AltosTelemetrySensor.java index b0c84fd3..8dd2c225 100644 --- a/altoslib/AltosTelemetrySensor.java +++ b/altoslib/AltosTelemetrySensor.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public class AltosTelemetrySensor extends AltosTelemetryStandard { diff --git a/altoslib/AltosTelemetryStandard.java b/altoslib/AltosTelemetryStandard.java index fb8a162e..d4aaff5b 100644 --- a/altoslib/AltosTelemetryStandard.java +++ b/altoslib/AltosTelemetryStandard.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public abstract class AltosTelemetryStandard extends AltosTelemetry { int[] bytes; diff --git a/altoslib/AltosTemperature.java b/altoslib/AltosTemperature.java index 494f4e3e..d729b576 100644 --- a/altoslib/AltosTemperature.java +++ b/altoslib/AltosTemperature.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public class AltosTemperature extends AltosUnits { diff --git a/altoslib/AltosUnits.java b/altoslib/AltosUnits.java index e266b243..7ca2f03c 100644 --- a/altoslib/AltosUnits.java +++ b/altoslib/AltosUnits.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; import java.text.*; diff --git a/altoslib/AltosUnitsListener.java b/altoslib/AltosUnitsListener.java index 1b66eb45..c5539fc9 100644 --- a/altoslib/AltosUnitsListener.java +++ b/altoslib/AltosUnitsListener.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public interface AltosUnitsListener { public void units_changed(boolean imperial_units); diff --git a/altoslib/AltosVersion.java.in b/altoslib/AltosVersion.java.in index 6bfef181..546d4353 100644 --- a/altoslib/AltosVersion.java.in +++ b/altoslib/AltosVersion.java.in @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public class AltosVersion { public final static String version = "@VERSION@"; diff --git a/altoslib/AltosVoltage.java b/altoslib/AltosVoltage.java index 986d74b4..0469fb14 100644 --- a/altoslib/AltosVoltage.java +++ b/altoslib/AltosVoltage.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public class AltosVoltage extends AltosUnits { diff --git a/altoslib/AltosWriter.java b/altoslib/AltosWriter.java index b125bd87..70fadd2e 100644 --- a/altoslib/AltosWriter.java +++ b/altoslib/AltosWriter.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_6; +package org.altusmetrum.altoslib_7; public interface AltosWriter { diff --git a/altosui/Altos.java b/altosui/Altos.java index e82931b2..a4077a38 100644 --- a/altosui/Altos.java +++ b/altosui/Altos.java @@ -20,8 +20,8 @@ package altosui; import java.awt.*; import libaltosJNI.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; public class Altos extends AltosUILib { diff --git a/altosui/AltosAscent.java b/altosui/AltosAscent.java index 10080efd..ef7c1cdb 100644 --- a/altosui/AltosAscent.java +++ b/altosui/AltosAscent.java @@ -21,8 +21,8 @@ import java.util.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; public class AltosAscent extends AltosUIFlightTab { JLabel cur, max; diff --git a/altosui/AltosCompanionInfo.java b/altosui/AltosCompanionInfo.java index 68dab227..20004ad4 100644 --- a/altosui/AltosCompanionInfo.java +++ b/altosui/AltosCompanionInfo.java @@ -19,8 +19,8 @@ package altosui; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; public class AltosCompanionInfo extends JTable implements AltosFlightDisplay { private AltosFlightInfoTableModel model; diff --git a/altosui/AltosConfig.java b/altosui/AltosConfig.java index 3c5415d2..570354a3 100644 --- a/altosui/AltosConfig.java +++ b/altosui/AltosConfig.java @@ -22,8 +22,8 @@ import javax.swing.*; import java.io.*; import java.util.concurrent.*; import java.text.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; public class AltosConfig implements ActionListener { diff --git a/altosui/AltosConfigPyroUI.java b/altosui/AltosConfigPyroUI.java index 69b31ff5..694226be 100644 --- a/altosui/AltosConfigPyroUI.java +++ b/altosui/AltosConfigPyroUI.java @@ -22,8 +22,8 @@ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; public class AltosConfigPyroUI extends AltosUIDialog diff --git a/altosui/AltosConfigTD.java b/altosui/AltosConfigTD.java index cd20a174..9b9cdcaa 100644 --- a/altosui/AltosConfigTD.java +++ b/altosui/AltosConfigTD.java @@ -21,8 +21,8 @@ import java.awt.event.*; import javax.swing.*; import java.io.*; import java.util.concurrent.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; public class AltosConfigTD implements ActionListener { diff --git a/altosui/AltosConfigTDUI.java b/altosui/AltosConfigTDUI.java index 52225108..e17af47d 100644 --- a/altosui/AltosConfigTDUI.java +++ b/altosui/AltosConfigTDUI.java @@ -21,8 +21,8 @@ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; public class AltosConfigTDUI extends AltosUIDialog diff --git a/altosui/AltosConfigUI.java b/altosui/AltosConfigUI.java index ef477ca9..3872ff83 100644 --- a/altosui/AltosConfigUI.java +++ b/altosui/AltosConfigUI.java @@ -22,8 +22,8 @@ import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import java.text.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; public class AltosConfigUI extends AltosUIDialog diff --git a/altosui/AltosConfigureUI.java b/altosui/AltosConfigureUI.java index 7bc50570..543711b2 100644 --- a/altosui/AltosConfigureUI.java +++ b/altosui/AltosConfigureUI.java @@ -22,7 +22,7 @@ import java.awt.event.*; import java.beans.*; import javax.swing.*; import javax.swing.event.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altosuilib_7.*; public class AltosConfigureUI extends AltosUIConfigure diff --git a/altosui/AltosDescent.java b/altosui/AltosDescent.java index 0db1a4c2..d37f6f66 100644 --- a/altosui/AltosDescent.java +++ b/altosui/AltosDescent.java @@ -21,8 +21,8 @@ import java.util.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; public class AltosDescent extends AltosUIFlightTab { diff --git a/altosui/AltosFlightStatus.java b/altosui/AltosFlightStatus.java index c0d3312b..42127b1c 100644 --- a/altosui/AltosFlightStatus.java +++ b/altosui/AltosFlightStatus.java @@ -19,8 +19,8 @@ package altosui; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; public class AltosFlightStatus extends JComponent implements AltosFlightDisplay { GridBagLayout layout; diff --git a/altosui/AltosFlightStatusTableModel.java b/altosui/AltosFlightStatusTableModel.java index f2031698..5238e14b 100644 --- a/altosui/AltosFlightStatusTableModel.java +++ b/altosui/AltosFlightStatusTableModel.java @@ -27,7 +27,7 @@ import java.util.*; import java.text.*; import java.util.prefs.*; import java.util.concurrent.LinkedBlockingQueue; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosFlightStatusTableModel extends AbstractTableModel { private String[] columnNames = { diff --git a/altosui/AltosFlightStatusUpdate.java b/altosui/AltosFlightStatusUpdate.java index 3f6494b8..44c3261a 100644 --- a/altosui/AltosFlightStatusUpdate.java +++ b/altosui/AltosFlightStatusUpdate.java @@ -18,7 +18,7 @@ package altosui; import java.awt.event.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosFlightStatusUpdate implements ActionListener { diff --git a/altosui/AltosFlightUI.java b/altosui/AltosFlightUI.java index 6ef85a96..3160fd95 100644 --- a/altosui/AltosFlightUI.java +++ b/altosui/AltosFlightUI.java @@ -22,8 +22,8 @@ import java.awt.event.*; import javax.swing.*; import java.util.*; import java.util.concurrent.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; public class AltosFlightUI extends AltosUIFrame implements AltosFlightDisplay { AltosVoice voice; diff --git a/altosui/AltosGraphUI.java b/altosui/AltosGraphUI.java index f5e339a5..42a17658 100644 --- a/altosui/AltosGraphUI.java +++ b/altosui/AltosGraphUI.java @@ -23,8 +23,8 @@ import java.util.ArrayList; import java.awt.*; import java.awt.event.*; import javax.swing.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; diff --git a/altosui/AltosIdleMonitorUI.java b/altosui/AltosIdleMonitorUI.java index 88243c5d..2c7ff5fc 100644 --- a/altosui/AltosIdleMonitorUI.java +++ b/altosui/AltosIdleMonitorUI.java @@ -24,8 +24,8 @@ import javax.swing.event.*; import java.io.*; import java.util.concurrent.*; import java.util.Arrays; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; public class AltosIdleMonitorUI extends AltosUIFrame implements AltosFlightDisplay, AltosIdleMonitorListener, DocumentListener { AltosDevice device; diff --git a/altosui/AltosIgniteUI.java b/altosui/AltosIgniteUI.java index 1a2dc4f1..4fff5d72 100644 --- a/altosui/AltosIgniteUI.java +++ b/altosui/AltosIgniteUI.java @@ -24,8 +24,8 @@ import java.io.*; import java.text.*; import java.util.*; import java.util.concurrent.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; public class AltosIgniteUI extends AltosUIDialog diff --git a/altosui/AltosIgnitor.java b/altosui/AltosIgnitor.java index 82582a28..deb96a5e 100644 --- a/altosui/AltosIgnitor.java +++ b/altosui/AltosIgnitor.java @@ -20,8 +20,8 @@ package altosui; import java.awt.*; import java.awt.event.*; import javax.swing.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; public class AltosIgnitor extends AltosUIFlightTab { diff --git a/altosui/AltosLanded.java b/altosui/AltosLanded.java index 2237df0c..6a4bdbd7 100644 --- a/altosui/AltosLanded.java +++ b/altosui/AltosLanded.java @@ -21,8 +21,8 @@ import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; public class AltosLanded extends AltosUIFlightTab implements ActionListener { diff --git a/altosui/AltosLaunch.java b/altosui/AltosLaunch.java index 37077c42..67bbddc2 100644 --- a/altosui/AltosLaunch.java +++ b/altosui/AltosLaunch.java @@ -20,7 +20,7 @@ package altosui; import java.io.*; import java.util.concurrent.*; import java.awt.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altosuilib_7.*; public class AltosLaunch { AltosDevice device; diff --git a/altosui/AltosLaunchUI.java b/altosui/AltosLaunchUI.java index 4c205d44..52587e58 100644 --- a/altosui/AltosLaunchUI.java +++ b/altosui/AltosLaunchUI.java @@ -23,7 +23,7 @@ import javax.swing.*; import java.io.*; import java.text.*; import java.util.concurrent.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altosuilib_7.*; class FireButton extends JButton { protected void processMouseEvent(MouseEvent e) { diff --git a/altosui/AltosPad.java b/altosui/AltosPad.java index 6214fa5a..687fe6f7 100644 --- a/altosui/AltosPad.java +++ b/altosui/AltosPad.java @@ -18,8 +18,8 @@ package altosui; import java.util.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; public class AltosPad extends AltosUIFlightTab { diff --git a/altosui/AltosUI.java b/altosui/AltosUI.java index 5dd532bd..9061a8ad 100644 --- a/altosui/AltosUI.java +++ b/altosui/AltosUI.java @@ -22,8 +22,8 @@ import java.awt.event.*; import javax.swing.*; import java.io.*; import java.util.concurrent.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; public class AltosUI extends AltosUIFrame { public AltosVoice voice = new AltosVoice(); diff --git a/altosuilib/AltosBTDevice.java b/altosuilib/AltosBTDevice.java index 0dd1cab2..76221df2 100644 --- a/altosuilib/AltosBTDevice.java +++ b/altosuilib/AltosBTDevice.java @@ -15,10 +15,10 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import libaltosJNI.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosBTDevice extends altos_bt_device implements AltosDevice { diff --git a/altosuilib/AltosBTDeviceIterator.java b/altosuilib/AltosBTDeviceIterator.java index eebad36b..1e46899a 100644 --- a/altosuilib/AltosBTDeviceIterator.java +++ b/altosuilib/AltosBTDeviceIterator.java @@ -15,11 +15,11 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.util.*; import libaltosJNI.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosBTDeviceIterator implements Iterator { AltosBTDevice current; diff --git a/altosuilib/AltosBTKnown.java b/altosuilib/AltosBTKnown.java index 73ee473f..27897836 100644 --- a/altosuilib/AltosBTKnown.java +++ b/altosuilib/AltosBTKnown.java @@ -15,10 +15,10 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.util.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosBTKnown implements Iterable { LinkedList devices = new LinkedList(); diff --git a/altosuilib/AltosBTManage.java b/altosuilib/AltosBTManage.java index c4ac363f..94468a03 100644 --- a/altosuilib/AltosBTManage.java +++ b/altosuilib/AltosBTManage.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.awt.*; import java.awt.event.*; @@ -23,7 +23,7 @@ import javax.swing.*; import javax.swing.plaf.basic.*; import java.util.*; import java.util.concurrent.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosBTManage extends AltosUIDialog implements ActionListener, Iterable { LinkedBlockingQueue found_devices; diff --git a/altosuilib/AltosCSVUI.java b/altosuilib/AltosCSVUI.java index 94d523fe..353b5127 100644 --- a/altosuilib/AltosCSVUI.java +++ b/altosuilib/AltosCSVUI.java @@ -15,13 +15,13 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosCSVUI extends AltosUIDialog diff --git a/altosuilib/AltosConfigFreqUI.java b/altosuilib/AltosConfigFreqUI.java index 21514a81..de7b4bed 100644 --- a/altosuilib/AltosConfigFreqUI.java +++ b/altosuilib/AltosConfigFreqUI.java @@ -15,14 +15,14 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.awt.*; import java.text.*; import java.awt.event.*; import javax.swing.*; import java.util.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; class AltosEditFreqUI extends AltosUIDialog implements ActionListener { Frame frame; diff --git a/altosuilib/AltosDataChooser.java b/altosuilib/AltosDataChooser.java index 3fe76687..ea8a5648 100644 --- a/altosuilib/AltosDataChooser.java +++ b/altosuilib/AltosDataChooser.java @@ -15,12 +15,12 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; import java.io.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosDataChooser extends JFileChooser { JFrame frame; diff --git a/altosuilib/AltosDevice.java b/altosuilib/AltosDevice.java index 401387a4..b7cfe97e 100644 --- a/altosuilib/AltosDevice.java +++ b/altosuilib/AltosDevice.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import libaltosJNI.*; diff --git a/altosuilib/AltosDeviceDialog.java b/altosuilib/AltosDeviceDialog.java index 5fb1331e..53e3ed84 100644 --- a/altosuilib/AltosDeviceDialog.java +++ b/altosuilib/AltosDeviceDialog.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import javax.swing.*; import java.awt.*; diff --git a/altosuilib/AltosDeviceUIDialog.java b/altosuilib/AltosDeviceUIDialog.java index 9618895e..d82892a5 100644 --- a/altosuilib/AltosDeviceUIDialog.java +++ b/altosuilib/AltosDeviceUIDialog.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import javax.swing.*; import java.awt.*; diff --git a/altosuilib/AltosDisplayThread.java b/altosuilib/AltosDisplayThread.java index ccf8b3ef..d3783860 100644 --- a/altosuilib/AltosDisplayThread.java +++ b/altosuilib/AltosDisplayThread.java @@ -15,13 +15,13 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.awt.*; import javax.swing.*; import java.io.*; import java.text.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosDisplayThread extends Thread { diff --git a/altosuilib/AltosEepromDelete.java b/altosuilib/AltosEepromDelete.java index 9fb21cf4..57ebb4c1 100644 --- a/altosuilib/AltosEepromDelete.java +++ b/altosuilib/AltosEepromDelete.java @@ -15,13 +15,13 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.awt.event.*; import javax.swing.*; import java.io.*; import java.util.concurrent.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosEepromDelete implements Runnable { AltosEepromList flights; diff --git a/altosuilib/AltosEepromManage.java b/altosuilib/AltosEepromManage.java index 47a62ef7..522fac45 100644 --- a/altosuilib/AltosEepromManage.java +++ b/altosuilib/AltosEepromManage.java @@ -15,13 +15,13 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.awt.event.*; import javax.swing.*; import java.io.*; import java.util.concurrent.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosEepromManage implements ActionListener { diff --git a/altosuilib/AltosEepromMonitor.java b/altosuilib/AltosEepromMonitor.java index 83c5c1d0..52a4b640 100644 --- a/altosuilib/AltosEepromMonitor.java +++ b/altosuilib/AltosEepromMonitor.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.awt.*; import java.awt.event.*; diff --git a/altosuilib/AltosEepromMonitorUI.java b/altosuilib/AltosEepromMonitorUI.java index ac39fb1d..dd01ce25 100644 --- a/altosuilib/AltosEepromMonitorUI.java +++ b/altosuilib/AltosEepromMonitorUI.java @@ -15,12 +15,12 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.awt.*; import java.awt.event.*; import javax.swing.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosEepromMonitorUI extends AltosUIDialog implements AltosEepromMonitor { JFrame owner; diff --git a/altosuilib/AltosEepromSelect.java b/altosuilib/AltosEepromSelect.java index b291c35a..2c9d10cf 100644 --- a/altosuilib/AltosEepromSelect.java +++ b/altosuilib/AltosEepromSelect.java @@ -15,13 +15,13 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import javax.swing.*; import javax.swing.border.*; import java.awt.*; import java.awt.event.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; class AltosEepromItem implements ActionListener { AltosEepromLog log; diff --git a/altosuilib/AltosFlashUI.java b/altosuilib/AltosFlashUI.java index ace8fbe5..6b4a5238 100644 --- a/altosuilib/AltosFlashUI.java +++ b/altosuilib/AltosFlashUI.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.awt.*; import java.awt.event.*; @@ -23,7 +23,7 @@ import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; import java.io.*; import java.util.concurrent.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosFlashUI extends AltosUIDialog diff --git a/altosuilib/AltosFlightInfoTableModel.java b/altosuilib/AltosFlightInfoTableModel.java index f9d7d180..76fe682a 100644 --- a/altosuilib/AltosFlightInfoTableModel.java +++ b/altosuilib/AltosFlightInfoTableModel.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import javax.swing.table.*; diff --git a/altosuilib/AltosFlightStatsTable.java b/altosuilib/AltosFlightStatsTable.java index 8a686646..4240bf9f 100644 --- a/altosuilib/AltosFlightStatsTable.java +++ b/altosuilib/AltosFlightStatsTable.java @@ -15,12 +15,12 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.awt.*; import javax.swing.*; import java.util.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosFlightStatsTable extends JComponent implements AltosFontListener { GridBagLayout layout; diff --git a/altosuilib/AltosGraph.java b/altosuilib/AltosGraph.java index d7739228..34a5e1b3 100644 --- a/altosuilib/AltosGraph.java +++ b/altosuilib/AltosGraph.java @@ -15,14 +15,14 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.io.*; import java.util.ArrayList; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; import org.jfree.ui.*; import org.jfree.chart.*; diff --git a/altosuilib/AltosGraphDataPoint.java b/altosuilib/AltosGraphDataPoint.java index 47989d0e..b849dd7c 100644 --- a/altosuilib/AltosGraphDataPoint.java +++ b/altosuilib/AltosGraphDataPoint.java @@ -15,9 +15,9 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosGraphDataPoint implements AltosUIDataPoint { diff --git a/altosuilib/AltosGraphDataSet.java b/altosuilib/AltosGraphDataSet.java index b9c9d2a8..f0cda986 100644 --- a/altosuilib/AltosGraphDataSet.java +++ b/altosuilib/AltosGraphDataSet.java @@ -15,12 +15,12 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.lang.*; import java.io.*; import java.util.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; class AltosGraphIterator implements Iterator { AltosGraphDataSet dataSet; diff --git a/altosuilib/AltosInfoTable.java b/altosuilib/AltosInfoTable.java index 89a656c9..99f17617 100644 --- a/altosuilib/AltosInfoTable.java +++ b/altosuilib/AltosInfoTable.java @@ -15,13 +15,13 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosInfoTable extends JTable implements AltosFlightDisplay, HierarchyListener { private AltosFlightInfoTableModel model; diff --git a/altosuilib/AltosLed.java b/altosuilib/AltosLed.java index fa33c4b6..e328b717 100644 --- a/altosuilib/AltosLed.java +++ b/altosuilib/AltosLed.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import javax.swing.*; diff --git a/altosuilib/AltosLights.java b/altosuilib/AltosLights.java index 05d06ac4..b2c1cbcc 100644 --- a/altosuilib/AltosLights.java +++ b/altosuilib/AltosLights.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.awt.*; import javax.swing.*; diff --git a/altosuilib/AltosPositionListener.java b/altosuilib/AltosPositionListener.java index 1274a64a..81e2cbaf 100644 --- a/altosuilib/AltosPositionListener.java +++ b/altosuilib/AltosPositionListener.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; public interface AltosPositionListener { public void position_changed(int position); diff --git a/altosuilib/AltosRomconfigUI.java b/altosuilib/AltosRomconfigUI.java index 99e4d004..e7977cf4 100644 --- a/altosuilib/AltosRomconfigUI.java +++ b/altosuilib/AltosRomconfigUI.java @@ -15,12 +15,12 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.awt.*; import java.awt.event.*; import javax.swing.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosRomconfigUI extends AltosUIDialog diff --git a/altosuilib/AltosScanUI.java b/altosuilib/AltosScanUI.java index 5a7e21b1..03115824 100644 --- a/altosuilib/AltosScanUI.java +++ b/altosuilib/AltosScanUI.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.awt.*; import java.awt.event.*; @@ -25,7 +25,7 @@ import java.io.*; import java.util.*; import java.text.*; import java.util.concurrent.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; class AltosScanResult { String callsign; diff --git a/altosuilib/AltosSerial.java b/altosuilib/AltosSerial.java index 95815a7b..280887a6 100644 --- a/altosuilib/AltosSerial.java +++ b/altosuilib/AltosSerial.java @@ -19,13 +19,13 @@ * Deal with TeleDongle on a serial port */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.io.*; import java.util.*; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; import libaltosJNI.*; /* diff --git a/altosuilib/AltosSerialInUseException.java b/altosuilib/AltosSerialInUseException.java index 0487e146..1ca8e792 100644 --- a/altosuilib/AltosSerialInUseException.java +++ b/altosuilib/AltosSerialInUseException.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; public class AltosSerialInUseException extends Exception { public AltosDevice device; diff --git a/altosuilib/AltosUIAxis.java b/altosuilib/AltosUIAxis.java index 89f5493b..4173232f 100644 --- a/altosuilib/AltosUIAxis.java +++ b/altosuilib/AltosUIAxis.java @@ -15,14 +15,14 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.io.*; import java.util.ArrayList; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; import org.jfree.ui.*; import org.jfree.chart.*; diff --git a/altosuilib/AltosUIConfigure.java b/altosuilib/AltosUIConfigure.java index b022aeec..0bd8fb96 100644 --- a/altosuilib/AltosUIConfigure.java +++ b/altosuilib/AltosUIConfigure.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.awt.*; import java.awt.event.*; diff --git a/altosuilib/AltosUIDataMissing.java b/altosuilib/AltosUIDataMissing.java index a0e41fef..b2a76165 100644 --- a/altosuilib/AltosUIDataMissing.java +++ b/altosuilib/AltosUIDataMissing.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; public class AltosUIDataMissing extends Exception { public int id; diff --git a/altosuilib/AltosUIDataPoint.java b/altosuilib/AltosUIDataPoint.java index 82ce862f..fcbfbe95 100644 --- a/altosuilib/AltosUIDataPoint.java +++ b/altosuilib/AltosUIDataPoint.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; public interface AltosUIDataPoint { public abstract double x() throws AltosUIDataMissing; diff --git a/altosuilib/AltosUIDataSet.java b/altosuilib/AltosUIDataSet.java index 6293911d..f25a6bcb 100644 --- a/altosuilib/AltosUIDataSet.java +++ b/altosuilib/AltosUIDataSet.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; public interface AltosUIDataSet { public abstract String name(); diff --git a/altosuilib/AltosUIDialog.java b/altosuilib/AltosUIDialog.java index 77e549c4..a0c180c1 100644 --- a/altosuilib/AltosUIDialog.java +++ b/altosuilib/AltosUIDialog.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.awt.*; import java.awt.event.*; diff --git a/altosuilib/AltosUIEnable.java b/altosuilib/AltosUIEnable.java index 481e5b87..0f9ed8ff 100644 --- a/altosuilib/AltosUIEnable.java +++ b/altosuilib/AltosUIEnable.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.awt.*; import java.awt.event.*; @@ -23,7 +23,7 @@ import javax.swing.*; import java.io.*; import java.util.concurrent.*; import java.util.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; import org.jfree.ui.*; import org.jfree.chart.*; diff --git a/altosuilib/AltosUIFlightTab.java b/altosuilib/AltosUIFlightTab.java index ea4f0cb0..270466a6 100644 --- a/altosuilib/AltosUIFlightTab.java +++ b/altosuilib/AltosUIFlightTab.java @@ -15,13 +15,13 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.util.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public abstract class AltosUIFlightTab extends JComponent implements AltosFlightDisplay, HierarchyListener { public GridBagLayout layout; diff --git a/altosuilib/AltosUIFrame.java b/altosuilib/AltosUIFrame.java index 39b1eb73..9ee4fab4 100644 --- a/altosuilib/AltosUIFrame.java +++ b/altosuilib/AltosUIFrame.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.awt.*; import java.awt.event.*; diff --git a/altosuilib/AltosUIFreqList.java b/altosuilib/AltosUIFreqList.java index 430069f5..744a05dd 100644 --- a/altosuilib/AltosUIFreqList.java +++ b/altosuilib/AltosUIFreqList.java @@ -15,10 +15,10 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import javax.swing.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosUIFreqList extends JComboBox { diff --git a/altosuilib/AltosUIGraph.java b/altosuilib/AltosUIGraph.java index d20aa54b..3b34a988 100644 --- a/altosuilib/AltosUIGraph.java +++ b/altosuilib/AltosUIGraph.java @@ -15,14 +15,14 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.io.*; import java.util.ArrayList; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; import org.jfree.ui.*; import org.jfree.chart.*; diff --git a/altosuilib/AltosUIGrapher.java b/altosuilib/AltosUIGrapher.java index fcd3546f..80b3acd7 100644 --- a/altosuilib/AltosUIGrapher.java +++ b/altosuilib/AltosUIGrapher.java @@ -15,14 +15,14 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.io.*; import java.util.ArrayList; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; import org.jfree.ui.*; import org.jfree.chart.*; diff --git a/altosuilib/AltosUIIndicator.java b/altosuilib/AltosUIIndicator.java index f2e77218..989af389 100644 --- a/altosuilib/AltosUIIndicator.java +++ b/altosuilib/AltosUIIndicator.java @@ -15,11 +15,11 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public abstract class AltosUIIndicator implements AltosFontListener, AltosUnitsListener { JLabel label; diff --git a/altosuilib/AltosUILatLon.java b/altosuilib/AltosUILatLon.java index 72ff74d8..c9fb8e92 100644 --- a/altosuilib/AltosUILatLon.java +++ b/altosuilib/AltosUILatLon.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.awt.*; import java.awt.event.*; @@ -25,7 +25,7 @@ import java.lang.Math; import java.awt.geom.*; import java.util.*; import java.util.concurrent.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosUILatLon { public double lat; diff --git a/altosuilib/AltosUILib.java b/altosuilib/AltosUILib.java index 2fa6cbd6..abd9e7e1 100644 --- a/altosuilib/AltosUILib.java +++ b/altosuilib/AltosUILib.java @@ -15,12 +15,12 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.awt.*; import libaltosJNI.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosUILib extends AltosLib { diff --git a/altosuilib/AltosUIListener.java b/altosuilib/AltosUIListener.java index 9eec0b24..80c18c35 100644 --- a/altosuilib/AltosUIListener.java +++ b/altosuilib/AltosUIListener.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; public interface AltosUIListener { public void ui_changed(String look_and_feel); diff --git a/altosuilib/AltosUIMap.java b/altosuilib/AltosUIMap.java index 5c6d5bdf..5d6fae40 100644 --- a/altosuilib/AltosUIMap.java +++ b/altosuilib/AltosUIMap.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.awt.*; import java.awt.event.*; @@ -25,7 +25,7 @@ import java.lang.Math; import java.awt.geom.*; import java.util.*; import java.util.concurrent.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosUIMap extends JComponent implements AltosFlightDisplay, AltosUIMapZoomListener { diff --git a/altosuilib/AltosUIMapCache.java b/altosuilib/AltosUIMapCache.java index 73401e3c..d08b634d 100644 --- a/altosuilib/AltosUIMapCache.java +++ b/altosuilib/AltosUIMapCache.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import javax.swing.*; import javax.imageio.ImageIO; diff --git a/altosuilib/AltosUIMapCacheListener.java b/altosuilib/AltosUIMapCacheListener.java index 1eec7b0a..9ae66f66 100644 --- a/altosuilib/AltosUIMapCacheListener.java +++ b/altosuilib/AltosUIMapCacheListener.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; public interface AltosUIMapCacheListener { public void map_cache_changed(int map_cache); diff --git a/altosuilib/AltosUIMapImage.java b/altosuilib/AltosUIMapImage.java index 97220a40..e0ac7b5a 100644 --- a/altosuilib/AltosUIMapImage.java +++ b/altosuilib/AltosUIMapImage.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import javax.swing.*; import javax.imageio.ImageIO; diff --git a/altosuilib/AltosUIMapLine.java b/altosuilib/AltosUIMapLine.java index 2634f843..62ed4360 100644 --- a/altosuilib/AltosUIMapLine.java +++ b/altosuilib/AltosUIMapLine.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.awt.*; import java.awt.event.*; @@ -25,7 +25,7 @@ import java.lang.Math; import java.awt.geom.*; import java.util.*; import java.util.concurrent.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosUIMapLine { AltosUILatLon start, end; diff --git a/altosuilib/AltosUIMapMark.java b/altosuilib/AltosUIMapMark.java index b4b98efa..09990da8 100644 --- a/altosuilib/AltosUIMapMark.java +++ b/altosuilib/AltosUIMapMark.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.awt.*; import java.awt.event.*; @@ -25,7 +25,7 @@ import java.lang.Math; import java.awt.geom.*; import java.util.*; import java.util.concurrent.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosUIMapMark { diff --git a/altosuilib/AltosUIMapPath.java b/altosuilib/AltosUIMapPath.java index e77af580..b75dccea 100644 --- a/altosuilib/AltosUIMapPath.java +++ b/altosuilib/AltosUIMapPath.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.awt.*; import java.awt.event.*; @@ -25,7 +25,7 @@ import java.lang.Math; import java.awt.geom.*; import java.util.*; import java.util.concurrent.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; class PathPoint { AltosUILatLon lat_lon; diff --git a/altosuilib/AltosUIMapPreload.java b/altosuilib/AltosUIMapPreload.java index 1973ae6e..5b99ec03 100644 --- a/altosuilib/AltosUIMapPreload.java +++ b/altosuilib/AltosUIMapPreload.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.awt.*; import java.awt.event.*; @@ -26,7 +26,7 @@ import java.text.*; import java.lang.Math; import java.net.URL; import java.net.URLConnection; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; class AltosUIMapPos extends Box { AltosUIFrame owner; diff --git a/altosuilib/AltosUIMapRectangle.java b/altosuilib/AltosUIMapRectangle.java index dc0e4cc1..008623cb 100644 --- a/altosuilib/AltosUIMapRectangle.java +++ b/altosuilib/AltosUIMapRectangle.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; public class AltosUIMapRectangle { AltosUILatLon ul, lr; diff --git a/altosuilib/AltosUIMapStore.java b/altosuilib/AltosUIMapStore.java index 70bb6fed..ba505a7c 100644 --- a/altosuilib/AltosUIMapStore.java +++ b/altosuilib/AltosUIMapStore.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.io.*; import java.net.*; diff --git a/altosuilib/AltosUIMapStoreListener.java b/altosuilib/AltosUIMapStoreListener.java index ccda8983..5a522387 100644 --- a/altosuilib/AltosUIMapStoreListener.java +++ b/altosuilib/AltosUIMapStoreListener.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; public interface AltosUIMapStoreListener { abstract void notify_store(AltosUIMapStore store, int status); diff --git a/altosuilib/AltosUIMapTile.java b/altosuilib/AltosUIMapTile.java index afd1bbc6..755dbde2 100644 --- a/altosuilib/AltosUIMapTile.java +++ b/altosuilib/AltosUIMapTile.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.awt.*; import java.awt.image.*; @@ -25,7 +25,7 @@ import java.awt.geom.*; import java.io.*; import java.util.*; import java.awt.RenderingHints.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosUIMapTile { AltosUIMapTileListener listener; diff --git a/altosuilib/AltosUIMapTileListener.java b/altosuilib/AltosUIMapTileListener.java index dace5b76..01e5146b 100644 --- a/altosuilib/AltosUIMapTileListener.java +++ b/altosuilib/AltosUIMapTileListener.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; public interface AltosUIMapTileListener { abstract public void notify_tile(AltosUIMapTile tile, int status); diff --git a/altosuilib/AltosUIMapTransform.java b/altosuilib/AltosUIMapTransform.java index 25497403..3b85ca6a 100644 --- a/altosuilib/AltosUIMapTransform.java +++ b/altosuilib/AltosUIMapTransform.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.awt.*; import java.awt.event.*; @@ -25,7 +25,7 @@ import java.lang.Math; import java.awt.geom.*; import java.util.*; import java.util.concurrent.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosUIMapTransform { diff --git a/altosuilib/AltosUIMapView.java b/altosuilib/AltosUIMapView.java index d110f803..331b0aea 100644 --- a/altosuilib/AltosUIMapView.java +++ b/altosuilib/AltosUIMapView.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.awt.*; import java.awt.event.*; @@ -26,7 +26,7 @@ import java.lang.*; import java.awt.geom.*; import java.util.*; import java.util.concurrent.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosUIMapView extends Component implements MouseMotionListener, MouseListener, MouseWheelListener, ComponentListener, AltosUIMapTileListener, AltosUIMapStoreListener { diff --git a/altosuilib/AltosUIMapZoomListener.java b/altosuilib/AltosUIMapZoomListener.java index 9f74baca..6d7f5fa7 100644 --- a/altosuilib/AltosUIMapZoomListener.java +++ b/altosuilib/AltosUIMapZoomListener.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; public interface AltosUIMapZoomListener { abstract public void zoom_changed(int zoom); diff --git a/altosuilib/AltosUIMarker.java b/altosuilib/AltosUIMarker.java index 843ee939..287468bd 100644 --- a/altosuilib/AltosUIMarker.java +++ b/altosuilib/AltosUIMarker.java @@ -15,14 +15,14 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.io.*; import java.util.ArrayList; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; import org.jfree.ui.*; import org.jfree.chart.*; diff --git a/altosuilib/AltosUIPreferences.java b/altosuilib/AltosUIPreferences.java index 9760494c..6394f537 100644 --- a/altosuilib/AltosUIPreferences.java +++ b/altosuilib/AltosUIPreferences.java @@ -15,13 +15,13 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.io.*; import java.util.*; import java.awt.Component; import javax.swing.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosUIPreferences extends AltosPreferences { diff --git a/altosuilib/AltosUIPreferencesBackend.java b/altosuilib/AltosUIPreferencesBackend.java index 91fe42ec..5fbfa7f9 100644 --- a/altosuilib/AltosUIPreferencesBackend.java +++ b/altosuilib/AltosUIPreferencesBackend.java @@ -15,11 +15,11 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.io.File; import java.util.prefs.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; import javax.swing.filechooser.FileSystemView; public class AltosUIPreferencesBackend implements AltosPreferencesBackend { diff --git a/altosuilib/AltosUIRateList.java b/altosuilib/AltosUIRateList.java index 0c783a89..12d791b1 100644 --- a/altosuilib/AltosUIRateList.java +++ b/altosuilib/AltosUIRateList.java @@ -15,10 +15,10 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import javax.swing.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosUIRateList extends JComboBox { diff --git a/altosuilib/AltosUISeries.java b/altosuilib/AltosUISeries.java index 4cd5ccd1..c91c1204 100644 --- a/altosuilib/AltosUISeries.java +++ b/altosuilib/AltosUISeries.java @@ -15,14 +15,14 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.io.*; import java.util.ArrayList; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; import org.jfree.ui.*; import org.jfree.chart.*; diff --git a/altosuilib/AltosUITelemetryList.java b/altosuilib/AltosUITelemetryList.java index 77eef567..b4f80b0b 100644 --- a/altosuilib/AltosUITelemetryList.java +++ b/altosuilib/AltosUITelemetryList.java @@ -15,11 +15,11 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.util.*; import javax.swing.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class AltosUITelemetryList extends JComboBox { diff --git a/altosuilib/AltosUIUnitsIndicator.java b/altosuilib/AltosUIUnitsIndicator.java index f86e274f..6f398808 100644 --- a/altosuilib/AltosUIUnitsIndicator.java +++ b/altosuilib/AltosUIUnitsIndicator.java @@ -15,11 +15,11 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public abstract class AltosUIUnitsIndicator extends AltosUIIndicator { diff --git a/altosuilib/AltosUIVersion.java.in b/altosuilib/AltosUIVersion.java.in index beb62cbf..f65b41cd 100644 --- a/altosuilib/AltosUIVersion.java.in +++ b/altosuilib/AltosUIVersion.java.in @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; public class AltosUIVersion { public final static String version = "@VERSION@"; diff --git a/altosuilib/AltosUIVoltageIndicator.java b/altosuilib/AltosUIVoltageIndicator.java index 44ad2ea2..840e5ad0 100644 --- a/altosuilib/AltosUIVoltageIndicator.java +++ b/altosuilib/AltosUIVoltageIndicator.java @@ -15,11 +15,11 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public abstract class AltosUIVoltageIndicator extends AltosUIUnitsIndicator { diff --git a/altosuilib/AltosUSBDevice.java b/altosuilib/AltosUSBDevice.java index e940493f..48daf131 100644 --- a/altosuilib/AltosUSBDevice.java +++ b/altosuilib/AltosUSBDevice.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.util.*; import libaltosJNI.*; diff --git a/altosuilib/AltosVoice.java b/altosuilib/AltosVoice.java index 867f6619..98cc3c83 100644 --- a/altosuilib/AltosVoice.java +++ b/altosuilib/AltosVoice.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import com.sun.speech.freetts.Voice; import com.sun.speech.freetts.VoiceManager; diff --git a/altosuilib/GrabNDrag.java b/altosuilib/GrabNDrag.java index 5d9ce2d9..cf0eacee 100644 --- a/altosuilib/GrabNDrag.java +++ b/altosuilib/GrabNDrag.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.awt.*; import java.awt.event.*; diff --git a/altosuilib/OSXAdapter.java b/altosuilib/OSXAdapter.java index 28b00ce1..7397e2a0 100755 --- a/altosuilib/OSXAdapter.java +++ b/altosuilib/OSXAdapter.java @@ -55,7 +55,7 @@ Copyright © 2003-2007 Apple, Inc., All Rights Reserved */ -package org.altusmetrum.altosuilib_6; +package org.altusmetrum.altosuilib_7; import java.lang.reflect.*; import java.util.HashMap; diff --git a/micropeak/MicroData.java b/micropeak/MicroData.java index 857dbe58..1001a370 100644 --- a/micropeak/MicroData.java +++ b/micropeak/MicroData.java @@ -20,8 +20,8 @@ package org.altusmetrum.micropeak; import java.lang.*; import java.io.*; import java.util.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; class MicroIterator implements Iterator { int i; diff --git a/micropeak/MicroDataPoint.java b/micropeak/MicroDataPoint.java index 45d5ba27..1d42032f 100644 --- a/micropeak/MicroDataPoint.java +++ b/micropeak/MicroDataPoint.java @@ -17,7 +17,7 @@ package org.altusmetrum.micropeak; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altosuilib_7.*; public class MicroDataPoint implements AltosUIDataPoint { public double time; diff --git a/micropeak/MicroDeviceDialog.java b/micropeak/MicroDeviceDialog.java index 55328482..91c3306b 100644 --- a/micropeak/MicroDeviceDialog.java +++ b/micropeak/MicroDeviceDialog.java @@ -21,7 +21,7 @@ import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altosuilib_7.*; public class MicroDeviceDialog extends AltosDeviceDialog { diff --git a/micropeak/MicroDownload.java b/micropeak/MicroDownload.java index a03d7b3a..028f4431 100644 --- a/micropeak/MicroDownload.java +++ b/micropeak/MicroDownload.java @@ -23,8 +23,8 @@ import javax.swing.*; import java.io.*; import java.util.concurrent.*; import java.util.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; public class MicroDownload extends AltosUIDialog implements Runnable, ActionListener, MicroSerialLog, WindowListener { MicroPeak owner; diff --git a/micropeak/MicroExport.java b/micropeak/MicroExport.java index 93c8cae8..7e75574d 100644 --- a/micropeak/MicroExport.java +++ b/micropeak/MicroExport.java @@ -23,8 +23,8 @@ import java.util.ArrayList; import java.awt.*; import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; public class MicroExport extends JFileChooser { diff --git a/micropeak/MicroFile.java b/micropeak/MicroFile.java index 78f7dac2..1d2447fc 100644 --- a/micropeak/MicroFile.java +++ b/micropeak/MicroFile.java @@ -19,8 +19,8 @@ package org.altusmetrum.micropeak; import java.io.*; import java.util.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; public class MicroFile { diff --git a/micropeak/MicroFileChooser.java b/micropeak/MicroFileChooser.java index 5ac22e30..a48df6d1 100644 --- a/micropeak/MicroFileChooser.java +++ b/micropeak/MicroFileChooser.java @@ -20,8 +20,8 @@ package org.altusmetrum.micropeak; import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; import java.io.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; public class MicroFileChooser extends JFileChooser { JFrame frame; diff --git a/micropeak/MicroFrame.java b/micropeak/MicroFrame.java index 47b03a12..4cb156f2 100644 --- a/micropeak/MicroFrame.java +++ b/micropeak/MicroFrame.java @@ -21,7 +21,7 @@ import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altosuilib_7.*; public class MicroFrame extends AltosUIFrame { static String[] micro_icon_names = { diff --git a/micropeak/MicroGraph.java b/micropeak/MicroGraph.java index a6d511c3..d2c6a9e3 100644 --- a/micropeak/MicroGraph.java +++ b/micropeak/MicroGraph.java @@ -22,8 +22,8 @@ import java.util.ArrayList; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; import org.jfree.ui.*; import org.jfree.chart.*; diff --git a/micropeak/MicroPeak.java b/micropeak/MicroPeak.java index 9f7095f3..be50ac18 100644 --- a/micropeak/MicroPeak.java +++ b/micropeak/MicroPeak.java @@ -23,8 +23,8 @@ import javax.swing.*; import java.io.*; import java.util.concurrent.*; import java.util.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; public class MicroPeak extends MicroFrame implements ActionListener, ItemListener { diff --git a/micropeak/MicroRaw.java b/micropeak/MicroRaw.java index 587fe927..ed5410e0 100644 --- a/micropeak/MicroRaw.java +++ b/micropeak/MicroRaw.java @@ -20,8 +20,8 @@ package org.altusmetrum.micropeak; import java.awt.*; import java.io.*; import javax.swing.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; public class MicroRaw extends JTextArea { diff --git a/micropeak/MicroSave.java b/micropeak/MicroSave.java index 65026bda..15916ba0 100644 --- a/micropeak/MicroSave.java +++ b/micropeak/MicroSave.java @@ -24,8 +24,8 @@ import javax.swing.filechooser.FileNameExtensionFilter; import java.io.*; import java.util.concurrent.*; import java.util.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; public class MicroSave extends JFileChooser { diff --git a/micropeak/MicroSerial.java b/micropeak/MicroSerial.java index 4282aba1..c0ec161c 100644 --- a/micropeak/MicroSerial.java +++ b/micropeak/MicroSerial.java @@ -20,7 +20,7 @@ package org.altusmetrum.micropeak; import java.util.*; import java.io.*; import libaltosJNI.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altosuilib_7.*; public class MicroSerial extends InputStream { SWIGTYPE_p_altos_file file; diff --git a/micropeak/MicroSerialLog.java b/micropeak/MicroSerialLog.java index 3ee44649..a8c8b2ad 100644 --- a/micropeak/MicroSerialLog.java +++ b/micropeak/MicroSerialLog.java @@ -20,7 +20,7 @@ package org.altusmetrum.micropeak; import java.util.*; import java.io.*; import libaltosJNI.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altosuilib_7.*; public interface MicroSerialLog { diff --git a/micropeak/MicroStats.java b/micropeak/MicroStats.java index 47ef2a79..8cb64f4d 100644 --- a/micropeak/MicroStats.java +++ b/micropeak/MicroStats.java @@ -18,8 +18,8 @@ package org.altusmetrum.micropeak; import java.io.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; public class MicroStats { double coast_height; diff --git a/micropeak/MicroStatsTable.java b/micropeak/MicroStatsTable.java index 139c4416..ef6023dc 100644 --- a/micropeak/MicroStatsTable.java +++ b/micropeak/MicroStatsTable.java @@ -19,8 +19,8 @@ package org.altusmetrum.micropeak; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; public class MicroStatsTable extends JComponent implements AltosFontListener { GridBagLayout layout; diff --git a/micropeak/MicroUSB.java b/micropeak/MicroUSB.java index fa20488d..906458c4 100644 --- a/micropeak/MicroUSB.java +++ b/micropeak/MicroUSB.java @@ -19,8 +19,8 @@ package org.altusmetrum.micropeak; import java.util.*; import libaltosJNI.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; public class MicroUSB extends altos_device implements AltosDevice { diff --git a/telegps/TeleGPS.java b/telegps/TeleGPS.java index 7570d380..8ff5ac28 100644 --- a/telegps/TeleGPS.java +++ b/telegps/TeleGPS.java @@ -24,8 +24,8 @@ import java.io.*; import java.util.concurrent.*; import java.util.*; import java.text.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; public class TeleGPS extends AltosUIFrame diff --git a/telegps/TeleGPSConfig.java b/telegps/TeleGPSConfig.java index 55763e22..e44c528c 100644 --- a/telegps/TeleGPSConfig.java +++ b/telegps/TeleGPSConfig.java @@ -22,8 +22,8 @@ import javax.swing.*; import java.io.*; import java.util.concurrent.*; import java.text.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; public class TeleGPSConfig implements ActionListener { diff --git a/telegps/TeleGPSConfigUI.java b/telegps/TeleGPSConfigUI.java index 4e657586..8c3d0c2e 100644 --- a/telegps/TeleGPSConfigUI.java +++ b/telegps/TeleGPSConfigUI.java @@ -22,8 +22,8 @@ import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; public class TeleGPSConfigUI extends AltosUIDialog diff --git a/telegps/TeleGPSDisplayThread.java b/telegps/TeleGPSDisplayThread.java index 09610f59..d0d97876 100644 --- a/telegps/TeleGPSDisplayThread.java +++ b/telegps/TeleGPSDisplayThread.java @@ -21,8 +21,8 @@ import java.awt.*; import javax.swing.*; import java.io.*; import java.text.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; public class TeleGPSDisplayThread extends Thread { diff --git a/telegps/TeleGPSGraphUI.java b/telegps/TeleGPSGraphUI.java index d3adc748..ab094ac9 100644 --- a/telegps/TeleGPSGraphUI.java +++ b/telegps/TeleGPSGraphUI.java @@ -26,8 +26,8 @@ import javax.swing.*; import java.io.*; import java.util.concurrent.*; import java.util.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; diff --git a/telegps/TeleGPSInfo.java b/telegps/TeleGPSInfo.java index f20a8830..a5efb059 100644 --- a/telegps/TeleGPSInfo.java +++ b/telegps/TeleGPSInfo.java @@ -21,8 +21,8 @@ import java.util.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; public class TeleGPSInfo extends AltosUIFlightTab { diff --git a/telegps/TeleGPSPreferences.java b/telegps/TeleGPSPreferences.java index 6d7b8985..b62ea5a8 100644 --- a/telegps/TeleGPSPreferences.java +++ b/telegps/TeleGPSPreferences.java @@ -22,7 +22,7 @@ import java.awt.event.*; import java.beans.*; import javax.swing.*; import javax.swing.event.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altosuilib_7.*; public class TeleGPSPreferences extends AltosUIConfigure diff --git a/telegps/TeleGPSState.java b/telegps/TeleGPSState.java index 18f500b9..6fbd0b5e 100644 --- a/telegps/TeleGPSState.java +++ b/telegps/TeleGPSState.java @@ -21,8 +21,8 @@ import java.util.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; public class TeleGPSState extends AltosUIFlightTab { diff --git a/telegps/TeleGPSStatus.java b/telegps/TeleGPSStatus.java index 050a8449..cc9966b8 100644 --- a/telegps/TeleGPSStatus.java +++ b/telegps/TeleGPSStatus.java @@ -19,8 +19,8 @@ package org.altusmetrum.telegps; import java.awt.*; import javax.swing.*; -import org.altusmetrum.altoslib_6.*; -import org.altusmetrum.altosuilib_6.*; +import org.altusmetrum.altoslib_7.*; +import org.altusmetrum.altosuilib_7.*; public class TeleGPSStatus extends JComponent implements AltosFlightDisplay { GridBagLayout layout; diff --git a/telegps/TeleGPSStatusUpdate.java b/telegps/TeleGPSStatusUpdate.java index 9c085a5b..1d545927 100644 --- a/telegps/TeleGPSStatusUpdate.java +++ b/telegps/TeleGPSStatusUpdate.java @@ -18,7 +18,7 @@ package org.altusmetrum.telegps; import java.awt.event.*; -import org.altusmetrum.altoslib_6.*; +import org.altusmetrum.altoslib_7.*; public class TeleGPSStatusUpdate implements ActionListener { -- cgit v1.2.3 From 501fa41111b93cc213a1114a33612858e1e93ab5 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 26 May 2015 00:29:53 -0700 Subject: altoslib/altosuilib: Get new Map display code running in altosui and telegps Looks like the display is all hooked up. Still need to replace the preload UIs. Signed-off-by: Keith Packard --- altoslib/AltosMap.java | 103 ++++--- altoslib/AltosMapInterface.java | 11 +- altoslib/AltosMapLine.java | 4 +- altoslib/AltosMapMark.java | 4 +- altoslib/AltosMapTile.java | 1 + altoslib/AltosMapTileListener.java | 2 + altosuilib/AltosUIMapNew.java | 539 +++++++++++++++++++++++++++++++++++++ telegps/TeleGPS.java | 4 +- 8 files changed, 620 insertions(+), 48 deletions(-) create mode 100644 altosuilib/AltosUIMapNew.java (limited to 'altoslib') diff --git a/altoslib/AltosMap.java b/altoslib/AltosMap.java index 7c7c7305..b54c66cf 100644 --- a/altoslib/AltosMap.java +++ b/altoslib/AltosMap.java @@ -22,7 +22,7 @@ import java.lang.*; import java.util.*; import java.util.concurrent.*; -public class AltosMap implements AltosFlightDisplay, AltosMapTileListener, AltosMapStoreListener { +public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { public static final int px_size = 512; @@ -54,18 +54,12 @@ public class AltosMap implements AltosFlightDisplay, AltosMapTileListener, Altos AltosMapCache cache; - LinkedList marks = new LinkedList(); - - LinkedList zoom_listeners = new LinkedList(); + public AltosMapCache cache() { return cache; } - public void add_zoom_listener(AltosMapZoomListener listener) { - if (!zoom_listeners.contains(listener)) - zoom_listeners.add(listener); - } + LinkedList marks = new LinkedList(); - public void remove_zoom_listener(AltosMapZoomListener listener) { - zoom_listeners.remove(listener); - } + AltosMapPath path; + AltosMapLine line; boolean have_boost = false; boolean have_landed = false; @@ -84,7 +78,7 @@ public class AltosMap implements AltosFlightDisplay, AltosMapTileListener, Altos */ static final long auto_scroll_delay = 20 * 1000; - AltosMapTransform transform; + public AltosMapTransform transform; AltosLatLon centre; public void reset() { @@ -92,16 +86,14 @@ public class AltosMap implements AltosFlightDisplay, AltosMapTileListener, Altos } /* MapInterface wrapping functions */ - public void set_units() { - map_interface.set_units(); - } - public void repaint(AltosMapRectangle damage, int pad) { - map_interface.repaint(damage, pad); + public void repaint(int x, int y, int w, int h) { + map_interface.repaint(new AltosRectangle(x, y, w, h)); } - public void repaint(double x, double y, double w, double h) { - map_interface.repaint(x, y, w, h); + public void repaint(AltosMapRectangle damage, int pad) { + AltosRectangle r = transform.screen(damage); + repaint(r.x - pad, r.y - pad, r.width + pad * 2, r.height + pad * 2); } public void repaint() { @@ -156,30 +148,22 @@ public class AltosMap implements AltosFlightDisplay, AltosMapTileListener, Altos return false; } - public void font_size_changed(int font_size) { - map_interface.line().font_size_changed(font_size); - for (AltosMapTile tile : tiles.values()) - tile.font_size_changed(font_size); + public void set_transform() { + transform = new AltosMapTransform(width(), height(), zoom, centre); repaint(); } - public void units_changed(boolean imperial_units) { + private void set_zoom_label() { + map_interface.set_zoom_label(String.format("Zoom %d", get_zoom() - default_zoom)); } - private void set_transform() { - transform = new AltosMapTransform(width(), height(), zoom, centre); - repaint(); - } public boolean set_zoom(int zoom) { if (AltosMap.min_zoom <= zoom && zoom <= AltosMap.max_zoom && zoom != this.zoom) { this.zoom = zoom; tiles.clear(); set_transform(); - - for (AltosMapZoomListener listener : zoom_listeners) - listener.zoom_changed(this.zoom); - + set_zoom_label(); return true; } return false; @@ -211,7 +195,7 @@ public class AltosMap implements AltosFlightDisplay, AltosMapTileListener, Altos if (!gps.locked && gps.nsat < 4) return; - AltosMapRectangle damage = map_interface.path().add(gps.lat, gps.lon, state.state); + AltosMapRectangle damage = path.add(gps.lat, gps.lon, state.state); switch (state.state) { case AltosLib.ao_flight_boost: @@ -339,9 +323,9 @@ public class AltosMap implements AltosFlightDisplay, AltosMapTileListener, Altos mark.paint(transform); } - map_interface.path().paint(transform); + path.paint(transform); - map_interface.line().paint(transform); + line.paint(transform); } /* AltosMapTileListener methods */ @@ -363,9 +347,58 @@ public class AltosMap implements AltosFlightDisplay, AltosMapTileListener, Altos } } + /* UI elements */ + + AltosPointInt drag_start; + + private void drag(int x, int y) { + if (drag_start == null) + return; + + int dx = x - drag_start.x; + int dy = y - drag_start.y; + + AltosLatLon new_centre = transform.screen_lat_lon(new AltosPointInt(width() / 2 - dx, height() / 2 - dy)); + centre(new_centre); + drag_start = new AltosPointInt(x, y); + } + + private void drag_start(int x, int y) { + drag_start = new AltosPointInt(x, y); + } + + private void line_start(int x, int y) { + line.pressed(new AltosPointInt(x, y), transform); + repaint(); + } + + private void line(int x, int y) { + line.dragged(new AltosPointInt(x, y), transform); + repaint(); + } + + public void touch_start(int x, int y, boolean is_drag) { + notice_user_input(); + if (is_drag) + drag_start(x, y); + else + line_start(x, y); + } + + public void touch_continue(int x, int y, boolean is_drag) { + notice_user_input(); + if (is_drag) + drag(x, y); + else + line(x, y); + } + public AltosMap(AltosMapInterface map_interface) { this.map_interface = map_interface; cache = new AltosMapCache(map_interface); + line = map_interface.new_line(); + path = map_interface.new_path(); + set_zoom_label(); centre(0, 0); } } diff --git a/altoslib/AltosMapInterface.java b/altoslib/AltosMapInterface.java index 0dcd646e..195574e9 100644 --- a/altoslib/AltosMapInterface.java +++ b/altoslib/AltosMapInterface.java @@ -21,8 +21,9 @@ import java.io.*; import java.net.*; public interface AltosMapInterface { - public abstract AltosMapPath path(); - public abstract AltosMapLine line(); + public abstract AltosMapPath new_path(); + + public abstract AltosMapLine new_line(); public abstract AltosImage load_image(File file) throws Exception; @@ -36,9 +37,7 @@ public interface AltosMapInterface { public abstract void repaint(); - public abstract void repaint(AltosMapRectangle damage, int pad); - - public abstract void repaint(double x, double y, double w, double h); + public abstract void repaint(AltosRectangle damage); - public abstract void set_units(); + public abstract void set_zoom_label(String label); } diff --git a/altoslib/AltosMapLine.java b/altoslib/AltosMapLine.java index e727e338..23a6f889 100644 --- a/altoslib/AltosMapLine.java +++ b/altoslib/AltosMapLine.java @@ -22,13 +22,11 @@ import java.lang.Math; import java.util.*; import java.util.concurrent.*; -public abstract class AltosMapLine implements AltosFontListener { +public abstract class AltosMapLine { public AltosLatLon start, end; static public int stroke_width = 6; - public abstract void font_size_changed(int font_size); - public abstract void paint(AltosMapTransform t); private AltosLatLon lat_lon(AltosPointInt pt, AltosMapTransform t) { diff --git a/altoslib/AltosMapMark.java b/altoslib/AltosMapMark.java index 5eb1907b..74e6790f 100644 --- a/altoslib/AltosMapMark.java +++ b/altoslib/AltosMapMark.java @@ -24,8 +24,8 @@ import java.util.concurrent.*; public abstract class AltosMapMark { - AltosLatLon lat_lon; - int state; + public AltosLatLon lat_lon; + public int state; static public int stroke_width = 6; diff --git a/altoslib/AltosMapTile.java b/altoslib/AltosMapTile.java index e61746f8..165f9e6f 100644 --- a/altoslib/AltosMapTile.java +++ b/altoslib/AltosMapTile.java @@ -99,6 +99,7 @@ public abstract class AltosMapTile implements AltosFontListener { public AltosMapTile(AltosMapTileListener listener, AltosLatLon upper_left, AltosLatLon center, int zoom, int maptype, int px_size) { this.listener = listener; this.upper_left = upper_left; + this.cache = listener.cache(); while (center.lon < -180.0) center.lon += 360.0; diff --git a/altoslib/AltosMapTileListener.java b/altoslib/AltosMapTileListener.java index 60d92c75..ed47e833 100644 --- a/altoslib/AltosMapTileListener.java +++ b/altoslib/AltosMapTileListener.java @@ -19,4 +19,6 @@ package org.altusmetrum.altoslib_7; public interface AltosMapTileListener { abstract public void notify_tile(AltosMapTile tile, int status); + + abstract public AltosMapCache cache(); } diff --git a/altosuilib/AltosUIMapNew.java b/altosuilib/AltosUIMapNew.java new file mode 100644 index 00000000..4191a562 --- /dev/null +++ b/altosuilib/AltosUIMapNew.java @@ -0,0 +1,539 @@ +/* + * Copyright © 2010 Anthony Towns + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.altosuilib_7; + +import java.awt.*; +import java.awt.event.*; +import java.awt.image.*; +import javax.swing.*; +import java.io.*; +import java.lang.Math; +import java.awt.geom.*; +import java.util.*; +import java.util.concurrent.*; +import javax.imageio.*; +import org.altusmetrum.altoslib_7.*; + +public class AltosUIMapNew extends JComponent implements AltosFlightDisplay, AltosMapInterface { + + AltosMap map; + Graphics2D g; + Font tile_font; + Font line_font; + + static Point2D.Double point2d(AltosPointDouble pt) { + return new Point2D.Double(pt.x, pt.y); + } + + static final AltosPointDouble point_double(Point pt) { + return new AltosPointDouble(pt.x, pt.y); + } + + class MapMark extends AltosMapMark { + public void paint(AltosMapTransform t) { + AltosPointDouble pt = t.screen(lat_lon); + + g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_ON); + g.setStroke(new BasicStroke(stroke_width, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)); + + if (0 <= state && state < AltosUIMapNew.stateColors.length) + g.setColor(AltosUIMapNew.stateColors[state]); + else + g.setColor(AltosUIMapNew.stateColors[AltosLib.ao_flight_invalid]); + + g.drawOval((int)pt.x-5, (int)pt.y-5, 10, 10); + g.drawOval((int)pt.x-20, (int)pt.y-20, 40, 40); + g.drawOval((int)pt.x-35, (int)pt.y-35, 70, 70); + } + + MapMark(double lat, double lon, int state) { + super(lat, lon, state); + } + } + + class MapView extends JComponent implements MouseMotionListener, MouseListener, ComponentListener, MouseWheelListener { + + private VolatileImage create_back_buffer() { + return getGraphicsConfiguration().createCompatibleVolatileImage(getWidth(), getHeight()); + } + + private void do_paint(Graphics my_g) { + g = (Graphics2D) my_g; + + map.paint(); + } + + public void paint(Graphics my_g) { + VolatileImage back_buffer = create_back_buffer(); + + Graphics2D top_g = (Graphics2D) my_g; + + do { + GraphicsConfiguration gc = getGraphicsConfiguration(); + int code = back_buffer.validate(gc); + if (code == VolatileImage.IMAGE_INCOMPATIBLE) + back_buffer = create_back_buffer(); + + Graphics g_back = back_buffer.getGraphics(); + g_back.setClip(top_g.getClip()); + do_paint(g_back); + g_back.dispose(); + + top_g.drawImage(back_buffer, 0, 0, this); + } while (back_buffer.contentsLost()); + back_buffer.flush(); + } + + public void repaint(AltosRectangle damage) { + repaint(damage.x, damage.y, damage.width, damage.height); + } + + private boolean is_drag_event(MouseEvent e) { + return e.getModifiers() == InputEvent.BUTTON1_MASK; + } + + /* MouseMotionListener methods */ + + public void mouseDragged(MouseEvent e) { + map.touch_continue(e.getPoint().x, e.getPoint().y, is_drag_event(e)); + } + + public void mouseMoved(MouseEvent e) { + } + + /* MouseListener methods */ + public void mouseClicked(MouseEvent e) { + } + + public void mouseEntered(MouseEvent e) { + } + + public void mouseExited(MouseEvent e) { + } + + public void mousePressed(MouseEvent e) { + map.touch_start(e.getPoint().x, e.getPoint().y, is_drag_event(e)); + } + + public void mouseReleased(MouseEvent e) { + } + + /* MouseWheelListener methods */ + + public void mouseWheelMoved(MouseWheelEvent e) { + int zoom_change = e.getWheelRotation(); + + map.notice_user_input(); + AltosLatLon mouse_lat_lon = map.transform.screen_lat_lon(new AltosPointInt(e.getPoint().x, e.getPoint().y)); + map.set_zoom(map.get_zoom() - zoom_change); + + AltosPointDouble new_mouse = map.transform.screen(mouse_lat_lon); + + int dx = getWidth()/2 - e.getPoint().x; + int dy = getHeight()/2 - e.getPoint().y; + + AltosLatLon new_centre = map.transform.screen_lat_lon(new AltosPointInt((int) new_mouse.x + dx, (int) new_mouse.y + dy)); + + map.centre(new_centre); + } + + /* ComponentListener methods */ + + public void componentHidden(ComponentEvent e) { + } + + public void componentMoved(ComponentEvent e) { + } + + public void componentResized(ComponentEvent e) { + map.set_transform(); + } + + public void componentShown(ComponentEvent e) { + map.set_transform(); + } + + MapView() { + addComponentListener(this); + addMouseMotionListener(this); + addMouseListener(this); + addMouseWheelListener(this); + } + } + + class MapLine extends AltosMapLine { + + public void paint(AltosMapTransform t) { + + if (start == null || end == null) + return; + + g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); + + Line2D.Double line = new Line2D.Double(point2d(t.screen(start)), + point2d(t.screen(end))); + + g.setColor(Color.WHITE); + g.setStroke(new BasicStroke(stroke_width+4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)); + g.draw(line); + + g.setColor(Color.BLUE); + g.setStroke(new BasicStroke(stroke_width, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)); + g.draw(line); + + String message = line_dist(); + Rectangle2D bounds; + bounds = line_font.getStringBounds(message, g.getFontRenderContext()); + + float x = (float) line.x1; + float y = (float) line.y1 + (float) bounds.getHeight() / 2.0f; + + if (line.x1 < line.x2) { + x -= (float) bounds.getWidth() + 2.0f; + } else { + x += 2.0f; + } + + g.setFont(line_font); + g.setColor(Color.WHITE); + for (int dy = -2; dy <= 2; dy += 2) + for (int dx = -2; dx <= 2; dx += 2) + g.drawString(message, x + dx, y + dy); + g.setColor(Color.BLUE); + g.drawString(message, x, y); + } + + public MapLine() { + } + } + + class MapPath extends AltosMapPath { + public void paint(AltosMapTransform t) { + Point2D.Double prev = null; + + g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_ON); + g.setStroke(new BasicStroke(stroke_width, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)); + + for (AltosMapPathPoint point : points) { + Point2D.Double cur = point2d(t.screen(point.lat_lon)); + if (prev != null) { + Line2D.Double line = new Line2D.Double (prev, cur); + Rectangle bounds = line.getBounds(); + + if (g.hitClip(bounds.x, bounds.y, bounds.width, bounds.height)) { + if (0 <= point.state && point.state < AltosUIMapNew.stateColors.length) + g.setColor(AltosUIMapNew.stateColors[point.state]); + else + g.setColor(AltosUIMapNew.stateColors[AltosLib.ao_flight_invalid]); + + g.draw(line); + } + } + prev = cur; + } + } + } + + class MapTile extends AltosMapTile { + public MapTile(AltosMapTileListener listener, AltosLatLon upper_left, AltosLatLon center, int zoom, int maptype, int px_size) { + super(listener, upper_left, center, zoom, maptype, px_size); + } + + public void paint(AltosMapTransform t) { + + AltosPointDouble point_double = t.screen(upper_left); + Point point = new Point((int) (point_double.x + 0.5), + (int) (point_double.y + 0.5)); + + if (!g.hitClip(point.x, point.y, px_size, px_size)) + return; + + AltosImage altos_image = cache.get(this, store, px_size, px_size); + + AltosUIImage ui_image = (AltosUIImage) altos_image; + + Image image = null; + + if (ui_image != null) + image = ui_image.image; + + if (image != null) { + g.drawImage(image, point.x, point.y, null); + } else { + g.setColor(Color.GRAY); + g.fillRect(point.x, point.y, px_size, px_size); + + if (t.has_location()) { + String message = null; + switch (status) { + case AltosUIMapCache.loading: + message = "Loading..."; + break; + case AltosUIMapCache.bad_request: + message = "Internal error"; + break; + case AltosUIMapCache.failed: + message = "Network error, check connection"; + break; + case AltosUIMapCache.forbidden: + message = "Too many requests, try later"; + break; + } + if (message != null && tile_font != null) { + g.setFont(tile_font); + g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); + Rectangle2D bounds = tile_font.getStringBounds(message, g.getFontRenderContext()); + + float x = px_size / 2.0f; + float y = px_size / 2.0f; + x = x - (float) bounds.getWidth() / 2.0f; + y = y + (float) bounds.getHeight() / 2.0f; + g.setColor(Color.BLACK); + g.drawString(message, (float) point_double.x + x, (float) point_double.y + y); + } + } + } + } + } + + public static final Color stateColors[] = { + Color.WHITE, // startup + Color.WHITE, // idle + Color.WHITE, // pad + Color.RED, // boost + Color.PINK, // fast + Color.YELLOW, // coast + Color.CYAN, // drogue + Color.BLUE, // main + Color.BLACK, // landed + Color.BLACK, // invalid + Color.CYAN, // stateless + }; + + /* AltosMapInterface functions */ + + public AltosMapPath new_path() { + return new MapPath(); + } + + public AltosMapLine new_line() { + return new MapLine(); + } + + public AltosImage load_image(File file) throws Exception { + return new AltosUIImage(ImageIO.read(file)); + } + + public AltosMapMark new_mark(double lat, double lon, int state) { + return new MapMark(lat, lon, state); + } + + public AltosMapTile new_tile(AltosMapTileListener listener, AltosLatLon upper_left, AltosLatLon center, int zoom, int maptype, int px_size) { + return new MapTile(listener, upper_left, center, zoom, maptype, px_size); + } + + public int width() { + return view.getWidth(); + } + + public int height() { + return view.getHeight(); + } + + public void repaint() { + view.repaint(); + } + + public void repaint(AltosRectangle damage) { + view.repaint(damage); + } + + public void set_zoom_label(String label) { + zoom_label.setText(label); + } + + /* AltosFlightDisplay interface */ + + public void set_font() { + tile_font = AltosUILib.value_font; + line_font = AltosUILib.status_font; + } + + public void font_size_changed(int font_size) { + set_font(); + repaint(); + } + + public void units_changed(boolean imperial_units) { + repaint(); + } + + JLabel zoom_label; + + public void set_maptype(int type) { + map.set_maptype(type); + maptype_combo.setSelectedIndex(type); + } + + /* AltosUIMapPreload functions */ + + public void set_zoom(int zoom) { + map.set_zoom(zoom); + } + + public void add_mark(double lat, double lon, int status) { + map.add_mark(lat, lon, status); + } + + public void clear_marks() { + map.clear_marks(); + } + + /* AltosFlightDisplay interface */ + public void reset() { + // nothing + } + + public void show(AltosState state, AltosListenerState listener_state) { + map.show(state, listener_state); + } + + public String getName() { + return "Map"; + } + + /* internal layout bits */ + private GridBagLayout layout = new GridBagLayout(); + + JComboBox maptype_combo; + + public void set_load_params(double lat, double lon, int radius, AltosMapTileListener listener) { + map.set_load_params(lat, lon, radius, listener); + } + + MapView view; + + public AltosUIMapNew() { + + set_font(); + + view = new MapView(); + + view.setPreferredSize(new Dimension(500,500)); + view.setVisible(true); + view.setEnabled(true); + + GridBagLayout my_layout = new GridBagLayout(); + + setLayout(my_layout); + + GridBagConstraints c = new GridBagConstraints(); + c.anchor = GridBagConstraints.CENTER; + c.fill = GridBagConstraints.BOTH; + c.gridx = 0; + c.gridy = 0; + c.gridwidth = 1; + c.gridheight = 10; + c.weightx = 1; + c.weighty = 1; + add(view, c); + + int y = 0; + + zoom_label = new JLabel("", JLabel.CENTER); + + c = new GridBagConstraints(); + c.anchor = GridBagConstraints.CENTER; + c.fill = GridBagConstraints.HORIZONTAL; + c.gridx = 1; + c.gridy = y++; + c.weightx = 0; + c.weighty = 0; + add(zoom_label, c); + + JButton zoom_reset = new JButton("0"); + zoom_reset.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + map.set_zoom(map.default_zoom); + } + }); + + c = new GridBagConstraints(); + c.anchor = GridBagConstraints.CENTER; + c.fill = GridBagConstraints.HORIZONTAL; + c.gridx = 1; + c.gridy = y++; + c.weightx = 0; + c.weighty = 0; + add(zoom_reset, c); + + JButton zoom_in = new JButton("+"); + zoom_in.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + map.set_zoom(map.get_zoom() + 1); + } + }); + + c = new GridBagConstraints(); + c.anchor = GridBagConstraints.CENTER; + c.fill = GridBagConstraints.HORIZONTAL; + c.gridx = 1; + c.gridy = y++; + c.weightx = 0; + c.weighty = 0; + add(zoom_in, c); + + JButton zoom_out = new JButton("-"); + zoom_out.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + map.set_zoom(map.get_zoom() - 1); + } + }); + c = new GridBagConstraints(); + c.anchor = GridBagConstraints.CENTER; + c.fill = GridBagConstraints.HORIZONTAL; + c.gridx = 1; + c.gridy = y++; + c.weightx = 0; + c.weighty = 0; + add(zoom_out, c); + + maptype_combo = new JComboBox(map.maptype_labels); + + maptype_combo.setEditable(false); + maptype_combo.setMaximumRowCount(maptype_combo.getItemCount()); + maptype_combo.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + map.set_maptype(maptype_combo.getSelectedIndex()); + } + }); + + c = new GridBagConstraints(); + c.anchor = GridBagConstraints.CENTER; + c.fill = GridBagConstraints.HORIZONTAL; + c.gridx = 1; + c.gridy = y++; + c.weightx = 0; + c.weighty = 0; + add(maptype_combo, c); + + map = new AltosMap(this); + } +} diff --git a/telegps/TeleGPS.java b/telegps/TeleGPS.java index 8ff5ac28..1e134900 100644 --- a/telegps/TeleGPS.java +++ b/telegps/TeleGPS.java @@ -71,7 +71,7 @@ public class TeleGPS JTabbedPane pane; - AltosUIMap map; + AltosUIMapNew map; TeleGPSInfo gps_info; TeleGPSState gps_state; AltosInfoTable info_table; @@ -542,7 +542,7 @@ public class TeleGPS c.gridwidth = 2; bag.add(pane, c); - map = new AltosUIMap(); + map = new AltosUIMapNew(); pane.add(map.getName(), map); displays.add(map); -- cgit v1.2.3 From f822b84d8c25159ff113fef6a419b6e18e87a87a Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 26 May 2015 01:04:00 -0700 Subject: altosuilib: Get rid of AltosUIVersion.java It's been moved to altoslib/AltosVersion.java Signed-off-by: Keith Packard --- altoslib/AltosVersion.java.in | 2 +- altosuilib/.gitignore | 1 - altosuilib/AltosUIConfigure.java | 5 +++-- altosuilib/AltosUIVersion.java.in | 28 ---------------------------- altosuilib/Makefile.am | 1 - configure.ac | 1 - 6 files changed, 4 insertions(+), 34 deletions(-) delete mode 100644 altosuilib/AltosUIVersion.java.in (limited to 'altoslib') diff --git a/altoslib/AltosVersion.java.in b/altoslib/AltosVersion.java.in index 546d4353..ebba5a00 100644 --- a/altoslib/AltosVersion.java.in +++ b/altoslib/AltosVersion.java.in @@ -22,7 +22,7 @@ public class AltosVersion { public final static String google_maps_api_key = @GOOGLEKEY@; - static boolean has_google_maps_api_key() { + public static boolean has_google_maps_api_key() { return google_maps_api_key != null && google_maps_api_key.length() > 1; } } diff --git a/altosuilib/.gitignore b/altosuilib/.gitignore index 4ad8a77a..943408ec 100644 --- a/altosuilib/.gitignore +++ b/altosuilib/.gitignore @@ -1,4 +1,3 @@ -AltosUIVersion.java bin classaltosuilib.stamp altosuilib*.jar diff --git a/altosuilib/AltosUIConfigure.java b/altosuilib/AltosUIConfigure.java index 0bd8fb96..75957b33 100644 --- a/altosuilib/AltosUIConfigure.java +++ b/altosuilib/AltosUIConfigure.java @@ -22,6 +22,7 @@ import java.awt.event.*; import java.beans.*; import javax.swing.*; import javax.swing.event.*; +import org.altusmetrum.altoslib_7.*; class DelegatingRenderer implements ListCellRenderer { @@ -269,8 +270,8 @@ public class AltosUIConfigure row++; pane.add(new JLabel (String.format("AltOS version %s (%smaps key)", - AltosUIVersion.version, - AltosUIVersion.has_google_maps_api_key() ? "" : "no ")), + AltosVersion.version, + AltosVersion.has_google_maps_api_key() ? "" : "no ")), constraints(0, 3)); row++; diff --git a/altosuilib/AltosUIVersion.java.in b/altosuilib/AltosUIVersion.java.in deleted file mode 100644 index f65b41cd..00000000 --- a/altosuilib/AltosUIVersion.java.in +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright © 2011 Keith Packard - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. - */ - -package org.altusmetrum.altosuilib_7; - -public class AltosUIVersion { - public final static String version = "@VERSION@"; - - public final static String google_maps_api_key = @GOOGLEKEY@; - - static boolean has_google_maps_api_key() { - return google_maps_api_key != null && google_maps_api_key.length() > 1; - } -} diff --git a/altosuilib/Makefile.am b/altosuilib/Makefile.am index 71f1c2de..a00e4a12 100644 --- a/altosuilib/Makefile.am +++ b/altosuilib/Makefile.am @@ -29,7 +29,6 @@ altosuilib_JAVA = \ AltosUIPreferencesBackend.java \ AltosUIPreferences.java \ AltosUISeries.java \ - AltosUIVersion.java \ AltosUSBDevice.java \ AltosVoice.java \ AltosDisplayThread.java \ diff --git a/configure.ac b/configure.ac index 0564f4f8..d7a14aa8 100644 --- a/configure.ac +++ b/configure.ac @@ -517,7 +517,6 @@ altoslib/Makefile altoslib/AltosVersion.java icon/Makefile altosuilib/Makefile -altosuilib/AltosUIVersion.java altosui/Makefile altosui/Info.plist altosui/altos-windows.nsi -- cgit v1.2.3 From 7975d088a4ac44c0943134fa41d0e3b88f50b98f Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 26 May 2015 19:47:04 -0700 Subject: altosdroid: Add offline map tab It's not very fancy yet, but it does zoom and pan, and show the path of the rocket with a line. Signed-off-by: Keith Packard --- .../src/org/altusmetrum/AltosDroid/AltosDroid.java | 1 + .../org/altusmetrum/AltosDroid/AltosViewPager.java | 3 + .../org/altusmetrum/AltosDroid/TabMapOffline.java | 481 +++++++++++++++++++++ altoslib/AltosMap.java | 2 +- altoslib/AltosMapTile.java | 25 +- altoslib/AltosPointInt.java | 10 + 6 files changed, 514 insertions(+), 8 deletions(-) create mode 100644 altosdroid/src/org/altusmetrum/AltosDroid/TabMapOffline.java (limited to 'altoslib') diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java index eff24b10..dd87614b 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java @@ -444,6 +444,7 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener { mTabsAdapter.addTab(mTabHost.newTabSpec("descent").setIndicator(create_tab_view("Descent")), TabDescent.class, null); mTabsAdapter.addTab(mTabHost.newTabSpec("landed").setIndicator(create_tab_view("Landed")), TabLanded.class, null); mTabsAdapter.addTab(mTabHost.newTabSpec("map").setIndicator(create_tab_view("Map")), TabMap.class, null); + mTabsAdapter.addTab(mTabHost.newTabSpec("offmap").setIndicator(create_tab_view("OffMap")), TabMapOffline.class, null); // Set up the custom title mTitle = (TextView) findViewById(R.id.title_left_text); diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosViewPager.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosViewPager.java index 223ae75a..e8299b09 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosViewPager.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosViewPager.java @@ -34,6 +34,9 @@ public class AltosViewPager extends ViewPager { @Override protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) { + if (v.getClass().getName().endsWith("MapView")) + return true; + if(v.getClass() != null && v.getClass().getPackage() != null && v.getClass().getPackage().getName() != null && diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabMapOffline.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabMapOffline.java new file mode 100644 index 00000000..42d80ad5 --- /dev/null +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabMapOffline.java @@ -0,0 +1,481 @@ +/* + * Copyright © 2013 Mike Beattie + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.AltosDroid; + +import java.util.Arrays; +import java.io.*; + +import org.altusmetrum.altoslib_7.*; + +import android.app.Activity; +import android.graphics.*; +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentTransaction; +import android.view.*; +import android.widget.*; +import android.location.Location; +import android.content.*; +import android.util.Log; + +public class TabMapOffline extends AltosDroidTab implements AltosMapInterface { + // Debugging + static final String TAG = "AltosDroid"; + static final boolean D = true; + + AltosDroid mAltosDroid; + + AltosMap map; + + Canvas canvas; + Paint paint; + + private boolean pad_set; + + private TextView mDistanceView; + private TextView mBearingView; + private TextView mTargetLatitudeView; + private TextView mTargetLongitudeView; + private TextView mReceiverLatitudeView; + private TextView mReceiverLongitudeView; + + private double mapAccuracy = -1; + + int stroke_width = 20; + + class MapView extends View implements ScaleGestureDetector.OnScaleGestureListener { + + ScaleGestureDetector scale_detector; + boolean scaling; + + protected void onDraw(Canvas view_canvas) { + canvas = view_canvas; + paint = new Paint(Paint.ANTI_ALIAS_FLAG); + paint.setStrokeWidth(stroke_width); + paint.setStrokeCap(Paint.Cap.ROUND); + paint.setStrokeJoin(Paint.Join.ROUND); + map.paint(); + canvas = null; + } + + public boolean onScale(ScaleGestureDetector detector) { + float f = detector.getScaleFactor(); + if (D) Log.d(TAG, String.format("onScale %f\n", f)); + if (f <= 0.8) { + map.set_zoom(map.get_zoom() - 1); + return true; + } + if (f >= 1.2) { + map.set_zoom(map.get_zoom() + 1); + return true; + } + return false; + } + + public boolean onScaleBegin(ScaleGestureDetector detector) { + if (D) Log.d(TAG, String.format("onScaleBegin %f\n", detector.getScaleFactor())); + return true; + } + + public void onScaleEnd(ScaleGestureDetector detector) { + if (D) Log.d(TAG, String.format("onScaleEnd %f\n", detector.getScaleFactor())); + } + + @Override + public boolean dispatchTouchEvent(MotionEvent event) { + scale_detector.onTouchEvent(event); + + if (scale_detector.isInProgress()) { + scaling = true; + } + + if (scaling) { + if(D) Log.d(TAG, "scale in progress\n"); + if (event.getAction() == MotionEvent.ACTION_UP) { + if (D) Log.d(TAG, "scale finished\n"); + scaling = false; + } + return true; + } + + if (event.getAction() == MotionEvent.ACTION_DOWN) { + if(D) Log.d(TAG, String.format("down event %g %g\n", event.getX(), event.getY())); + map.touch_start((int) event.getX(), (int) event.getY(), true); + } else if (event.getAction() == MotionEvent.ACTION_MOVE) { + if(D) Log.d(TAG, String.format("continue event %g %g\n", event.getX(), event.getY())); + map.touch_continue((int) event.getX(), (int) event.getY(), true); + } + return true; + } + + public MapView(Context context) { + super(context); + scale_detector = new ScaleGestureDetector(this.getContext(), this); + } + } + + class MapFragment extends Fragment { + MapView map_view; + + public View onCreateView(LayoutInflater inflator, ViewGroup container, Bundle savedInstanceState) { + map_view = new MapView(container.getContext()); + return map_view; + } + + public MapFragment() { + } + } + + MapFragment map_fragment; + + /* AltosMapInterface */ + + static final int WHITE = 0xffffffff; + static final int RED = 0xffff0000; + static final int PINK = 0xffff8080; + static final int YELLOW= 0xffffff00; + static final int CYAN = 0xff00ffff; + static final int BLUE = 0xff0000ff; + static final int BLACK = 0xff000000; + + public static final int stateColors[] = { + WHITE, // startup + WHITE, // idle + WHITE, // pad + RED, // boost + PINK, // fast + YELLOW, // coast + CYAN, // drogue + BLUE, // main + BLACK, // landed + BLACK, // invalid + CYAN, // stateless + }; + + class MapPath extends AltosMapPath { + + boolean line_in(AltosPointDouble a, AltosPointDouble b) { + final Rect bounds = canvas.getClipBounds(); + int left = (int) Math.floor (Math.min((float) a.x, (float) b.x) - stroke_width / 2.0f); + int right = (int) Math.ceil(Math.max((float) a.x, (float) b.x) + stroke_width / 2.0f); + int top = (int) Math.floor(Math.min((float) a.y, (float) b.y) - stroke_width / 2.0f); + int bottom = (int) Math.ceil(Math.max((float) a.y, (float) b.y) + stroke_width / 2.0f); + + return left < bounds.right && bounds.left < right && + top < bounds.bottom && bounds.top < bottom; + } + + public void paint(AltosMapTransform t) { + AltosPointDouble prev = null; + int cur_color = paint.getColor(); + + for (AltosMapPathPoint point : points) { + AltosPointDouble cur = t.screen(point.lat_lon); + + if (prev != null && line_in(prev, cur)) { + int color; + if (0 <= point.state && point.state < stateColors.length) + color = stateColors[point.state]; + else + color = stateColors[AltosLib.ao_flight_invalid]; + if (color != cur_color) { + paint.setColor(color); + cur_color = color; + } + canvas.drawLine((float) prev.x, (float) prev.y, (float) cur.x, (float) cur.y, paint); + } + prev = cur; + } + } + + public MapPath() { + stroke_width = TabMapOffline.this.stroke_width; + } + } + + public AltosMapPath new_path() { + return new MapPath(); + } + + class MapLine extends AltosMapLine { + public void paint(AltosMapTransform t) { + } + + public MapLine() { + } + } + + public AltosMapLine new_line() { + return new MapLine(); + } + + class MapImage implements AltosImage { + public Bitmap bitmap; + + public void flush() { + if (bitmap != null) { + bitmap.recycle(); + bitmap = null; + } + } + + public MapImage(File file) { + bitmap = BitmapFactory.decodeFile(file.getPath()); + } + } + + public AltosImage load_image(File file) throws Exception { + return new MapImage(file); + } + + class MapMark extends AltosMapMark { + public void paint(AltosMapTransform t) { + } + + MapMark(double lat, double lon, int state) { + super(lat, lon, state); + } + } + + public AltosMapMark new_mark(double lat, double lon, int state) { + return new MapMark(lat, lon, state); + } + + class MapTile extends AltosMapTile { + public void paint(AltosMapTransform t) { + AltosPointInt pt = new AltosPointInt(t.screen(upper_left)); + + if (canvas.quickReject(pt.x, pt.y, pt.x + px_size, pt.y + px_size, Canvas.EdgeType.AA)) + return; + + AltosImage altos_image = cache.get(this, store, px_size, px_size); + + MapImage map_image = (MapImage) altos_image; + + Bitmap bitmap = null; + + if (map_image != null) + bitmap = map_image.bitmap; + + if (bitmap != null) { + canvas.drawBitmap(bitmap, pt.x, pt.y, paint); + } else { + paint.setColor(0xff808080); + canvas.drawRect(pt.x, pt.y, pt.x + px_size, pt.y + px_size, paint); + if (t.has_location()) { + String message = null; + switch (status) { + case AltosMapTile.loading: + message = "Loading..."; + break; + case AltosMapTile.bad_request: + message = "Internal error"; + break; + case AltosMapTile.failed: + message = "Network error, check connection"; + break; + case AltosMapTile.forbidden: + message = "Too many requests, try later"; + break; + } + if (message != null) { + Rect bounds = new Rect(); + paint.getTextBounds(message, 0, message.length(), bounds); + + int width = bounds.right - bounds.left; + int height = bounds.bottom - bounds.top; + + float x = pt.x + px_size / 2.0f; + float y = pt.y + px_size / 2.0f; + x = x - width / 2.0f; + y = y + height / 2.0f; + paint.setColor(0xff000000); + canvas.drawText(message, 0, message.length(), x, y, paint); + } + } + } + + } + + public MapTile(AltosMapTileListener listener, AltosLatLon upper_left, AltosLatLon center, int zoom, int maptype, int px_size) { + super(listener, upper_left, center, zoom, maptype, px_size, 2); + } + + } + + public AltosMapTile new_tile(AltosMapTileListener listener, AltosLatLon upper_left, AltosLatLon center, int zoom, int maptype, int px_size) { + return new MapTile(listener, upper_left, center, zoom, maptype, px_size); + } + + public int width() { + if (map_fragment != null && map_fragment.map_view != null) + return map_fragment.map_view.getWidth(); + return 500; + } + + public int height() { + if (map_fragment != null && map_fragment.map_view != null) + return map_fragment.map_view.getHeight(); + return 500; + } + + public void repaint() { + this.getActivity().runOnUiThread(new Runnable() { + public void run() { + if (map_fragment != null && map_fragment.map_view != null) + map_fragment.map_view.invalidate(); + } + }); + } + + public void repaint(AltosRectangle t_damage) { + final AltosRectangle damage = t_damage; + this.getActivity().runOnUiThread(new Runnable() { + public void run() { + if (map_fragment != null && map_fragment.map_view != null) + map_fragment.map_view.invalidate(damage.x, damage.y, damage.x + damage.width, damage.y + damage.height); + } + }); + } + + public void set_zoom_label(String label) { + } + + @Override + public void onAttach(Activity activity) { + super.onAttach(activity); + mAltosDroid = (AltosDroid) activity; + mAltosDroid.registerTab(this); + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + View v = inflater.inflate(R.layout.tab_map, container, false); + + map_fragment = new MapFragment(); + map = new AltosMap(this); + mDistanceView = (TextView)v.findViewById(R.id.distance_value); + mBearingView = (TextView)v.findViewById(R.id.bearing_value); + mTargetLatitudeView = (TextView)v.findViewById(R.id.target_lat_value); + mTargetLongitudeView = (TextView)v.findViewById(R.id.target_lon_value); + mReceiverLatitudeView = (TextView)v.findViewById(R.id.receiver_lat_value); + mReceiverLongitudeView = (TextView)v.findViewById(R.id.receiver_lon_value); + return v; + } + + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + getChildFragmentManager().beginTransaction().add(R.id.map, map_fragment).commit(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + + mAltosDroid.unregisterTab(this); + mAltosDroid = null; + map_fragment = null; + +// Fragment fragment = (getFragmentManager().findFragmentById(R.id.map)); +// FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction(); +// ft.remove(fragment); +// ft.commit(); + } + + private void setupMap() { +/* + mMap = mMapFragment.getMap(); + if (mMap != null) { + mMap.setMyLocationEnabled(true); + mMap.getUiSettings().setTiltGesturesEnabled(false); + mMap.getUiSettings().setZoomControlsEnabled(false); + + mRocketMarker = mMap.addMarker( + // From: http://mapicons.nicolasmollet.com/markers/industry/military/missile-2/ + new MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.rocket)) + .position(new LatLng(0,0)) + .visible(false) + ); + + mPadMarker = mMap.addMarker( + new MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.pad)) + .position(new LatLng(0,0)) + .visible(false) + ); + + mPolyline = mMap.addPolyline( + new PolylineOptions().add(new LatLng(0,0), new LatLng(0,0)) + .width(3) + .color(Color.BLUE) + .visible(false) + ); + + mapLoaded = true; + } +*/ + } + + private void center(double lat, double lon, double accuracy) { + if (mapAccuracy < 0 || accuracy < mapAccuracy/10) { + if (map != null) + map.centre(lat, lon); + mapAccuracy = accuracy; + } + } + + public String tab_name() { return "offmap"; } + + public void show(AltosState state, AltosGreatCircle from_receiver, Location receiver) { + if (from_receiver != null) { + mBearingView.setText(String.format("%3.0f°", from_receiver.bearing)); + set_value(mDistanceView, AltosConvert.distance, 6, from_receiver.distance); + } + + if (state != null) { + map.show(state, null); + if (state.gps != null) { + mTargetLatitudeView.setText(AltosDroid.pos(state.gps.lat, "N", "S")); + mTargetLongitudeView.setText(AltosDroid.pos(state.gps.lon, "E", "W")); + if (state.gps.locked && state.gps.nsat >= 4) + center (state.gps.lat, state.gps.lon, 10); + } + } + + if (receiver != null) { + double accuracy; + + if (receiver.hasAccuracy()) + accuracy = receiver.getAccuracy(); + else + accuracy = 1000; + mReceiverLatitudeView.setText(AltosDroid.pos(receiver.getLatitude(), "N", "S")); + mReceiverLongitudeView.setText(AltosDroid.pos(receiver.getLongitude(), "E", "W")); + center (receiver.getLatitude(), receiver.getLongitude(), accuracy); + } + + } + + public TabMapOffline() { + } +} diff --git a/altoslib/AltosMap.java b/altoslib/AltosMap.java index b54c66cf..bdb60f0c 100644 --- a/altoslib/AltosMap.java +++ b/altoslib/AltosMap.java @@ -287,7 +287,7 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { AltosLatLon ul = transform.lat_lon(new AltosPointDouble(x, y)); AltosLatLon center = transform.lat_lon(new AltosPointDouble(x + AltosMap.px_size/2, y + AltosMap.px_size/2)); AltosMapTile tile = map_interface.new_tile(this, ul, center, zoom, maptype, - AltosMap.px_size); + px_size); tiles.put(point, tile); } } diff --git a/altoslib/AltosMapTile.java b/altoslib/AltosMapTile.java index 165f9e6f..ee9206ee 100644 --- a/altoslib/AltosMapTile.java +++ b/altoslib/AltosMapTile.java @@ -26,6 +26,7 @@ public abstract class AltosMapTile implements AltosFontListener { public int px_size; int zoom; int maptype; + int scale; public AltosMapStore store; public AltosMapCache cache; public int status; @@ -51,23 +52,28 @@ public abstract class AltosMapTile implements AltosFontListener { else format_string = "png"; return new File(AltosPreferences.mapdir(), - String.format("map-%c%.6f,%c%.6f-%s%d.%s", - chlat, lat, chlon, lon, maptype_string, zoom, format_string)); + String.format("map-%c%.6f,%c%.6f-%s%d%s.%s", + chlat, lat, chlon, lon, maptype_string, zoom, scale == 1 ? "" : String.format("-%d", scale), format_string)); } private String map_url() { String format_string; + int z = zoom; + if (maptype == AltosMap.maptype_hybrid || maptype == AltosMap.maptype_satellite || maptype == AltosMap.maptype_terrain) format_string = "jpg"; else format_string = "png32"; + for (int s = 1; s < scale; s <<= 1) + z--; + if (AltosVersion.has_google_maps_api_key()) - return String.format("http://maps.google.com/maps/api/staticmap?center=%.6f,%.6f&zoom=%d&size=%dx%d&sensor=false&maptype=%s&format=%s&key=%s", - center.lat, center.lon, zoom, px_size, px_size, AltosMap.maptype_names[maptype], format_string, AltosVersion.google_maps_api_key); + return String.format("http://maps.google.com/maps/api/staticmap?center=%.6f,%.6f&zoom=%d&size=%dx%d&scale=%d&sensor=false&maptype=%s&format=%s&key=%s", + center.lat, center.lon, z, px_size/scale, px_size/scale, scale, AltosMap.maptype_names[maptype], format_string, AltosVersion.google_maps_api_key); else - return String.format("http://maps.google.com/maps/api/staticmap?center=%.6f,%.6f&zoom=%d&size=%dx%d&sensor=false&maptype=%s&format=%s", - center.lat, center.lon, zoom, px_size, px_size, AltosMap.maptype_names[maptype], format_string); + return String.format("http://maps.google.com/maps/api/staticmap?center=%.6f,%.6f&zoom=%d&size=%dx%d&scale=%d&sensor=false&maptype=%s&format=%s", + center.lat, center.lon, z, px_size/scale, px_size/scale, AltosMap.maptype_names[maptype], format_string); } public void font_size_changed(int font_size) { @@ -96,7 +102,7 @@ public abstract class AltosMapTile implements AltosFontListener { public abstract void paint(AltosMapTransform t); - public AltosMapTile(AltosMapTileListener listener, AltosLatLon upper_left, AltosLatLon center, int zoom, int maptype, int px_size) { + public AltosMapTile(AltosMapTileListener listener, AltosLatLon upper_left, AltosLatLon center, int zoom, int maptype, int px_size, int scale) { this.listener = listener; this.upper_left = upper_left; this.cache = listener.cache(); @@ -110,8 +116,13 @@ public abstract class AltosMapTile implements AltosFontListener { this.zoom = zoom; this.maptype = maptype; this.px_size = px_size; + this.scale = scale; status = AltosMapTile.loading; store = AltosMapStore.get(map_url(), map_file()); } + + public AltosMapTile(AltosMapTileListener listener, AltosLatLon upper_left, AltosLatLon center, int zoom, int maptype, int px_size) { + this(listener, upper_left, center, zoom, maptype, px_size, 1); + } } diff --git a/altoslib/AltosPointInt.java b/altoslib/AltosPointInt.java index e133ae9c..5d884391 100644 --- a/altoslib/AltosPointInt.java +++ b/altoslib/AltosPointInt.java @@ -28,4 +28,14 @@ public class AltosPointInt { this.x = x; this.y = y; } + + public AltosPointInt(double x, double y) { + this.x = (int) (x + 0.5); + this.y = (int) (y + 0.5); + } + + public AltosPointInt(AltosPointDouble pt_d) { + this.x = (int) (pt_d.x + 0.5); + this.y = (int) (pt_d.y + 0.5); + } } -- cgit v1.2.3 From 103a50db50be55c2293468d273dd94472dd89d94 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 26 May 2015 23:05:49 -0700 Subject: altosdroid: Place icons on screen instead of drawing path This makes drawing a bunch faster, and locating stuff on the screen easier. Signed-off-by: Keith Packard --- .../org/altusmetrum/AltosDroid/TabMapOffline.java | 89 +++++++++++++--------- altoslib/AltosMap.java | 36 ++++++--- 2 files changed, 77 insertions(+), 48 deletions(-) (limited to 'altoslib') diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabMapOffline.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabMapOffline.java index ceabe7b4..6742e606 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabMapOffline.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabMapOffline.java @@ -38,9 +38,18 @@ public class TabMapOffline extends AltosDroidTab implements AltosMapInterface { AltosMap map; + AltosLatLon here; + Canvas canvas; Paint paint; + Bitmap pad_bitmap; + int pad_off_x, pad_off_y; + Bitmap rocket_bitmap; + int rocket_off_x, rocket_off_y; + Bitmap here_bitmap; + int here_off_x, here_off_y; + private boolean pad_set; private TextView mDistanceView; @@ -54,11 +63,31 @@ public class TabMapOffline extends AltosDroidTab implements AltosMapInterface { int stroke_width = 20; + private void draw_bitmap(AltosLatLon lat_lon, Bitmap bitmap, int off_x, int off_y) { + if (lat_lon != null) { + AltosPointInt pt = new AltosPointInt(map.transform.screen(lat_lon)); + + canvas.drawBitmap(bitmap, pt.x - off_x, pt.y - off_y, paint); + } + } + class MapView extends View implements ScaleGestureDetector.OnScaleGestureListener { ScaleGestureDetector scale_detector; boolean scaling; + private void draw_positions() { + if (map.last_position != null && here != null) { + AltosPointDouble rocket_screen = map.transform.screen(map.last_position); + AltosPointDouble here_screen = map.transform.screen(here); + paint.setColor(0xff8080ff); + canvas.drawLine((float) rocket_screen.x, (float) rocket_screen.y, + (float) here_screen.x, (float) here_screen.y, paint); + } + draw_bitmap(map.last_position, rocket_bitmap, rocket_off_x, rocket_off_y); + draw_bitmap(here, here_bitmap, here_off_x, here_off_y); + } + protected void onDraw(Canvas view_canvas) { canvas = view_canvas; paint = new Paint(Paint.ANTI_ALIAS_FLAG); @@ -66,6 +95,7 @@ public class TabMapOffline extends AltosDroidTab implements AltosMapInterface { paint.setStrokeCap(Paint.Cap.ROUND); paint.setStrokeJoin(Paint.Join.ROUND); map.paint(); + draw_positions(); canvas = null; } @@ -205,7 +235,7 @@ public class TabMapOffline extends AltosDroidTab implements AltosMapInterface { } public AltosMapPath new_path() { - return new MapPath(); + return null; } class MapLine extends AltosMapLine { @@ -217,7 +247,7 @@ public class TabMapOffline extends AltosDroidTab implements AltosMapInterface { } public AltosMapLine new_line() { - return new MapLine(); + return null; } class MapImage implements AltosImage { @@ -241,6 +271,8 @@ public class TabMapOffline extends AltosDroidTab implements AltosMapInterface { class MapMark extends AltosMapMark { public void paint(AltosMapTransform t) { + if (state == AltosLib.ao_flight_boost) + draw_bitmap(lat_lon, pad_bitmap, pad_off_x, pad_off_y); } MapMark(double lat, double lon, int state) { @@ -357,6 +389,20 @@ public class TabMapOffline extends AltosDroidTab implements AltosMapInterface { super.onAttach(activity); mAltosDroid = (AltosDroid) activity; mAltosDroid.registerTab(this); + pad_bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pad); + /* arrow at the bottom of the launchpad image */ + pad_off_x = pad_bitmap.getWidth() / 2; + pad_off_y = pad_bitmap.getHeight(); + + rocket_bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.rocket); + /* arrow at the bottom of the rocket image */ + rocket_off_x = rocket_bitmap.getWidth() / 2; + rocket_off_y = rocket_bitmap.getHeight(); + + here_bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_maps_indicator_current_position); + /* Center of the dot */ + here_off_x = here_bitmap.getWidth() / 2; + here_off_y = here_bitmap.getHeight() / 2; } @Override @@ -400,42 +446,12 @@ public class TabMapOffline extends AltosDroidTab implements AltosMapInterface { } private void setupMap() { -/* - mMap = mMapFragment.getMap(); - if (mMap != null) { - mMap.setMyLocationEnabled(true); - mMap.getUiSettings().setTiltGesturesEnabled(false); - mMap.getUiSettings().setZoomControlsEnabled(false); - - mRocketMarker = mMap.addMarker( - // From: http://mapicons.nicolasmollet.com/markers/industry/military/missile-2/ - new MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.rocket)) - .position(new LatLng(0,0)) - .visible(false) - ); - - mPadMarker = mMap.addMarker( - new MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.pad)) - .position(new LatLng(0,0)) - .visible(false) - ); - - mPolyline = mMap.addPolyline( - new PolylineOptions().add(new LatLng(0,0), new LatLng(0,0)) - .width(3) - .color(Color.BLUE) - .visible(false) - ); - - mapLoaded = true; - } -*/ } private void center(double lat, double lon, double accuracy) { if (mapAccuracy < 0 || accuracy < mapAccuracy/10) { if (map != null) - map.centre(lat, lon); + map.maybe_centre(lat, lon); mapAccuracy = accuracy; } } @@ -461,13 +477,14 @@ public class TabMapOffline extends AltosDroidTab implements AltosMapInterface { if (receiver != null) { double accuracy; + here = new AltosLatLon(receiver.getLatitude(), receiver.getLongitude()); if (receiver.hasAccuracy()) accuracy = receiver.getAccuracy(); else accuracy = 1000; - mReceiverLatitudeView.setText(AltosDroid.pos(receiver.getLatitude(), "N", "S")); - mReceiverLongitudeView.setText(AltosDroid.pos(receiver.getLongitude(), "E", "W")); - center (receiver.getLatitude(), receiver.getLongitude(), accuracy); + mReceiverLatitudeView.setText(AltosDroid.pos(here.lat, "N", "S")); + mReceiverLongitudeView.setText(AltosDroid.pos(here.lon, "E", "W")); + center (here.lat, here.lon, accuracy); } } diff --git a/altoslib/AltosMap.java b/altoslib/AltosMap.java index bdb60f0c..762054a3 100644 --- a/altoslib/AltosMap.java +++ b/altoslib/AltosMap.java @@ -58,8 +58,9 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { LinkedList marks = new LinkedList(); - AltosMapPath path; - AltosMapLine line; + AltosMapPath path; + AltosMapLine line; + public AltosLatLon last_position; boolean have_boost = false; boolean have_landed = false; @@ -195,8 +196,6 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { if (!gps.locked && gps.nsat < 4) return; - AltosMapRectangle damage = path.add(gps.lat, gps.lon, state.state); - switch (state.state) { case AltosLib.ao_flight_boost: if (!have_boost) { @@ -212,8 +211,15 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { break; } - if (damage != null) - repaint(damage, AltosMapPath.stroke_width); + if (path != null) { + AltosMapRectangle damage = path.add(gps.lat, gps.lon, state.state); + + if (damage != null) + repaint(damage, AltosMapPath.stroke_width); + } + + last_position = new AltosLatLon(gps.lat, gps.lon); + maybe_centre(gps.lat, gps.lon); } @@ -323,9 +329,11 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { mark.paint(transform); } - path.paint(transform); + if (path != null) + path.paint(transform); - line.paint(transform); + if (line != null) + line.paint(transform); } /* AltosMapTileListener methods */ @@ -368,13 +376,17 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { } private void line_start(int x, int y) { - line.pressed(new AltosPointInt(x, y), transform); - repaint(); + if (line != null) { + line.pressed(new AltosPointInt(x, y), transform); + repaint(); + } } private void line(int x, int y) { - line.dragged(new AltosPointInt(x, y), transform); - repaint(); + if (line != null) { + line.dragged(new AltosPointInt(x, y), transform); + repaint(); + } } public void touch_start(int x, int y, boolean is_drag) { -- cgit v1.2.3 From 519d477cb752d9cdba78a4daa32b1f547bf889b4 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Wed, 27 May 2015 15:30:29 -0700 Subject: altoslib: Add AltosLaunchSite bits This asynchronously fetches the list of available launch sites from the standard location and notifies the caller when finished. Signed-off-by: Keith Packard --- altoslib/AltosLaunchSite.java | 57 +++++++++++++++++++++++++++ altoslib/AltosLaunchSiteListener.java | 26 +++++++++++++ altoslib/AltosLaunchSites.java | 73 +++++++++++++++++++++++++++++++++++ altoslib/Makefile.am | 3 ++ 4 files changed, 159 insertions(+) create mode 100644 altoslib/AltosLaunchSite.java create mode 100644 altoslib/AltosLaunchSiteListener.java create mode 100644 altoslib/AltosLaunchSites.java (limited to 'altoslib') diff --git a/altoslib/AltosLaunchSite.java b/altoslib/AltosLaunchSite.java new file mode 100644 index 00000000..70a4bb58 --- /dev/null +++ b/altoslib/AltosLaunchSite.java @@ -0,0 +1,57 @@ +/* + * Copyright © 2015 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.altoslib_7; + +import java.io.*; +import java.lang.*; +import java.util.*; +import java.text.*; +import java.util.concurrent.*; + +public class AltosLaunchSite { + public String name; + public double latitude; + public double longitude; + + public String toString() { + return name; + } + + public AltosLaunchSite(String in_name, double in_latitude, double in_longitude) { + name = in_name; + latitude = in_latitude; + longitude = in_longitude; + } + + public AltosLaunchSite(String line) throws ParseException { + String[] elements = line.split(":"); + + if (elements.length < 3) + throw new ParseException(String.format("Invalid site line %s", line), 0); + + name = elements[0]; + + try { + latitude = AltosParse.parse_double_net(elements[1]); + longitude = AltosParse.parse_double_net(elements[2]); + } catch (ParseException pe) { + throw new ParseException(String.format("Invalid site line %s", line), 0); + } + } +} + diff --git a/altoslib/AltosLaunchSiteListener.java b/altoslib/AltosLaunchSiteListener.java new file mode 100644 index 00000000..21015909 --- /dev/null +++ b/altoslib/AltosLaunchSiteListener.java @@ -0,0 +1,26 @@ +/* + * Copyright © 2015 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ +package org.altusmetrum.altoslib_7; + +import java.io.*; +import java.lang.*; +import java.util.*; +import java.util.concurrent.*; + +public interface AltosLaunchSiteListener { + public abstract void notify_launch_sites(List sites); +} diff --git a/altoslib/AltosLaunchSites.java b/altoslib/AltosLaunchSites.java new file mode 100644 index 00000000..0922bcea --- /dev/null +++ b/altoslib/AltosLaunchSites.java @@ -0,0 +1,73 @@ +/* + * Copyright © 2015 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.altoslib_7; + +import java.io.*; +import java.lang.*; +import java.util.*; +import java.util.concurrent.*; +import java.net.*; +import java.text.*; + +public class AltosLaunchSites extends Thread { + URL url; + LinkedList sites; + AltosLaunchSiteListener listener; + + void notify_complete() { + listener.notify_launch_sites(sites); + } + + void add(AltosLaunchSite site) { + sites.add(site); + } + + void add(String line) { + try { + add(new AltosLaunchSite(line)); + } catch (ParseException pe) { + System.out.printf("parse exception %s\n", pe.toString()); + } + } + + public void run() { + try { + url = new URL(AltosLib.launch_sites_url); + URLConnection uc = url.openConnection(); + + InputStreamReader in_stream = new InputStreamReader(uc.getInputStream(), AltosLib.unicode_set); + BufferedReader in = new BufferedReader(in_stream); + + for (;;) { + String line = in.readLine(); + if (line == null) + break; + add(line); + } + } catch (Exception e) { + } finally { + notify_complete(); + } + } + + public AltosLaunchSites(AltosLaunchSiteListener listener) { + sites = new LinkedList(); + this.listener = listener; + start(); + } +} diff --git a/altoslib/Makefile.am b/altoslib/Makefile.am index 481c974f..de13c1ec 100644 --- a/altoslib/Makefile.am +++ b/altoslib/Makefile.am @@ -151,6 +151,9 @@ altoslib_JAVA = \ AltosRectangle.java \ AltosFlightDisplay.java \ AltosFontListener.java \ + AltosLaunchSite.java \ + AltosLaunchSiteListener.java \ + AltosLaunchSites.java \ AltosVersion.java JAR=altoslib_$(ALTOSLIB_VERSION).jar -- cgit v1.2.3 From 756f501593365b80cfa6f7ca871da3291bbde67a Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Wed, 27 May 2015 22:43:53 -0700 Subject: altoslib: Start with map empty Don't load images from 0,0 for no good reason; wait until someone sets a desired lat/lon Signed-off-by: Keith Packard --- altoslib/AltosMap.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'altoslib') diff --git a/altoslib/AltosMap.java b/altoslib/AltosMap.java index 762054a3..d39c3302 100644 --- a/altoslib/AltosMap.java +++ b/altoslib/AltosMap.java @@ -150,8 +150,10 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { } public void set_transform() { - transform = new AltosMapTransform(width(), height(), zoom, centre); - repaint(); + if (centre != null) { + transform = new AltosMapTransform(width(), height(), zoom, centre); + repaint(); + } } private void set_zoom_label() { @@ -285,6 +287,7 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { tiles.remove(point); cache.set_cache_size((width() / AltosMap.px_size + 2) * (height() / AltosMap.px_size + 2)); + for (int y = (int) upper_left.y; y <= lower_right.y; y += AltosMap.px_size) { for (int x = (int) upper_left.x; x <= lower_right.x; x += AltosMap.px_size) { AltosPointInt point = new AltosPointInt(x, y); @@ -319,7 +322,8 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { } public void paint() { - make_tiles(); + if (centre != null) + make_tiles(); for (AltosMapTile tile : tiles.values()) tile.paint(transform); @@ -411,6 +415,5 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { line = map_interface.new_line(); path = map_interface.new_path(); set_zoom_label(); - centre(0, 0); } } -- cgit v1.2.3 From ccd557c846eed37328d6799f36e61308bcbb678a Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Wed, 27 May 2015 23:11:58 -0700 Subject: altoslib: Provide toString method for AltosLatLon Makes printing them easier. Signed-off-by: Keith Packard --- altoslib/AltosLatLon.java | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'altoslib') diff --git a/altoslib/AltosLatLon.java b/altoslib/AltosLatLon.java index e0fd45e7..dc606ccb 100644 --- a/altoslib/AltosLatLon.java +++ b/altoslib/AltosLatLon.java @@ -27,6 +27,10 @@ public class AltosLatLon { return lat == other.lat && lon == other.lon; } + public String toString() { + return String.format("%f/%f", lat, lon); + } + public AltosLatLon(double lat, double lon) { this.lat = lat; this.lon = lon; -- cgit v1.2.3 From 3b4e6da65158a434905dc652e46c69d2c38cea7f Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Wed, 27 May 2015 23:12:34 -0700 Subject: altoslib: Add map loading helper class This adds the AltosMapLoader class, which iterates over a sequence of zoom levels and formats to get local copies of a desired launch site. Signed-off-by: Keith Packard --- altoslib/AltosMapLoader.java | 143 +++++++++++++++++++++++++++++++++++ altoslib/AltosMapLoaderListener.java | 26 +++++++ altoslib/Makefile.am | 2 + 3 files changed, 171 insertions(+) create mode 100644 altoslib/AltosMapLoader.java create mode 100644 altoslib/AltosMapLoaderListener.java (limited to 'altoslib') diff --git a/altoslib/AltosMapLoader.java b/altoslib/AltosMapLoader.java new file mode 100644 index 00000000..5db20cf8 --- /dev/null +++ b/altoslib/AltosMapLoader.java @@ -0,0 +1,143 @@ +/* + * Copyright © 2015 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.altoslib_7; + +import java.io.*; +import java.util.*; +import java.text.*; +import java.lang.Math; +import java.net.URL; +import java.net.URLConnection; + +public class AltosMapLoader implements AltosMapTileListener { + AltosMapLoaderListener listener; + + double latitude, longitude; + int min_z; + int max_z; + int cur_z; + int all_types; + int cur_type; + int radius; + + int tiles_per_layer; + int tiles_loaded; + int layers_total; + int layers_loaded; + + AltosMap map; + AltosMapCache cache; + + public void do_load() { + map.set_zoom(cur_z + AltosMap.default_zoom); + map.set_maptype(cur_type); + map.set_load_params(latitude, longitude, radius, this); + } + + public int next_type(int start) { + int next_type; + for (next_type = start; + next_type <= AltosMap.maptype_terrain && (all_types & (1 << next_type)) == 0; + next_type++) + ; + return next_type; + } + + public void next_load() { + int next_type = next_type(cur_type + 1); + + if (next_type > AltosMap.maptype_terrain) { + if (cur_z == max_z) { + return; + } else { + cur_z++; + } + next_type = next_type(0); + } + cur_type = next_type; + do_load(); + } + + private void start_load() { + + cur_z = min_z; + int ntype = 0; + + for (int t = AltosMap.maptype_hybrid; t <= AltosMap.maptype_terrain; t++) + if ((all_types & (1 << t)) != 0) + ntype++; + if (ntype == 0) { + all_types = (1 << AltosMap.maptype_hybrid); + ntype = 1; + } + + cur_type = next_type(0); + tiles_per_layer = (radius * 2 + 1) * (radius * 2 + 1); + layers_total = (max_z - min_z + 1) * ntype; + layers_loaded = 0; + tiles_loaded = 0; + + listener.loader_start(layers_total * tiles_per_layer); + do_load(); + } + + public void load(double latitude, double longitude, int min_z, int max_z, int radius, int all_types) { + this.latitude = latitude; + this.longitude = longitude; + this.min_z = min_z; + this.max_z = max_z; + this.radius = radius; + this.all_types = all_types; + start_load(); + } + + public synchronized void notify_tile(AltosMapTile tile, int status) { + boolean do_next = false; + if (status == AltosMapTile.loading) + return; + + if (layers_loaded >= layers_total) + return; + + ++tiles_loaded; + + if (tiles_loaded == tiles_per_layer) { + tiles_loaded = 0; + ++layers_loaded; + if (layers_loaded == layers_total) { + listener.loader_done(layers_total * tiles_per_layer); + return; + } else { + do_next = true; + } + } + listener.loader_notify(layers_loaded * tiles_per_layer + tiles_loaded, + layers_total * tiles_per_layer, tile.store.file.toString()); + if (do_next) + next_load(); + } + + public AltosMapCache cache() { return cache; } + + public AltosMapLoader(AltosMap map, AltosMapCache cache, + AltosMapLoaderListener listener) { + this.map = map; + this.cache = cache; + this.listener = listener; + } +} diff --git a/altoslib/AltosMapLoaderListener.java b/altoslib/AltosMapLoaderListener.java new file mode 100644 index 00000000..79f8b9df --- /dev/null +++ b/altoslib/AltosMapLoaderListener.java @@ -0,0 +1,26 @@ +/* + * Copyright © 2015 Keith Packard + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +package org.altusmetrum.altoslib_7; + +public interface AltosMapLoaderListener { + public abstract void loader_start(int max); + + public abstract void loader_notify(int cur, int max, String name); + + public abstract void loader_done(int max); +} diff --git a/altoslib/Makefile.am b/altoslib/Makefile.am index de13c1ec..a6b178fa 100644 --- a/altoslib/Makefile.am +++ b/altoslib/Makefile.am @@ -154,6 +154,8 @@ altoslib_JAVA = \ AltosLaunchSite.java \ AltosLaunchSiteListener.java \ AltosLaunchSites.java \ + AltosMapLoaderListener.java \ + AltosMapLoader.java \ AltosVersion.java JAR=altoslib_$(ALTOSLIB_VERSION).jar -- cgit v1.2.3 From ba698c2cc48677735046d0881df9c180674e4082 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Thu, 28 May 2015 01:01:23 -0700 Subject: altoslib: Pass all map loader params to set_load_params Add zoom and map type to the param list so we don't call set_zoom and set_maptype separately, which only causes lots of extra image loads to get started unnecessarily. Signed-off-by: Keith Packard --- altoslib/AltosMap.java | 10 ++++++++-- altoslib/AltosMapLoader.java | 11 +++-------- 2 files changed, 11 insertions(+), 10 deletions(-) (limited to 'altoslib') diff --git a/altoslib/AltosMap.java b/altoslib/AltosMap.java index d39c3302..85f95eef 100644 --- a/altoslib/AltosMap.java +++ b/altoslib/AltosMap.java @@ -248,7 +248,9 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { public void add_mark(double lat, double lon, int state) { synchronized(marks) { - marks.add(map_interface.new_mark(lat, lon, state)); + AltosMapMark mark = map_interface.new_mark(lat, lon, state); + if (mark != null) + marks.add(mark); } repaint(); } @@ -303,11 +305,15 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { } } - public void set_load_params(double lat, double lon, int radius, AltosMapTileListener listener) { + public void set_load_params(int new_zoom, int new_type, double lat, double lon, int radius, AltosMapTileListener listener) { + if (AltosMap.min_zoom <= new_zoom && new_zoom <= AltosMap.max_zoom) + zoom = new_zoom; + maptype = new_type; load_centre = new AltosLatLon(lat, lon); load_radius = radius; load_listener = listener; centre(lat, lon); + tiles.clear(); make_tiles(); for (AltosMapTile tile : tiles.values()) { tile.add_store_listener(this); diff --git a/altoslib/AltosMapLoader.java b/altoslib/AltosMapLoader.java index 5db20cf8..cf7169ba 100644 --- a/altoslib/AltosMapLoader.java +++ b/altoslib/AltosMapLoader.java @@ -41,12 +41,9 @@ public class AltosMapLoader implements AltosMapTileListener { int layers_loaded; AltosMap map; - AltosMapCache cache; public void do_load() { - map.set_zoom(cur_z + AltosMap.default_zoom); - map.set_maptype(cur_type); - map.set_load_params(latitude, longitude, radius, this); + map.set_load_params(cur_z + AltosMap.default_zoom, cur_type, latitude, longitude, radius, this); } public int next_type(int start) { @@ -132,12 +129,10 @@ public class AltosMapLoader implements AltosMapTileListener { next_load(); } - public AltosMapCache cache() { return cache; } + public AltosMapCache cache() { return map.cache(); } - public AltosMapLoader(AltosMap map, AltosMapCache cache, - AltosMapLoaderListener listener) { + public AltosMapLoader(AltosMap map, AltosMapLoaderListener listener) { this.map = map; - this.cache = cache; this.listener = listener; } } -- cgit v1.2.3 From 0beb02f1848e34892cca6e34ba83d6ca836d6df2 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Fri, 29 May 2015 09:49:30 -0700 Subject: altoslib: Require 'debug' hook in AltosMapInterface This lets the map users redirect debug messages as appropriate Signed-off-by: Keith Packard --- altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java | 1 + altoslib/AltosMap.java | 10 ++++++++++ altoslib/AltosMapInterface.java | 2 ++ altosuilib/AltosUIMapNew.java | 4 ++++ 4 files changed, 17 insertions(+) (limited to 'altoslib') diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java index cc1acd67..f1f1b6de 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidTab.java @@ -57,6 +57,7 @@ public abstract class AltosDroidTab extends Fragment implements AltosUnitsListen public void set_visible(boolean visible) { FragmentTransaction ft = AltosDroid.fm.beginTransaction(); + AltosDebug.debug("set visible %b %s\n", visible, tab_name()); if (visible) { AltosState state = last_state; AltosGreatCircle from_receiver = last_from_receiver; diff --git a/altoslib/AltosMap.java b/altoslib/AltosMap.java index 85f95eef..d99730b4 100644 --- a/altoslib/AltosMap.java +++ b/altoslib/AltosMap.java @@ -109,6 +109,10 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { return map_interface.height(); } + public void debug(String format, Object ... arguments) { + map_interface.debug(format, arguments); + } + public AltosPointInt floor(AltosPointDouble point) { return new AltosPointInt ((int) Math.floor(point.x / AltosMap.px_size) * AltosMap.px_size, (int) Math.floor(point.y / AltosMap.px_size) * AltosMap.px_size); @@ -150,6 +154,7 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { } public void set_transform() { + debug("set_transform, centre is %s\n", centre); if (centre != null) { transform = new AltosMapTransform(width(), height(), zoom, centre); repaint(); @@ -376,6 +381,11 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { int dx = x - drag_start.x; int dy = y - drag_start.y; + if (transform == null) { + debug("Transform not set in drag\n"); + return; + } + AltosLatLon new_centre = transform.screen_lat_lon(new AltosPointInt(width() / 2 - dx, height() / 2 - dy)); centre(new_centre); drag_start = new AltosPointInt(x, y); diff --git a/altoslib/AltosMapInterface.java b/altoslib/AltosMapInterface.java index 195574e9..e6cb5971 100644 --- a/altoslib/AltosMapInterface.java +++ b/altoslib/AltosMapInterface.java @@ -40,4 +40,6 @@ public interface AltosMapInterface { public abstract void repaint(AltosRectangle damage); public abstract void set_zoom_label(String label); + + public abstract void debug(String format, Object ... arguments); } diff --git a/altosuilib/AltosUIMapNew.java b/altosuilib/AltosUIMapNew.java index 05f47b53..3efffb00 100644 --- a/altosuilib/AltosUIMapNew.java +++ b/altosuilib/AltosUIMapNew.java @@ -369,6 +369,10 @@ public class AltosUIMapNew extends JComponent implements AltosFlightDisplay, Alt zoom_label.setText(label); } + public void debug(String format, Object ... arguments) { + System.out.printf(format, arguments); + } + /* AltosFlightDisplay interface */ public void set_font() { -- cgit v1.2.3 From f79d569dfe333621d63a1d4001c85a88f736ad58 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Sat, 6 Jun 2015 20:35:32 -0700 Subject: altoslib: Add preferences for saving/restoring multiple flight states Signed-off-by: Keith Packard --- altoslib/AltosPreferences.java | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'altoslib') diff --git a/altoslib/AltosPreferences.java b/altoslib/AltosPreferences.java index 2fad96fd..cdff93f6 100644 --- a/altoslib/AltosPreferences.java +++ b/altoslib/AltosPreferences.java @@ -19,6 +19,7 @@ package org.altusmetrum.altoslib_7; import java.io.*; import java.util.*; +import java.text.*; public class AltosPreferences { public static AltosPreferencesBackend backend = null; @@ -42,7 +43,9 @@ public class AltosPreferences { public final static String logfilePreferenceFormat = "LOGFILE-%d"; /* state preference name */ + public final static String statePreferenceHead = "STATE-"; public final static String statePreferenceFormat = "STATE-%d"; + public final static String statePreferenceLatest = "STATE-LATEST"; /* voice preference name */ public final static String voicePreference = "VOICE"; @@ -360,12 +363,43 @@ public class AltosPreferences { synchronized(backend) { backend.putBytes(String.format(statePreferenceFormat, serial), bytes); + backend.putInt(statePreferenceLatest, serial); flush_preferences(); } } catch (IOException ie) { } } + public static ArrayList list_states() { + String[] keys = backend.keys(); + ArrayList states = new ArrayList(); + + for (String key : keys) { + if (key.startsWith(statePreferenceHead)) { + try { + int serial = AltosParse.parse_int(key.substring(statePreferenceHead.length())); + states.add(serial); + } catch (ParseException pe) { + } + } + } + return states; + } + + public static void remove_state(int serial) { + synchronized(backend) { + backend.remove(String.format(statePreferenceFormat, serial)); + } + } + + public static int latest_state() { + int latest = 0; + synchronized (backend) { + latest = backend.getInt(statePreferenceLatest, 0); + } + return latest; + } + public static AltosSavedState state(int serial) { byte[] bytes = null; -- cgit v1.2.3 From 75682a5a18f28acf8f4a61a0d45dad461218186e Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 16 Jun 2015 23:38:07 -0700 Subject: altoslib: Set product for idle monitor This lets the UI show the product name Signed-off-by: Keith Packard --- altoslib/AltosIdleFetch.java | 1 + 1 file changed, 1 insertion(+) (limited to 'altoslib') diff --git a/altoslib/AltosIdleFetch.java b/altoslib/AltosIdleFetch.java index e1658683..9ff5a53e 100644 --- a/altoslib/AltosIdleFetch.java +++ b/altoslib/AltosIdleFetch.java @@ -146,6 +146,7 @@ public class AltosIdleFetch implements AltosStateUpdate { state.set_callsign(config_data.callsign); state.set_ground_accel(config_data.accel_cal_plus); state.set_accel_g(config_data.accel_cal_plus, config_data.accel_cal_minus); + state.set_product(config_data.product); for (AltosIdler idler : idlers) { if (idler.matches(config_data)) { idler.update_state(state, link, config_data); -- cgit v1.2.3 From 5cacce8099bfc4fa4019538ac88be00bd2023865 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 16 Jun 2015 23:40:34 -0700 Subject: altoslib: Let the application disable the link cancel dialog This lets the application control whether to pop up the cancel dialog when the link isn't working. Signed-off-by: Keith Packard --- altoslib/AltosLink.java | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'altoslib') diff --git a/altoslib/AltosLink.java b/altoslib/AltosLink.java index fca8beb8..4f3a1ed2 100644 --- a/altoslib/AltosLink.java +++ b/altoslib/AltosLink.java @@ -86,10 +86,17 @@ public abstract class AltosLink implements Runnable { public boolean reply_abort; public int in_reply; + boolean cancel_enable = true; + + public void set_cancel_enable(boolean e) { + cancel_enable = e; + } boolean reply_timeout_shown = false; private boolean check_reply_timeout() { + if (!cancel_enable) + return false; if (!reply_timeout_shown) reply_timeout_shown = show_reply_timeout(); return reply_abort; -- cgit v1.2.3 From 76532162d63239b00a51dd0ff6b1356b07b62d2d Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 16 Jun 2015 23:41:51 -0700 Subject: altoslib: Expose public function to set state.product Just adds a setter function for this value. Signed-off-by: Keith Packard --- altoslib/AltosState.java | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'altoslib') diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java index ad032a16..a120e0c7 100644 --- a/altoslib/AltosState.java +++ b/altoslib/AltosState.java @@ -1040,6 +1040,10 @@ public class AltosState implements Cloneable, Serializable { return AltosLib.state_name(state); } + public void set_product(String product) { + this.product = product; + } + public void set_state(int state) { if (state != AltosLib.ao_flight_invalid) { this.state = state; -- cgit v1.2.3 From 469be0a57dc9932c26f9c38986d22f6e8b2fd6ed Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 16 Jun 2015 23:42:22 -0700 Subject: altoslib: Remove debug output from AltosMap It's just annoying now. Signed-off-by: Keith Packard --- altoslib/AltosMap.java | 1 - 1 file changed, 1 deletion(-) (limited to 'altoslib') diff --git a/altoslib/AltosMap.java b/altoslib/AltosMap.java index d99730b4..1504120c 100644 --- a/altoslib/AltosMap.java +++ b/altoslib/AltosMap.java @@ -154,7 +154,6 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { } public void set_transform() { - debug("set_transform, centre is %s\n", centre); if (centre != null) { transform = new AltosMapTransform(width(), height(), zoom, centre); repaint(); -- cgit v1.2.3 From 0cc03210d5d53d12604688f294b6ca39e3a025de Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Sat, 20 Jun 2015 09:35:26 -0700 Subject: altoslib/altosuilib: Fix equals methods, add hashCode Whenever we use a class as a HashMap key, that class needs to override the equals(Object) and hashCode() methods. Otherwise, the hash table won't work right. Signed-off-by: Keith Packard --- altoslib/AltosFrequency.java | 13 +++++++++++++ altoslib/AltosLatLon.java | 12 ++++++++++-- altoslib/AltosMapPathPoint.java | 13 +++++++++++-- altoslib/AltosMapStore.java | 13 ++++++++++++- altoslib/AltosPointDouble.java | 14 +++++++++++++- altoslib/AltosPointInt.java | 14 +++++++++++++- altosuilib/AltosBTDevice.java | 11 +++++++---- altosuilib/AltosScanUI.java | 13 +++++++++++-- 8 files changed, 90 insertions(+), 13 deletions(-) (limited to 'altoslib') diff --git a/altoslib/AltosFrequency.java b/altoslib/AltosFrequency.java index 15ace0c2..6d42fd69 100644 --- a/altoslib/AltosFrequency.java +++ b/altoslib/AltosFrequency.java @@ -21,6 +21,19 @@ public class AltosFrequency { public double frequency; public String description; + public int hashCode() { + return new Double(frequency).hashCode(); + } + + public boolean equals(Object o) { + if (o == null) + return false; + if (!(o instanceof AltosFrequency)) + return false; + AltosFrequency other = (AltosFrequency) o; + return other.frequency == frequency; + } + public String toString() { return String.format("%7.3f MHz %-20s", frequency, description); diff --git a/altoslib/AltosLatLon.java b/altoslib/AltosLatLon.java index dc606ccb..1bcf6fd8 100644 --- a/altoslib/AltosLatLon.java +++ b/altoslib/AltosLatLon.java @@ -21,9 +21,17 @@ public class AltosLatLon { public double lat; public double lon; - public boolean equals(AltosLatLon other) { - if (other == null) + public int hashCode() { + return new Double(lat).hashCode() ^ new Double(lon).hashCode(); + } + + public boolean equals(Object o) { + if (o == null) return false; + if (!(o instanceof AltosLatLon)) + return false; + + AltosLatLon other = (AltosLatLon) o; return lat == other.lat && lon == other.lon; } diff --git a/altoslib/AltosMapPathPoint.java b/altoslib/AltosMapPathPoint.java index 9f82f02a..0d54744a 100644 --- a/altoslib/AltosMapPathPoint.java +++ b/altoslib/AltosMapPathPoint.java @@ -26,10 +26,19 @@ public class AltosMapPathPoint { public AltosLatLon lat_lon; public int state; - public boolean equals(AltosMapPathPoint other) { - if (other == null) + public int hashCode() { + return lat_lon.hashCode() ^ state; + } + + public boolean equals(Object o) { + if (o == null) return false; + if (!(o instanceof AltosMapPathPoint)) + return false; + + AltosMapPathPoint other = (AltosMapPathPoint) o; + return lat_lon.equals(other.lat_lon) && state == other.state; } diff --git a/altoslib/AltosMapStore.java b/altoslib/AltosMapStore.java index 1107bec2..88412593 100644 --- a/altoslib/AltosMapStore.java +++ b/altoslib/AltosMapStore.java @@ -175,7 +175,18 @@ public class AltosMapStore { } } - public boolean equals(AltosMapStore other) { + public int hashCode() { + return url.hashCode(); + } + + public boolean equals(Object o) { + if (o == null) + return false; + + if (!(o instanceof AltosMapStore)) + return false; + + AltosMapStore other = (AltosMapStore) o; return url.equals(other.url); } diff --git a/altoslib/AltosPointDouble.java b/altoslib/AltosPointDouble.java index 4a940676..45e7785e 100644 --- a/altoslib/AltosPointDouble.java +++ b/altoslib/AltosPointDouble.java @@ -20,7 +20,19 @@ package org.altusmetrum.altoslib_7; public class AltosPointDouble { public double x, y; - public boolean equals(AltosPointDouble n) { + public int hashCode() { + return new Double(x).hashCode() ^ new Double(y).hashCode(); + } + + public boolean equals(Object o) { + if (o == null) + return false; + + if (!(o instanceof AltosPointDouble)) + return false; + + AltosPointDouble n = (AltosPointDouble) o; + return n.x == x && n.y == y; } diff --git a/altoslib/AltosPointInt.java b/altoslib/AltosPointInt.java index 5d884391..a7dd00f7 100644 --- a/altoslib/AltosPointInt.java +++ b/altoslib/AltosPointInt.java @@ -20,7 +20,19 @@ package org.altusmetrum.altoslib_7; public class AltosPointInt { public int x, y; - public boolean equals(AltosPointInt n) { + public int hashCode() { + return x ^ y; + } + + public boolean equals(Object o) { + if (o == null) + return false; + + if (!(o instanceof AltosPointInt)) + return false; + + AltosPointInt n = (AltosPointInt) o; + return n.x == x && n.y == y; } diff --git a/altosuilib/AltosBTDevice.java b/altosuilib/AltosBTDevice.java index 76221df2..d6eed64d 100644 --- a/altosuilib/AltosBTDevice.java +++ b/altosuilib/AltosBTDevice.java @@ -104,17 +104,20 @@ public class AltosBTDevice extends altos_bt_device implements AltosDevice { return false; } + public int hashCode() { + return getName().hashCode() ^ getAddr().hashCode(); + } + public boolean equals(Object o) { + if (o == null) + return false; + if (!(o instanceof AltosBTDevice)) return false; AltosBTDevice other = (AltosBTDevice) o; return getName().equals(other.getName()) && getAddr().equals(other.getAddr()); } - public int hashCode() { - return getName().hashCode() ^ getAddr().hashCode(); - } - public AltosBTDevice(String name, String addr) { AltosUILib.load_library(); libaltos.altos_bt_fill_in(name, addr,this); diff --git a/altosuilib/AltosScanUI.java b/altosuilib/AltosScanUI.java index 03115824..fccfbaee 100644 --- a/altosuilib/AltosScanUI.java +++ b/altosuilib/AltosScanUI.java @@ -62,9 +62,18 @@ class AltosScanResult { rate = in_rate; } - public boolean equals(AltosScanResult other) { + public int hashCode() { + return serial ^ frequency.hashCode() ^ telemetry ^ rate; + } + + public boolean equals(Object o) { + if (o == null) + return false; + if (!(o instanceof AltosScanResult)) + return false; + AltosScanResult other = (AltosScanResult) o; return (serial == other.serial && - frequency.frequency == other.frequency.frequency && + frequency.equals(other.frequency) && telemetry == other.telemetry && rate == other.rate); } -- cgit v1.2.3 From 3882e358b6f2970cb1afebcf2a71da34a57002df Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Sat, 20 Jun 2015 11:53:24 -0700 Subject: altoslib: Clean up map tile removal Remove them while walking the hash table, rather than creating a list to remove. Signed-off-by: Keith Packard --- altoslib/AltosMap.java | 14 ++++---------- altoslib/AltosMapTransform.java | 4 ++++ 2 files changed, 8 insertions(+), 10 deletions(-) (limited to 'altoslib') diff --git a/altoslib/AltosMap.java b/altoslib/AltosMap.java index 1504120c..59420d4b 100644 --- a/altoslib/AltosMap.java +++ b/altoslib/AltosMap.java @@ -280,29 +280,23 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { upper_left = floor(transform.screen_point(new AltosPointInt(0, 0))); lower_right = floor(transform.screen_point(new AltosPointInt(width(), height()))); } - LinkedList to_remove = new LinkedList(); - for (AltosPointInt point : tiles.keySet()) { if (point.x < upper_left.x || lower_right.x < point.x || point.y < upper_left.y || lower_right.y < point.y) { - to_remove.add(point); + tiles.remove(point); } } - for (AltosPointInt point : to_remove) - tiles.remove(point); - cache.set_cache_size((width() / AltosMap.px_size + 2) * (height() / AltosMap.px_size + 2)); for (int y = (int) upper_left.y; y <= lower_right.y; y += AltosMap.px_size) { for (int x = (int) upper_left.x; x <= lower_right.x; x += AltosMap.px_size) { - AltosPointInt point = new AltosPointInt(x, y); + AltosPointInt point = new AltosPointInt(x, y); if (!tiles.containsKey(point)) { - AltosLatLon ul = transform.lat_lon(new AltosPointDouble(x, y)); + AltosLatLon ul = transform.lat_lon(point); AltosLatLon center = transform.lat_lon(new AltosPointDouble(x + AltosMap.px_size/2, y + AltosMap.px_size/2)); - AltosMapTile tile = map_interface.new_tile(this, ul, center, zoom, maptype, - px_size); + AltosMapTile tile = map_interface.new_tile(this, ul, center, zoom, maptype, px_size); tiles.put(point, tile); } } diff --git a/altoslib/AltosMapTransform.java b/altoslib/AltosMapTransform.java index e0e8afb0..30994ecb 100644 --- a/altoslib/AltosMapTransform.java +++ b/altoslib/AltosMapTransform.java @@ -39,6 +39,10 @@ public class AltosMapTransform { return new AltosLatLon(lat,lon); } + public AltosLatLon lat_lon (AltosPointInt point) { + return lat_lon(new AltosPointDouble(point.x, point.y)); + } + public AltosPointDouble screen_point(AltosPointInt screen) { return new AltosPointDouble(screen.x + offset_x, screen.y + offset_y); } -- cgit v1.2.3 From e0c318cdd32b3c3fed5099c754aea3ebc6186a0f Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Sun, 21 Jun 2015 09:34:29 -0700 Subject: altoslib: Add set_zoom_centre to AltosMap This zooms around a specific point, keeping it at the same place on the screen. Signed-off-by: Keith Packard --- altoslib/AltosMap.java | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'altoslib') diff --git a/altoslib/AltosMap.java b/altoslib/AltosMap.java index 59420d4b..adf52ab9 100644 --- a/altoslib/AltosMap.java +++ b/altoslib/AltosMap.java @@ -166,6 +166,7 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { public boolean set_zoom(int zoom) { + notice_user_input(); if (AltosMap.min_zoom <= zoom && zoom <= AltosMap.max_zoom && zoom != this.zoom) { this.zoom = zoom; tiles.clear(); @@ -176,6 +177,29 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { return false; } + public boolean set_zoom_centre(int zoom, AltosPointInt centre) { + AltosLatLon mouse_lat_lon = null; + boolean ret; + + if (transform != null) + mouse_lat_lon = transform.screen_lat_lon(centre); + + ret = set_zoom(zoom); + + if (ret && mouse_lat_lon != null) { + AltosPointDouble new_mouse = transform.screen(mouse_lat_lon); + + double dx = width()/2.0 - centre.x; + double dy = height()/2.0 - centre.y; + + AltosLatLon new_centre = transform.screen_lat_lon(new AltosPointDouble(new_mouse.x + dx, new_mouse.y + dy)); + + centre(new_centre); + } + + return ret; + } + public int get_zoom() { return zoom; } -- cgit v1.2.3 From 0f56903774d9e8bb033dfc0af6945e8ddc1d3065 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Mon, 22 Jun 2015 20:08:05 -0700 Subject: altosdroid: Select tracker by clicking on map This lets you pick a tracker from the map, rather than having to use the menu. Signed-off-by: Keith Packard --- altosdroid/Notebook | 24 ++++++--- .../src/org/altusmetrum/AltosDroid/AltosDroid.java | 48 ++++++++++++----- .../AltosDroid/AltosDroidMapInterface.java | 2 +- .../altusmetrum/AltosDroid/AltosMapOffline.java | 61 ++++++++++++++++++---- .../org/altusmetrum/AltosDroid/AltosMapOnline.java | 6 ++- .../src/org/altusmetrum/AltosDroid/TabMap.java | 12 +---- altoslib/AltosMap.java | 21 ++++++++ altoslib/AltosMapInterface.java | 2 + altoslib/AltosMapTransform.java | 7 +++ altosuilib/AltosUIMapNew.java | 5 ++ 10 files changed, 146 insertions(+), 42 deletions(-) (limited to 'altoslib') diff --git a/altosdroid/Notebook b/altosdroid/Notebook index c0ba2098..6804aa5d 100644 --- a/altosdroid/Notebook +++ b/altosdroid/Notebook @@ -15,14 +15,6 @@ Desired AltosDroid feature list *) Monitor-idle mode - *) Select tracker by clicking map - - *) Auto select tracker after long delay - - *) Evaluate performance issues - - *) Merge offline/online maps into single tab with mode - *) Make voice responses depend on selected tab *) Monitor TeleMega igniters @@ -96,3 +88,19 @@ Completed features *) TeleBT battery voltage Done + + *) Evaluate performance issues + + Done. Offline maps were duplicating tabs at every redisplay. + + *) Merge offline/online maps into single tab with mode + + Done. + + *) Auto select tracker after long delay + + Done. + + *) Select tracker by clicking map + + Done. diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java index f6645105..c5da6d0e 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroid.java @@ -18,10 +18,9 @@ package org.altusmetrum.AltosDroid; import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.Timer; -import java.util.TimerTask; import java.text.*; +import java.util.*; +import java.io.*; import android.app.Activity; import android.app.PendingIntent; @@ -248,11 +247,13 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener { } } + int selected_serial = 0; int current_serial; long switch_time; void set_switch_time() { switch_time = System.currentTimeMillis(); + selected_serial = 0; } boolean registered_units_listener; @@ -262,6 +263,9 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener { if (new_telemetry_state != null) telemetry_state = new_telemetry_state; + if (selected_serial != 0) + current_serial = selected_serial; + if (current_serial == 0) current_serial = telemetry_state.latest_serial; @@ -271,6 +275,7 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener { } serials = telemetry_state.states.keySet().toArray(new Integer[0]); + Arrays.sort(serials); update_title(telemetry_state); @@ -282,7 +287,9 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener { int age = state_age(state); if (age < 20) aged = false; - if (switch_time != 0 && (switch_time - state.received_time) > 0) + if (current_serial == selected_serial) + aged = false; + else if (switch_time != 0 && (switch_time - state.received_time) > 0) aged = true; } @@ -828,13 +835,26 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener { void select_tracker(int serial) { int i; - for (i = 0; i < serials.length; i++) - if (serials[i] == serial) - break; - if (i == serials.length) + + AltosDebug.debug("select tracker %d\n", serial); + + if (serial == selected_serial) { + AltosDebug.debug("%d already selected\n", serial); return; + } + + if (serial != 0) { + for (i = 0; i < serials.length; i++) + if (serials[i] == serial) + break; - current_serial = serial; + if (i == serials.length) { + AltosDebug.debug("attempt to select unknown tracker %d\n", serial); + return; + } + } + + current_serial = selected_serial = serial; update_state(null); } @@ -933,15 +953,19 @@ public class AltosDroid extends FragmentActivity implements AltosUnitsListener { return true; case R.id.select_tracker: if (serials != null) { - String[] trackers = new String[serials.length]; + String[] trackers = new String[serials.length+1]; + trackers[0] = "Auto"; for (int i = 0; i < serials.length; i++) - trackers[i] = String.format("%d", serials[i]); + trackers[i+1] = String.format("%d", serials[i]); AlertDialog.Builder builder_serial = new AlertDialog.Builder(this); builder_serial.setTitle("Select a tracker"); builder_serial.setItems(trackers, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { - select_tracker(serials[item]); + if (item == 0) + select_tracker(0); + else + select_tracker(serials[item-1]); } }); AlertDialog alert_serial = builder_serial.create(); diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidMapInterface.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidMapInterface.java index 681cd311..7aff1341 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidMapInterface.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosDroidMapInterface.java @@ -23,7 +23,7 @@ import android.location.Location; import org.altusmetrum.altoslib_7.*; public interface AltosDroidMapInterface { - public void onCreateView(int map_type); + public void onCreateView(AltosDroid altos_droid); public void set_visible(boolean visible); diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosMapOffline.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosMapOffline.java index 3ff6ff25..12dd2f25 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosMapOffline.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosMapOffline.java @@ -36,7 +36,9 @@ import android.util.*; class Rocket implements Comparable { AltosLatLon position; String name; + int serial; long last_packet; + boolean active; AltosMapOffline map_offline; void paint() { @@ -49,14 +51,18 @@ class Rocket implements Comparable { this.last_packet = last_packet; } - Rocket(String name, AltosMapOffline map_offline) { - this.name = name; - this.map_offline = map_offline; + void set_active(boolean active) { + this.active = active; } public int compareTo(Object o) { Rocket other = (Rocket) o; + if (active && !other.active) + return 1; + if (other.active && !active) + return -1; + long diff = last_packet - other.last_packet; if (diff > 0) @@ -65,12 +71,19 @@ class Rocket implements Comparable { return -1; return 0; } + + Rocket(int serial, AltosMapOffline map_offline) { + this.serial = serial; + this.name = String.format("%d", serial); + this.map_offline = map_offline; + } } public class AltosMapOffline extends View implements ScaleGestureDetector.OnScaleGestureListener, AltosMapInterface, AltosDroidMapInterface { ScaleGestureDetector scale_detector; boolean scaling; AltosMap map; + AltosDroid altos_droid; AltosLatLon here; AltosLatLon pad; @@ -236,6 +249,24 @@ public class AltosMapOffline extends View implements ScaleGestureDetector.OnScal public void set_zoom_label(String label) { } + public void select_object(AltosLatLon latlon) { + if (map.transform == null) + return; + for (Rocket rocket : sorted_rockets()) { + if (rocket.position == null) { + debug("rocket %d has no position\n", rocket.serial); + continue; + } + double distance = map.transform.hypot(latlon, rocket.position); + debug("check select %d distance %g width %d\n", rocket.serial, distance, rocket_bitmap.getWidth()); + if (distance < rocket_bitmap.getWidth() * 2.0) { + debug("selecting %d\n", rocket.serial); + altos_droid.select_tracker(rocket.serial); + break; + } + } + } + class Line { AltosLatLon a, b; @@ -295,16 +326,20 @@ public class AltosMapOffline extends View implements ScaleGestureDetector.OnScal } } + private Rocket[] sorted_rockets() { + Rocket[] rocket_array = rockets.values().toArray(new Rocket[0]); + + Arrays.sort(rocket_array); + return rocket_array; + } + private void draw_positions() { line.set_a(map.last_position); line.set_b(here); line.paint(); draw_bitmap(pad, pad_bitmap, pad_off_x, pad_off_y); - Rocket[] rocket_array = rockets.values().toArray(new Rocket[0]); - - Arrays.sort(rocket_array); - for (Rocket rocket : rocket_array) + for (Rocket rocket : sorted_rockets()) rocket.paint(); draw_bitmap(here, here_bitmap, here_off_x, here_off_y); } @@ -379,6 +414,8 @@ public class AltosMapOffline extends View implements ScaleGestureDetector.OnScal map.touch_start((int) event.getX(), (int) event.getY(), true); } else if (event.getAction() == MotionEvent.ACTION_MOVE) { map.touch_continue((int) event.getX(), (int) event.getY(), true); + } else if (event.getAction() == MotionEvent.ACTION_UP) { + map.touch_stop((int) event.getX(), (int) event.getY(), true); } return true; } @@ -425,11 +462,13 @@ public class AltosMapOffline extends View implements ScaleGestureDetector.OnScal if (rockets.containsKey(serial)) rocket = rockets.get(serial); else { - rocket = new Rocket(String.format("%d", serial), this); + rocket = new Rocket(serial, this); rockets.put(serial, rocket); } if (t_state.gps != null) rocket.set_position(new AltosLatLon(t_state.gps.lat, t_state.gps.lon), t_state.received_time); + if (state != null) + rocket.set_active(state.serial == serial); } } if (receiver != null) { @@ -437,9 +476,10 @@ public class AltosMapOffline extends View implements ScaleGestureDetector.OnScal } } - public void onCreateView(int map_type) { + public void onCreateView(AltosDroid altos_droid) { + this.altos_droid = altos_droid; map = new AltosMap(this); - map.set_maptype(map_type); + map.set_maptype(altos_droid.map_type); pad_bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pad); /* arrow at the bottom of the launchpad image */ @@ -464,6 +504,7 @@ public class AltosMapOffline extends View implements ScaleGestureDetector.OnScal public AltosMapOffline(Context context, AttributeSet attrs) { super(context, attrs); + this.altos_droid = altos_droid; scale_detector = new ScaleGestureDetector(context, this); } } diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/AltosMapOnline.java b/altosdroid/src/org/altusmetrum/AltosDroid/AltosMapOnline.java index 9503a0bd..3f5f32be 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/AltosMapOnline.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/AltosMapOnline.java @@ -121,7 +121,11 @@ public class AltosMapOnline implements AltosDroidMapInterface { private AltosLatLon my_position = null; private AltosLatLon target_position = null; - public void onCreateView(final int map_type) { + private AltosDroid altos_droid; + + public void onCreateView(AltosDroid altos_droid) { + this.altos_droid = altos_droid; + final int map_type = altos_droid.map_type; mMapFragment = new SupportMapFragment() { @Override public void onActivityCreated(Bundle savedInstanceState) { diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java b/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java index 9c39e105..cd59dfe7 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TabMap.java @@ -57,14 +57,6 @@ public class TabMap extends AltosDroidTab { super.onCreate(savedInstanceState); } - private void make_offline_map() { - } - - private void make_online_map() { - map_online = new AltosMapOnline(view.getContext()); - map_online.onCreateView(altos_droid.map_type); - } - @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { view = inflater.inflate(R.layout.tab_map, container, false); @@ -77,9 +69,9 @@ public class TabMap extends AltosDroidTab { mReceiverLatitudeView = (TextView)view.findViewById(R.id.receiver_lat_value); mReceiverLongitudeView = (TextView)view.findViewById(R.id.receiver_lon_value); map_offline = (AltosMapOffline)view.findViewById(R.id.map_offline); - map_offline.onCreateView(altos_droid.map_type); + map_offline.onCreateView(altos_droid); map_online = new AltosMapOnline(view.getContext()); - map_online.onCreateView(altos_droid.map_type); + map_online.onCreateView(altos_droid); set_map_source(AltosDroidPreferences.map_source()); return view; } diff --git a/altoslib/AltosMap.java b/altoslib/AltosMap.java index adf52ab9..8d12a180 100644 --- a/altoslib/AltosMap.java +++ b/altoslib/AltosMap.java @@ -391,6 +391,10 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { AltosPointInt drag_start; + boolean dragged; + + static final double drag_far = 20; + private void drag(int x, int y) { if (drag_start == null) return; @@ -398,6 +402,11 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { int dx = x - drag_start.x; int dy = y - drag_start.y; + double distance = Math.hypot(dx, dy); + + if (distance > drag_far) + dragged = true; + if (transform == null) { debug("Transform not set in drag\n"); return; @@ -410,6 +419,12 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { private void drag_start(int x, int y) { drag_start = new AltosPointInt(x, y); + dragged = false; + } + + private void drag_stop(int x, int y) { + if (!dragged) + map_interface.select_object (transform.screen_lat_lon(new AltosPointInt(x,y))); } private void line_start(int x, int y) { @@ -442,6 +457,12 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { line(x, y); } + public void touch_stop(int x, int y, boolean is_drag) { + notice_user_input(); + if (is_drag) + drag_stop(x, y); + } + public AltosMap(AltosMapInterface map_interface) { this.map_interface = map_interface; cache = new AltosMapCache(map_interface); diff --git a/altoslib/AltosMapInterface.java b/altoslib/AltosMapInterface.java index e6cb5971..7e8dd236 100644 --- a/altoslib/AltosMapInterface.java +++ b/altoslib/AltosMapInterface.java @@ -42,4 +42,6 @@ public interface AltosMapInterface { public abstract void set_zoom_label(String label); public abstract void debug(String format, Object ... arguments); + + public abstract void select_object(AltosLatLon latlon); } diff --git a/altoslib/AltosMapTransform.java b/altoslib/AltosMapTransform.java index 30994ecb..11ed4eb9 100644 --- a/altoslib/AltosMapTransform.java +++ b/altoslib/AltosMapTransform.java @@ -51,6 +51,13 @@ public class AltosMapTransform { return new AltosPointDouble(screen.x + offset_x, screen.y + offset_y); } + public double hypot(AltosLatLon a, AltosLatLon b) { + AltosPointDouble a_pt = point(a); + AltosPointDouble b_pt = point(b); + + return Math.hypot(a_pt.x - b_pt.x, a_pt.y - b_pt.y); + } + public AltosLatLon screen_lat_lon(AltosPointInt screen) { return lat_lon(screen_point(screen)); } diff --git a/altosuilib/AltosUIMapNew.java b/altosuilib/AltosUIMapNew.java index 246222bc..8ac18296 100644 --- a/altosuilib/AltosUIMapNew.java +++ b/altosuilib/AltosUIMapNew.java @@ -358,10 +358,15 @@ public class AltosUIMapNew extends JComponent implements AltosFlightDisplay, Alt zoom_label.setText(label); } + public void select_object(AltosLatLon latlon) { + debug("select at %f,%f\n", latlon.lat, latlon.lon); + } + public void debug(String format, Object ... arguments) { System.out.printf(format, arguments); } + /* AltosFlightDisplay interface */ public void set_font() { -- cgit v1.2.3 From 60b8bea12edb954e6140a92c8412364c9581e3c2 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 23 Jun 2015 21:38:37 -0700 Subject: altoslib: Use a longer filter for descent values This makes descent speeds almost useful, a huge improvement Signed-off-by: Keith Packard --- altoslib/AltosState.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'altoslib') diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java index a120e0c7..8eacf975 100644 --- a/altoslib/AltosState.java +++ b/altoslib/AltosState.java @@ -31,8 +31,9 @@ public class AltosState implements Cloneable, Serializable { public int set; + static final double filter_len = 2.0; static final double ascent_filter_len = 0.5; - static final double descent_filter_len = 0.5; + static final double descent_filter_len = 5.0; /* derived data */ @@ -64,8 +65,10 @@ public class AltosState implements Cloneable, Serializable { } void set_filtered(double new_value, double time) { - if (prev_value != AltosLib.MISSING) - new_value = (prev_value * 15.0 + new_value) / 16.0; + if (prev_value != AltosLib.MISSING) { + double f = 1/Math.exp((time - prev_set_time) / filter_le); + new_value = f * new_value + (1-f) * prev_value; + } set(new_value, time); } -- cgit v1.2.3 From f275e73f42e0aaf1760da99fb93c394320aafb84 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 23 Jun 2015 21:47:06 -0700 Subject: altoslib: Typo slipped into AltosState.java Oops. Signed-off-by: Keith Packard --- altoslib/AltosState.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'altoslib') diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java index 8eacf975..347c1198 100644 --- a/altoslib/AltosState.java +++ b/altoslib/AltosState.java @@ -66,7 +66,7 @@ public class AltosState implements Cloneable, Serializable { void set_filtered(double new_value, double time) { if (prev_value != AltosLib.MISSING) { - double f = 1/Math.exp((time - prev_set_time) / filter_le); + double f = 1/Math.exp((time - prev_set_time) / filter_len); new_value = f * new_value + (1-f) * prev_value; } set(new_value, time); -- cgit v1.2.3 From c7067f14359d25a8275f2b09e7b30c06c0424dbb Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 23 Jun 2015 22:40:11 -0700 Subject: altoslib: Fix replay to run in realtime again At some point, this got sped up to 10x normal speedx Signed-off-by: Keith Packard --- altoslib/AltosReplayReader.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'altoslib') diff --git a/altoslib/AltosReplayReader.java b/altoslib/AltosReplayReader.java index bcc07587..90072754 100644 --- a/altoslib/AltosReplayReader.java +++ b/altoslib/AltosReplayReader.java @@ -40,7 +40,7 @@ public class AltosReplayReader extends AltosFlightReader { public void update(AltosState state) throws InterruptedException { /* Make it run in realtime after the rocket leaves the pad */ if (state.state > AltosLib.ao_flight_pad && state.time_change > 0) - Thread.sleep((int) (Math.min(state.time_change,10) * 100)); + Thread.sleep((int) (Math.min(state.time_change,10) * 1000)); state.set_received_time(System.currentTimeMillis()); } -- cgit v1.2.3 From 6ecd75a7abb5fcee440f7672082013088634680b Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Thu, 25 Jun 2015 12:23:04 -0700 Subject: altoslib: Don't crash if dragging a map view without any tiles Signed-off-by: Keith Packard --- altoslib/AltosMap.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'altoslib') diff --git a/altoslib/AltosMap.java b/altoslib/AltosMap.java index 8d12a180..d68cff7a 100644 --- a/altoslib/AltosMap.java +++ b/altoslib/AltosMap.java @@ -131,6 +131,10 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { return (System.currentTimeMillis() - user_input_time) < auto_scroll_delay; } + public boolean has_centre() { + return centre != null; + } + public boolean far_from_centre(AltosLatLon lat_lon) { if (centre == null || transform == null) @@ -423,8 +427,13 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { } private void drag_stop(int x, int y) { - if (!dragged) + if (!dragged) { + if (transform == null) { + debug("Transform not set in stop\n"); + return; + } map_interface.select_object (transform.screen_lat_lon(new AltosPointInt(x,y))); + } } private void line_start(int x, int y) { -- cgit v1.2.3 From 7c0f66bf64f410415afaff1b5c8e1443512b7a57 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Thu, 25 Jun 2015 18:31:29 -0700 Subject: altoslib: Support TeleBT v3.0 battery voltage conversion TeleBT v3.0 uses an STM32 instead of a cc1111, so it needs a different voltage computation from the raw ADC value. Signed-off-by: Keith Packard --- altoslib/AltosConvert.java | 6 ++++++ altoslib/AltosLink.java | 10 +++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) (limited to 'altoslib') diff --git a/altoslib/AltosConvert.java b/altoslib/AltosConvert.java index 5750afad..3e0f0e1a 100644 --- a/altoslib/AltosConvert.java +++ b/altoslib/AltosConvert.java @@ -230,6 +230,12 @@ public class AltosConvert { return sensor / 32767.0 * supply * (5.6 + 10.0) / 10.0; } + static double tele_bt_3_battery(int raw) { + if (raw == AltosLib.MISSING) + return AltosLib.MISSING; + return 3.3 * mega_adc(raw) * (5.1 + 10.0) / 10.0; + } + static double easy_mini_voltage(int sensor, int serial) { double supply = 3.3; double diode_offset = 0.0; diff --git a/altoslib/AltosLink.java b/altoslib/AltosLink.java index 4f3a1ed2..e33f7c77 100644 --- a/altoslib/AltosLink.java +++ b/altoslib/AltosLink.java @@ -553,7 +553,15 @@ public abstract class AltosLink implements Runnable { } if (monitor_batt == AltosLib.MISSING) return AltosLib.MISSING; - return AltosConvert.cc_battery_to_voltage(monitor_batt); + + double volts = AltosLib.MISSING; + if (config_data.product.startsWith("TeleBT-v3")) { + volts = AltosConvert.tele_bt_3_battery(monitor_batt); + } else { + volts = AltosConvert.cc_battery_to_voltage(monitor_batt); + } + + return volts; } public AltosLink() { -- cgit v1.2.3 From a9bc364ecc69d9085146a39198f0671de164eb2e Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Sat, 11 Jul 2015 19:09:28 -0700 Subject: altoslib: Make AltosMap floor/ceil static. Check transform in paint This avoids crashing in paint when no transform has been set yet. Signed-off-by: Keith Packard --- altoslib/AltosMap.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'altoslib') diff --git a/altoslib/AltosMap.java b/altoslib/AltosMap.java index d68cff7a..2c93adb8 100644 --- a/altoslib/AltosMap.java +++ b/altoslib/AltosMap.java @@ -113,12 +113,12 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { map_interface.debug(format, arguments); } - public AltosPointInt floor(AltosPointDouble point) { + static public AltosPointInt floor(AltosPointDouble point) { return new AltosPointInt ((int) Math.floor(point.x / AltosMap.px_size) * AltosMap.px_size, (int) Math.floor(point.y / AltosMap.px_size) * AltosMap.px_size); } - public AltosPointInt ceil(AltosPointDouble point) { + static public AltosPointInt ceil(AltosPointDouble point) { return new AltosPointInt ((int) Math.ceil(point.x / AltosMap.px_size) * AltosMap.px_size, (int) Math.ceil(point.y / AltosMap.px_size) * AltosMap.px_size); } @@ -357,6 +357,9 @@ public class AltosMap implements AltosMapTileListener, AltosMapStoreListener { if (centre != null) make_tiles(); + if (transform == null) + return; + for (AltosMapTile tile : tiles.values()) tile.paint(transform); -- cgit v1.2.3 From b313a5a3d5aba89330c0e20eeac00cc571828953 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Sat, 11 Jul 2015 19:10:44 -0700 Subject: altoslib: Make earth size constants public This lets other code share the values. Signed-off-by: Keith Packard --- altoslib/AltosGreatCircle.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'altoslib') diff --git a/altoslib/AltosGreatCircle.java b/altoslib/AltosGreatCircle.java index f64a3662..4f934517 100644 --- a/altoslib/AltosGreatCircle.java +++ b/altoslib/AltosGreatCircle.java @@ -28,8 +28,8 @@ public class AltosGreatCircle implements Cloneable, Serializable { double sqr(double a) { return a * a; } - static final double rad = Math.PI / 180; - static final double earth_radius = 6371.2 * 1000; /* in meters */ + public static final double rad = Math.PI / 180; + public static final double earth_radius = 6371.2 * 1000; /* in meters */ public static final int BEARING_LONG = AltosConvert.BEARING_LONG; public static final int BEARING_SHORT = AltosConvert.BEARING_SHORT; -- cgit v1.2.3 From 1b6f3de0a547fa452d5c40775bcf59c49b229e5e Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Sat, 11 Jul 2015 19:11:48 -0700 Subject: altoslib: Limit simultanous map tile downloads to 128 Before this change, every tile requested would get downloaded at the same time. With moving to distance-based offline map loading radius values, the number of tiles at closer zooms was in the thousands, overwhelming the network. Signed-off-by: Keith Packard --- altoslib/AltosMapStore.java | 90 +++++++++++++++++++++++++++++++-------------- 1 file changed, 63 insertions(+), 27 deletions(-) (limited to 'altoslib') diff --git a/altoslib/AltosMapStore.java b/altoslib/AltosMapStore.java index 88412593..a10a1665 100644 --- a/altoslib/AltosMapStore.java +++ b/altoslib/AltosMapStore.java @@ -118,49 +118,85 @@ public class AltosMapStore { static final long forbidden_interval = 60l * 1000l * 1000l * 1000l; static final long google_maps_ratelimit_ms = 1200; + static Object loader_lock = new Object(); + + static LinkedList waiting = new LinkedList(); + static LinkedList running = new LinkedList(); + + static final int concurrent_loaders = 128; + + static void start_loaders() { + while (!waiting.isEmpty() && running.size() < concurrent_loaders) { + AltosMapStore s = waiting.remove(); + running.add(s); + Thread lt = s.make_loader_thread(); + lt.start(); + } + } + + void finish_loader() { + synchronized(loader_lock) { + running.remove(this); + start_loaders(); + } + } + + void add_loader() { + synchronized(loader_lock) { + waiting.add(this); + start_loaders(); + } + } + class loader implements Runnable { public void run() { - if (file.exists()) { - notify_listeners(AltosMapTile.success); - return; - } - - synchronized(forbidden_lock) { - if (forbidden_set && (System.nanoTime() - forbidden_time) < forbidden_interval) { - notify_listeners(AltosMapTile.forbidden); + try { + if (file.exists()) { + notify_listeners(AltosMapTile.success); return; } - } - int new_status; + synchronized(forbidden_lock) { + if (forbidden_set && (System.nanoTime() - forbidden_time) < forbidden_interval) { + notify_listeners(AltosMapTile.forbidden); + return; + } + } - if (!AltosVersion.has_google_maps_api_key()) { - synchronized (fetch_lock) { - long startTime = System.nanoTime(); - new_status = fetch_url(); - if (new_status == AltosMapTile.success) { - long duration_ms = (System.nanoTime() - startTime) / 1000000; - if (duration_ms < google_maps_ratelimit_ms) { - try { - Thread.sleep(google_maps_ratelimit_ms - duration_ms); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); + int new_status; + + if (!AltosVersion.has_google_maps_api_key()) { + synchronized (fetch_lock) { + long startTime = System.nanoTime(); + new_status = fetch_url(); + if (new_status == AltosMapTile.success) { + long duration_ms = (System.nanoTime() - startTime) / 1000000; + if (duration_ms < google_maps_ratelimit_ms) { + try { + Thread.sleep(google_maps_ratelimit_ms - duration_ms); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } } } } + } else { + new_status = fetch_url(); } - } else { - new_status = fetch_url(); + notify_listeners(new_status); + } finally { + finish_loader(); } - notify_listeners(new_status); } } + private Thread make_loader_thread() { + return new Thread(new loader()); + } + private void load() { - loader l = new loader(); - Thread lt = new Thread(l); - lt.start(); + add_loader(); } private AltosMapStore (String url, File file) { -- cgit v1.2.3 From afa37e4667ace42c1f43b01b613e639772cfeb75 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Sat, 11 Jul 2015 19:13:37 -0700 Subject: altoslib: Convert longitude from distance in AltosMapTransform This computes the longitude cooresponding to a specific distance at a specific latitude. Signed-off-by: Keith Packard --- altoslib/AltosMapTransform.java | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'altoslib') diff --git a/altoslib/AltosMapTransform.java b/altoslib/AltosMapTransform.java index 11ed4eb9..7615c83b 100644 --- a/altoslib/AltosMapTransform.java +++ b/altoslib/AltosMapTransform.java @@ -117,4 +117,12 @@ public class AltosMapTransform { offset_x = centre_pt.x - width / 2.0; offset_y = centre_pt.y - height / 2.0; } + + public static double lon_from_distance(double lat, double distance) { + double c = AltosGreatCircle.earth_radius * Math.cos(lat * Math.PI / 180) * 2 * Math.PI; + + if (c < 10) + return 0; + return distance/c * 360.0; + } } -- cgit v1.2.3 From d015cfc1499a263549f52d46e9e5b934fcb94f53 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Sat, 11 Jul 2015 19:15:08 -0700 Subject: altoslib: Preload maps based on distance rather than number of tiles This lets you get the specific area requested at all zoom levels, rather than having further detail only at lower resolution zooms. Signed-off-by: Keith Packard --- altosdroid/res/layout/map_preload.xml | 8 +- altosdroid/res/values/strings.xml | 2 +- .../altusmetrum/AltosDroid/PreloadMapActivity.java | 66 +++++++++++++-- altoslib/AltosMapLoader.java | 99 ++++++++++++++++++---- altoslib/AltosMapLoaderListener.java | 2 + altosuilib/AltosUIMapPreloadNew.java | 35 ++++++-- 6 files changed, 179 insertions(+), 33 deletions(-) (limited to 'altoslib') diff --git a/altosdroid/res/layout/map_preload.xml b/altosdroid/res/layout/map_preload.xml index 1d1fca32..dc613bf2 100644 --- a/altosdroid/res/layout/map_preload.xml +++ b/altosdroid/res/layout/map_preload.xml @@ -103,15 +103,15 @@ android:prompt="@string/preload_max_zoom" android:spinnerMode="dropdown" /> - -