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.Stroke;
010
011 import org.openstreetmap.gui.jmapviewer.interfaces.MapRectangle;
012
013 /**
014 * @author Vincent
015 *
016 */
017 public class MapRectangleImpl implements MapRectangle {
018
019 private Coordinate topLeft;
020 private Coordinate bottomRight;
021 private Color color;
022 private Stroke stroke;
023
024 public MapRectangleImpl(Coordinate topLeft, Coordinate bottomRight) {
025 this(topLeft, bottomRight, Color.BLUE, new BasicStroke(2));
026 }
027
028 public MapRectangleImpl(Coordinate topLeft, Coordinate bottomRight, Color color, Stroke stroke) {
029 this.topLeft = topLeft;
030 this.bottomRight = bottomRight;
031 this.color = color;
032 this.stroke = stroke;
033 }
034
035 /* (non-Javadoc)
036 * @see org.openstreetmap.gui.jmapviewer.interfaces.MapRectangle#getTopLeft()
037 */
038 @Override
039 public Coordinate getTopLeft() {
040 return topLeft;
041 }
042
043 /* (non-Javadoc)
044 * @see org.openstreetmap.gui.jmapviewer.interfaces.MapRectangle#getBottomRight()
045 */
046 @Override
047 public Coordinate getBottomRight() {
048 return bottomRight;
049 }
050
051 /* (non-Javadoc)
052 * @see org.openstreetmap.gui.jmapviewer.interfaces.MapRectangle#paint(java.awt.Graphics, java.awt.Point, java.awt.Point)
053 */
054 @Override
055 public void paint(Graphics g, Point topLeft, Point bottomRight) {
056 // Prepare graphics
057 Color oldColor = g.getColor();
058 g.setColor(color);
059 Stroke oldStroke = null;
060 if (g instanceof Graphics2D) {
061 Graphics2D g2 = (Graphics2D) g;
062 oldStroke = g2.getStroke();
063 g2.setStroke(stroke);
064 }
065 // Draw
066 g.drawRect(topLeft.x, topLeft.y, bottomRight.x - topLeft.x, bottomRight.y - topLeft.y);
067 // Restore graphics
068 g.setColor(oldColor);
069 if (g instanceof Graphics2D) {
070 ((Graphics2D) g).setStroke(oldStroke);
071 }
072 }
073
074 @Override
075 public String toString() {
076 return "MapRectangle from " + topLeft + " to " + bottomRight;
077 }
078 }