1 package tim.prune.gui.colour;
5 import tim.prune.config.Config;
6 import tim.prune.data.Track;
7 import tim.prune.gui.profile.ProfileData;
10 * Colourer based on speed values
12 public abstract class ProfileDataColourer extends ContinuousPointColourer
16 * @param inStartColour start colour
17 * @param inEndColour end colour
19 public ProfileDataColourer(Color inStartColour, Color inEndColour)
21 super(inStartColour, inEndColour);
25 * Calculate the colours according to the track and the profile data
27 public void calculateColours(Track inTrack, ProfileData inData)
29 final int numPoints = inTrack == null ? 0 : inTrack.getNumPoints();
31 // Calculate values for each point
32 inData.init(Config.getUnitSet());
33 // Figure out speed range
34 double minValue = inData.getMinValue();
35 double maxValue = inData.getMaxValue();
36 if (!inData.hasData() || (maxValue - minValue) < 0.1)
38 // not enough value range, set all to null
43 // initialise the array to the right size
45 // loop over track points to calculate colours
46 for (int i=0; i<numPoints; i++)
48 if (inData.hasData(i))
50 double fraction = (inData.getData(i) - minValue) / (maxValue - minValue);
51 setColour(i, mixColour((float) fraction));
53 else setColour(i, null);