Worldwind public release 0.2
[worldwind-tracker.git] / gov / nasa / worldwind / layers / TrackLayer.java
blobfa1f32a13de2aaf09294b3d292d689b8558699eb
1 /*
2 Copyright (C) 2001, 2006 United States Government
3 as represented by the Administrator of the
4 National Aeronautics and Space Administration.
5 All Rights Reserved.
6 */
7 package gov.nasa.worldwind.layers;
9 import gov.nasa.worldwind.*;
10 import gov.nasa.worldwind.geom.*;
12 /**
13 * @author tag
14 * @version $Id: TrackLayer.java 1230 2007-03-16 14:47:35Z tgaskins $
16 public class TrackLayer extends AbstractLayer
18 private static final TrackRenderer trackRenderer = new TrackRenderer();
19 private java.util.List<Track> tracks = new java.util.ArrayList<Track>();
20 private Sector boundingSector;
21 private IconRenderer iconRenderer = new IconRenderer();
22 private UserFacingIcon icon;
24 public TrackLayer(java.util.List<Track> tracks)
26 if (tracks == null)
28 String msg = WorldWind.retrieveErrMsg("nullValue.TracksIsNull");
29 WorldWind.logger().log(java.util.logging.Level.FINE, msg);
30 throw new IllegalArgumentException(msg);
33 this.tracks = tracks;
34 this.boundingSector = Sector.boundingSector(this.iterator());
37 private TrackPointIteratorImpl iterator()
39 return new TrackPointIteratorImpl(this.tracks);
42 public void dispose()
44 this.trackRenderer.dispose();
47 public int getNumPoints()
49 return this.iterator().getNumPoints();
52 public double getMarkerPixels()
54 return this.trackRenderer.getMarkerPixels();
57 public void setMarkerPixels(double markerPixels)
59 this.trackRenderer.setMarkerPixels(markerPixels);
62 public double getMinMarkerSize()
64 return this.trackRenderer.getMinMarkerSize();
67 public void setMinMarkerSize(double minMarkerSize)
69 this.trackRenderer.setMinMarkerSize(minMarkerSize);
72 public double getMarkerElevation()
74 return this.trackRenderer.getMarkerElevation();
77 public void setMarkerElevation(double markerElevation)
79 this.trackRenderer.setMarkerElevation(markerElevation);
82 public Material getMaterial()
84 return this.trackRenderer.getMaterial();
87 public void setMaterial(Material material)
89 this.trackRenderer.setMaterial(material);
92 public String getIconFilePath()
94 return this.icon != null ? this.icon.getPath() : null;
97 public void setIconFilePath(String iconFilePath)
99 this.icon = iconFilePath != null ? new UserFacingIcon(iconFilePath, null) : null;
102 public int getLowerLimit()
104 return this.trackRenderer.getLowerLimit();
107 public void setLowerLimit(int lowerLimit)
109 this.trackRenderer.setLowerLimit(lowerLimit);
112 public int getUpperLimit()
114 return this.trackRenderer.getUpperLimit();
117 public void setUpperLimit(int upperLimit)
119 this.trackRenderer.setUpperLimit(upperLimit);
122 @Override
123 protected void doPick(DrawContext dc, java.awt.Point pickPoint)
125 this.draw(dc, pickPoint);
128 protected void doRender(DrawContext dc)
130 this.draw(dc, null);
133 private void draw(DrawContext dc, java.awt.Point pickPoint)
135 TrackPointIterator trackPoints = this.iterator();
136 if (!trackPoints.hasNext())
137 return;
139 if (dc.getVisibleSector() == null)
140 return;
142 SectorGeometryList geos = dc.getSurfaceGeometry();
143 if (geos == null)
144 return;
146 if (!dc.getVisibleSector().intersects(this.boundingSector))
147 return;
149 Point iconPoint = this.trackRenderer.render(dc, trackPoints);
151 if (iconPoint != null && this.icon != null)
153 if (dc.isPickingMode())
154 this.iconRenderer.pick(dc, this.icon, iconPoint, pickPoint, this);
155 else
156 this.iconRenderer.render(dc, this.icon, iconPoint);
160 @Override
161 public String toString()
163 return gov.nasa.worldwind.WorldWind.retrieveErrMsg("layers.TrackLayer.Name");