From a50c8b40319c5d176d40a816111edd9a8dd48bc9 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Wed, 10 May 2017 15:16:34 -0700 Subject: [PATCH] altoslib: Add initial time series functions Provides the basis for offering a sequence of time/value datasets for graphing instead of using AltosState. Signed-off-by: Keith Packard --- altoslib/AltosTime.java | 33 +++++++++++++++++++++++++++++++ altoslib/AltosTimeSeries.java | 37 +++++++++++++++++++++++++++++++++++ altoslib/AltosTimeValue.java | 27 +++++++++++++++++++++++++ 3 files changed, 97 insertions(+) create mode 100644 altoslib/AltosTime.java create mode 100644 altoslib/AltosTimeSeries.java create mode 100644 altoslib/AltosTimeValue.java diff --git a/altoslib/AltosTime.java b/altoslib/AltosTime.java new file mode 100644 index 00000000..de094e83 --- /dev/null +++ b/altoslib/AltosTime.java @@ -0,0 +1,33 @@ +/* + * Copyright © 2017 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, 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + */ + +package org.altusmetrum.altoslib_11; + +public class AltosTime extends AltosUnits { + public double value(double v, boolean imperial_units) { return v; } + + public double inverse(double v, boolean imperial_unis) { return v; } + + public String show_units(boolean imperial_units) { return "s"; } + + public String say_units(boolean imperial_units) { return "seconds"; } + + public int show_fraction(int width, boolean imperial_units) { + if (width < 5) + return 0; + return width - 5; + } + + public int say_fraction(boolean imperial_units) { return 0; } +} diff --git a/altoslib/AltosTimeSeries.java b/altoslib/AltosTimeSeries.java new file mode 100644 index 00000000..53c0076f --- /dev/null +++ b/altoslib/AltosTimeSeries.java @@ -0,0 +1,37 @@ +/* + * Copyright © 2017 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, 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 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + */ + +package org.altusmetrum.altoslib_11; + +import java.util.*; + +public class AltosTimeSeries implements Iterable { + public String label; + public AltosUnits units; + List values; + + public void add(double x, double y) { + values.add(new AltosTimeValue(x, y)); + } + + public Iterator iterator() { + return values.iterator(); + } + + public AltosTimeSeries(String label, AltosUnits units) { + this.label = label; + this.units = units; + this.values = new ArrayList(); + } +} diff --git a/altoslib/AltosTimeValue.java b/altoslib/AltosTimeValue.java new file mode 100644 index 00000000..50212361 --- /dev/null +++ b/altoslib/AltosTimeValue.java @@ -0,0 +1,27 @@ +/* + * Copyright © 2017 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_11; + +public class AltosTimeValue { + public double x, y; + + public AltosTimeValue(double x, double y) { + this.x = x; + this.y = y; + } +} -- 2.30.2