File: TrackNameList.java

package info (click to toggle)
gpsprune 17-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 3,984 kB
  • ctags: 5,218
  • sloc: java: 39,403; sh: 25; makefile: 17; python: 15
file content (83 lines) | stat: -rw-r--r-- 2,186 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package tim.prune.load;

import java.util.ArrayList;

/**
 * Class to hold and manage a list of track names
 * from a gpx file, and report back which points
 * belong to which track
 */
public class TrackNameList
{
	/** Current point number */
	private int _pointNum = -1;
	/** Current track number */
	private int _trackNum = -1;
	/** List of unique track names */
	private ArrayList<String> _trackNames = new ArrayList<String>();
	/** List of point numbers at the start of each track */
	private ArrayList<Integer> _startIndices = new ArrayList<Integer>();


	/**
	 * Inform list of a new point
	 * @param inTrackNum number of track, starting at zero
	 * @param inTrackName name of track, if any
	 * @param inIsTrackpoint true if point is a trackpoint
	 */
	public void addPoint(int inTrackNum, String inTrackName, boolean inIsTrackpoint)
	{
		_pointNum++;
		if (inIsTrackpoint)
		{
			if (inTrackNum != _trackNum) {
				_trackNames.add(inTrackName);
				_startIndices.add(Integer.valueOf(_pointNum));
			}
		}
		_trackNum = inTrackNum;
	}

	/**
	 * @return number of tracks found in file
	 */
	public int getNumTracks()
	{
		return _trackNames.size();
	}

	/**
	 * @param inTrackNum index of track, starting from zero
	 * @return name of specified track (or null if none given)
	 */
	public String getTrackName(int inTrackNum)
	{
		if (inTrackNum < 0 || inTrackNum >= getNumTracks()) {return "";}
		String name = _trackNames.get(inTrackNum);
		return name;
	}

	/**
	 * @param inTrackNum index of track, starting from zero
	 * @return number of points in the specified track
	 */
	public int getNumPointsInTrack(int inTrackNum)
	{
		if (inTrackNum < 0 || inTrackNum >= getNumTracks()) {return 0;}
		if (inTrackNum == (getNumTracks()-1)) {
			// last track, use total points
			return _pointNum - _startIndices.get(inTrackNum) + 1;
		}
		return _startIndices.get(inTrackNum+1) - _startIndices.get(inTrackNum);
	}

	/**
	 * @param inTrackNum index of track, starting from zero
	 * @return start index of the specified track
	 */
	public int getStartIndex(int inTrackNum)
	{
		if (inTrackNum < 0 || inTrackNum >= getNumTracks()) {return 0;}
		return _startIndices.get(inTrackNum);
	}
}