X-Git-Url: http://gitweb.fperrin.net/?p=GpsPrune.git;a=blobdiff_plain;f=src%2Ftim%2Fprune%2Fgui%2Fprofile%2FAltitudeData.java;fp=src%2Ftim%2Fprune%2Fgui%2Fprofile%2FAltitudeData.java;h=9600b1674ade17a296a9e43f9a1dc4039dfcffe1;hp=0000000000000000000000000000000000000000;hb=ce6f2161b8596f7018d6a76bff79bc9e571f35fd;hpb=2d8cb72e84d5cc1089ce77baf1e34ea3ea2f8465 diff --git a/src/tim/prune/gui/profile/AltitudeData.java b/src/tim/prune/gui/profile/AltitudeData.java new file mode 100644 index 0000000..9600b16 --- /dev/null +++ b/src/tim/prune/gui/profile/AltitudeData.java @@ -0,0 +1,75 @@ +package tim.prune.gui.profile; + +import tim.prune.I18nManager; +import tim.prune.data.DataPoint; +import tim.prune.data.Track; +import tim.prune.data.UnitSet; + +/** + * Class to provide a source of altitude data for the profile chart + */ +public class AltitudeData extends ProfileData +{ + /** + * Constructor + * @param inTrack track object + */ + public AltitudeData(Track inTrack) { + super(inTrack); + } + + /** + * Get the data and populate the instance arrays + */ + public void init(UnitSet inUnitSet) + { + setUnitSet(inUnitSet); + initArrays(); + _hasData = false; + // multiplication factor for unit conversion + final double multFactor = _unitSet.getAltitudeUnit().getMultFactorFromStd(); + if (_track != null) + { + try + { + for (int i=0; i<_track.getNumPoints(); i++) + { + DataPoint point = _track.getPoint(i); + if (point != null && point.hasAltitude()) + { + // Point has an altitude - store value and maintain max and min values + double value = point.getAltitude().getMetricValue() * multFactor; + _pointValues[i] = value; + if (value < _minValue || !_hasData) {_minValue = value;} + if (value > _maxValue || !_hasData) {_maxValue = value;} + + // if all values are zero then that's no data + _hasData = _hasData || (point.getAltitude().getValue() != 0); + _pointHasData[i] = true; + } + else _pointHasData[i] = false; + } + } + catch (ArrayIndexOutOfBoundsException obe) + {} // must be due to the track size changing during calculation + // assume that a redraw will be triggered + } + } + + /** + * @return text description including units + */ + public String getLabel() + { + return I18nManager.getText("fieldname.altitude") + " (" + + I18nManager.getText(_unitSet.getAltitudeUnit().getShortnameKey()) + + ")"; + } + + /** + * @return key for message when no altitudes present + */ + public String getNoDataKey() { + return "display.noaltitudes"; + } +}