+++ /dev/null
-package tim.prune.gui.colour;
-
-import java.awt.Color;
-import java.util.ArrayList;
-
-import tim.prune.data.DataPoint;
-import tim.prune.data.FileInfo;
-import tim.prune.data.SourceInfo;
-import tim.prune.data.TrackInfo;
-
-/**
- * Colours points according to which file (or source) they came from
- */
-public class FileColourer extends DiscretePointColourer
-{
- /**
- * Constructor
- * @param inStartColour start colour of scale
- * @param inEndColour end colour of scale
- * @param inWrapLength number of unique colours before wrap
- */
- public FileColourer(Color inStartColour, Color inEndColour, int inWrapLength)
- {
- super(inStartColour, inEndColour, inWrapLength);
- }
-
- /**
- * Calculate the colours for each of the points in the given track
- * @param inTrack track object
- */
- @Override
- public void calculateColours(TrackInfo inTrackInfo)
- {
- // initialise the array to the right size
- final int numPoints = inTrackInfo == null ? 0 : inTrackInfo.getTrack().getNumPoints();
- init(numPoints);
-
- // loop over track points
- FileInfo fInfo = inTrackInfo.getFileInfo();
- ArrayList<SourceInfo> sourceList = new ArrayList<SourceInfo>();
- for (int i=0; i<numPoints; i++)
- {
- DataPoint p = inTrackInfo.getTrack().getPoint(i);
- if (p != null && !p.isWaypoint())
- {
- SourceInfo sInfo = fInfo.getSourceForPoint(p);
- // Is this info object already in the list?
- int foundIndex = -1;
- int sIndex = 0;
- for (SourceInfo si : sourceList) {
- if (si == sInfo) {
- foundIndex = sIndex;
- break;
- }
- sIndex++;
- }
- // Add source info to list
- if (foundIndex < 0)
- {
- sourceList.add(sInfo);
- foundIndex = sourceList.size()-1;
- }
- // use this foundIndex to find the colour
- setColour(i, foundIndex);
- }
- }
- // generate the colours needed
- generateDiscreteColours(sourceList.size());
- }
-}