* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
-package org.altusmetrum.altoslib_5;
+package org.altusmetrum.altoslib_9;
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 =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<kml xmlns=\"http://www.opengis.net/kml/2.2\">\n" +
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);
end();
prev = null;
}
+ if (out != null) {
+ out.close();
+ out = null;
+ }
}
public void write(AltosState state) {
}
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);
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 {