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 }