2 Copyright (C) 2001, 2006 United States Government
3 as represented by the Administrator of the
4 National Aeronautics and Space Administration.
7 package gov
.nasa
.worldwind
.layers
;
9 import gov
.nasa
.worldwind
.*;
10 import gov
.nasa
.worldwind
.geom
.*;
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
)
28 String msg
= WorldWind
.retrieveErrMsg("nullValue.TracksIsNull");
29 WorldWind
.logger().log(java
.util
.logging
.Level
.FINE
, msg
);
30 throw new IllegalArgumentException(msg
);
34 this.boundingSector
= Sector
.boundingSector(this.iterator());
37 private TrackPointIteratorImpl
iterator()
39 return new TrackPointIteratorImpl(this.tracks
);
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
);
123 protected void doPick(DrawContext dc
, java
.awt
.Point pickPoint
)
125 this.draw(dc
, pickPoint
);
128 protected void doRender(DrawContext dc
)
133 private void draw(DrawContext dc
, java
.awt
.Point pickPoint
)
135 TrackPointIterator trackPoints
= this.iterator();
136 if (!trackPoints
.hasNext())
139 if (dc
.getVisibleSector() == null)
142 SectorGeometryList geos
= dc
.getSurfaceGeometry();
146 if (!dc
.getVisibleSector().intersects(this.boundingSector
))
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);
156 this.iconRenderer
.render(dc
, this.icon
, iconPoint
);
161 public String
toString()
163 return gov
.nasa
.worldwind
.WorldWind
.retrieveErrMsg("layers.TrackLayer.Name");