001 // License: GPL. For details, see LICENSE file.
002 package org.openstreetmap.gui.jmapviewer;
003
004 import java.awt.BasicStroke;
005 import java.awt.Color;
006 import java.awt.Graphics;
007 import java.awt.Graphics2D;
008 import java.awt.Point;
009 import java.awt.Polygon;
010 import java.awt.Stroke;
011 import java.util.List;
012
013 import org.openstreetmap.gui.jmapviewer.interfaces.MapPolygon;
014
015 /**
016 * @author Vincent
017 *
018 */
019 public class MapPolygonImpl implements MapPolygon {
020
021 private List<Coordinate> points;
022 private Color color;
023 private Stroke stroke;
024
025 public MapPolygonImpl(List<Coordinate> points) {
026 this(points, Color.BLUE, new BasicStroke(2));
027 }
028
029 public MapPolygonImpl(List<Coordinate> points, Color color, Stroke stroke) {
030 this.points = points;
031 this.color = color;
032 this.stroke = stroke;
033 }
034
035 /* (non-Javadoc)
036 * @see org.openstreetmap.gui.jmapviewer.interfaces.MapPolygon#getPoints()
037 */
038 @Override
039 public List<Coordinate> getPoints() {
040 return this.points;
041 }
042
043 /* (non-Javadoc)
044 * @see org.openstreetmap.gui.jmapviewer.interfaces.MapPolygon#paint(java.awt.Graphics, java.util.List)
045 */
046 @Override
047 public void paint(Graphics g, List<Point> points) {
048 Polygon polygon = new Polygon();
049 for (Point p : points) {
050 polygon.addPoint(p.x, p.y);
051 }
052 paint(g, polygon);
053 }
054
055 /* (non-Javadoc)
056 * @see org.openstreetmap.gui.jmapviewer.interfaces.MapPolygon#paint(java.awt.Graphics, java.awt.Polygon)
057 */
058 @Override
059 public void paint(Graphics g, Polygon polygon) {
060 // Prepare graphics
061 Color oldColor = g.getColor();
062 g.setColor(color);
063 Stroke oldStroke = null;
064 if (g instanceof Graphics2D) {
065 Graphics2D g2 = (Graphics2D) g;
066 oldStroke = g2.getStroke();
067 g2.setStroke(stroke);
068 }
069 // Draw
070 g.drawPolygon(polygon);
071 // Restore graphics
072 g.setColor(oldColor);
073 if (g instanceof Graphics2D) {
074 ((Graphics2D) g).setStroke(oldStroke);
075 }
076 }
077
078 /* (non-Javadoc)
079 * @see java.lang.Object#toString()
080 */
081 @Override
082 public String toString() {
083 return "MapPolygon [points=" + points + "]";
084 }
085 }