/* Copyright (C) 2001, 2006 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved. */ package gov.nasa.worldwind.layers; import gov.nasa.worldwind.geom.Vec4; import gov.nasa.worldwind.render.*; import gov.nasa.worldwind.tracks.*; import gov.nasa.worldwind.util.Logging; /** * @author tag * @version $Id: TrackMarkerLayer.java 4513 2008-02-16 05:50:01Z tgaskins $ */ public class TrackMarkerLayer extends TrackLayer { private TrackRenderer trackRenderer = new TrackRenderer(); private IconRenderer iconRenderer = new IconRenderer(); private UserFacingIcon icon; public TrackMarkerLayer(java.util.Collection<Track> tracks) { super(tracks); this.trackRenderer.setClient(this); } public void dispose() { this.trackRenderer.dispose(); } public double getMarkerPixels() { return this.trackRenderer.getMarkerPixels(); } public void setMarkerPixels(double markerPixels) { this.trackRenderer.setMarkerPixels(markerPixels); } public double getMinMarkerSize() { return this.trackRenderer.getMinMarkerSize(); } public void setMinMarkerSize(double minMarkerSize) { this.trackRenderer.setMinMarkerSize(minMarkerSize); } public void setElevation(double markerElevation) { super.setElevation(markerElevation); this.trackRenderer.setElevation(markerElevation); } public void setOverrideElevation(boolean overrideElevation) { super.setOverrideElevation(overrideElevation); this.trackRenderer.setOverrideElevation(overrideElevation); } public Material getMaterial() { return this.trackRenderer.getMaterial(); } public void setMaterial(Material material) { this.trackRenderer.setMaterial(material); } public String getIconFilePath() { return this.icon != null ? this.icon.getPath() : null; } public void setIconFilePath(String iconFilePath) { this.icon = iconFilePath != null ? new UserFacingIcon(iconFilePath, null) : null; } public void setMarkerShape(String shapeName) { this.trackRenderer.setShapeType(shapeName); } @Override public void setLowerLimit(int lowerLimit) { super.setLowerLimit(lowerLimit); this.trackRenderer.setLowerLimit(this.getLowerLimit()); } @Override public void setUpperLimit(int upperLimit) { super.setUpperLimit(upperLimit); this.trackRenderer.setUpperLimit(this.getUpperLimit()); } protected void doDraw(DrawContext dc, TrackPointIterator trackPoints, java.awt.Point pickPoint) { Vec4 iconPoint; if (dc.isPickingMode()) iconPoint = this.trackRenderer.pick(dc, trackPoints, pickPoint, this); else iconPoint = this.trackRenderer.render(dc, trackPoints); if (this.icon != null && iconPoint != null) { if (dc.isPickingMode()) this.iconRenderer.pick(dc, this.icon, iconPoint, pickPoint, this); else this.iconRenderer.render(dc, this.icon, iconPoint); } } @Override public String toString() { return Logging.getMessage("layers.TrackMarkerLayer.Name"); } }