package tim.prune.gui.colour;
import java.awt.Color;
import tim.prune.config.Config;
import tim.prune.data.Track;
import tim.prune.gui.profile.ProfileData;
/**
* Colourer based on speed values
*/
public abstract class ProfileDataColourer extends ContinuousPointColourer
{
/**
* Constructor
* @param inStartColour start colour
* @param inEndColour end colour
*/
public ProfileDataColourer(Color inStartColour, Color inEndColour)
{
super(inStartColour, inEndColour);
}
/**
* Calculate the colours according to the track and the profile data
*/
public void calculateColours(Track inTrack, ProfileData inData)
{
final int numPoints = inTrack == null ? 0 : inTrack.getNumPoints();
// Calculate values for each point
inData.init(Config.getUnitSet());
// Figure out speed range
double minValue = inData.getMinValue();
double maxValue = inData.getMaxValue();
if (!inData.hasData() || (maxValue - minValue) < 0.1)
{
// not enough value range, set all to null
init(0);
}
else
{
// initialise the array to the right size
init(numPoints);
// loop over track points to calculate colours
for (int i=0; i<numPoints; i++)
{
if (inData.hasData(i))
{
double fraction = (inData.getData(i) - minValue) / (maxValue - minValue);
setColour(i, mixColour((float) fraction));
}
else setColour(i, null);
}
}
}
}