X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=altoslib%2FAltosKML.java;h=25108bf97c67ad27660f8d1e3915b561c1724b8e;hb=217d77dadbef4192d2f32e290a5c5f50159f2e0d;hp=cc9a9f51051b9339eefde74b40954053e62744a3;hpb=b60a3689910731d9bdb8a431a3dcc9e99f961b35;p=fw%2Faltos diff --git a/altoslib/AltosKML.java b/altoslib/AltosKML.java index cc9a9f51..25108bf9 100644 --- a/altoslib/AltosKML.java +++ b/altoslib/AltosKML.java @@ -3,7 +3,8 @@ * * 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. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of @@ -15,31 +16,49 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_3; +package org.altusmetrum.altoslib_11; 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; static final String[] kml_state_colors = { - "FF000000", - "FF000000", - "FF000000", - "FF0000FF", - "FF4080FF", - "FF00FFFF", - "FFFF0000", - "FF00FF00", - "FF000000", - "FFFFFFFF" + "FF000000", // startup + "FF000000", // idle + "FF000000", // pad + "FF0000FF", // boost + "FF4080FF", // fast + "FF00FFFF", // coast + "FFFF0000", // drogue + "FF00FF00", // main + "FF000000", // landed + "FFFFFFFF", // invalid + "FFFF0000", // stateless }; + static String state_color(int state) { + if (state < 0 || kml_state_colors.length <= state) + return kml_state_colors[AltosLib.ao_flight_invalid]; + return kml_state_colors[state]; + } + static final String kml_header_start = "\n" + "\n" + @@ -94,8 +113,9 @@ public class AltosKML implements AltosWriter { boolean started = false; void state_start(AltosState state) { - String state_name = AltosLib.state_name(state.state); - out.printf(kml_style_start, state_name, kml_state_colors[state.state]); + String state_name = AltosLib.state_name(state.state()); + String state_color = state_color(state.state()); + out.printf(kml_style_start, state_name, state_color); out.printf("\tState: %s\n", state_name); out.printf("%s", kml_style_end); out.printf(kml_placemark_start, state_name, state_name); @@ -129,6 +149,10 @@ public class AltosKML implements AltosWriter { end(); prev = null; } + if (out != null) { + out.close(); + out = null; + } } public void write(AltosState state) { @@ -148,8 +172,8 @@ public class AltosKML implements AltosWriter { } if (prev != null && prev.gps_sequence == state.gps_sequence) return; - if (state.state != flight_state) { - flight_state = state.state; + if (state.state() != flight_state) { + flight_state = state.state(); if (prev != null) { coord(state); state_end(prev); @@ -169,7 +193,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 {