X-Git-Url: http://gitweb.fperrin.net/?p=GpsPrune.git;a=blobdiff_plain;f=src%2Ftim%2Fprune%2Fgui%2Fprofile%2FGradientData.java;fp=src%2Ftim%2Fprune%2Fgui%2Fprofile%2FGradientData.java;h=78bf497641936296a03e4414fdbc6a38cdcb665c;hp=0000000000000000000000000000000000000000;hb=ce6f2161b8596f7018d6a76bff79bc9e571f35fd;hpb=2d8cb72e84d5cc1089ce77baf1e34ea3ea2f8465 diff --git a/src/tim/prune/gui/profile/GradientData.java b/src/tim/prune/gui/profile/GradientData.java new file mode 100644 index 0000000..78bf497 --- /dev/null +++ b/src/tim/prune/gui/profile/GradientData.java @@ -0,0 +1,66 @@ +package tim.prune.gui.profile; + +import tim.prune.I18nManager; +import tim.prune.data.GradientCalculator; +import tim.prune.data.SpeedValue; +import tim.prune.data.Track; +import tim.prune.data.UnitSet; + +/** + * Class to provide a source of gradient data for the profile chart + * or for the point colourer + */ +public class GradientData extends ProfileData +{ + /** + * Constructor + * @param inTrack track object + */ + public GradientData(Track inTrack) { + super(inTrack); + } + + /** + * Get the data and populate the instance arrays + */ + public void init(UnitSet inUnitSet) + { + setUnitSet(inUnitSet); + initArrays(); + _hasData = false; + _minValue = _maxValue = 0.0; + SpeedValue speed = new SpeedValue(); + if (_track != null) + { + for (int i=0; i<_track.getNumPoints(); i++) + { + // Get the gradient either from the speed values or from the distances and altitudes + GradientCalculator.calculateGradient(_track, i, speed); + if (speed.isValid()) + { + double speedValue = speed.getValue(); + _pointValues[i] = speedValue; + if (speedValue < _minValue || !_hasData) {_minValue = speedValue;} + if (speedValue > _maxValue || !_hasData) {_maxValue = speedValue;} + _hasData = true; + } + _pointHasData[i] = speed.isValid(); + } + } + } + + /** + * @return text description + */ + public String getLabel() + { + return I18nManager.getText("fieldname.gradient"); + } + + /** + * @return key for message when no altitudes present + */ + public String getNoDataKey() { + return "display.noaltitudes"; + } +}