// Polygon.java // S. Tanimoto, 1 Feb. 2000 import java.awt.*; import java.util.*; public class Polygon extends DrawnObject { final static int r = 5; // radius of dot for displaying first vertex. Vector theVertices; boolean closed; // True if a segment is to be drawn from last to first. int lineThickness; Color theColor; Polygon() { theVertices = new Vector(); closed = false; } public void addVertex(PDPoint p) { theVertices.addElement(p); } public void close() { closed = true; } public void open() { closed = false; } public void setLineThickness(int theThickness) { lineThickness = theThickness; } public void setColor(Color aColor) { theColor = aColor; } public Vector getVertices() { return theVertices; } public boolean lastVertexNotAt(int anX, int aY) { if (theVertices.isEmpty()) return true; PDPoint p = (PDPoint) theVertices.lastElement(); if ((p.getX() == anX) && (p.getY() == aY)) return false; else return true; } public void paint(Graphics g) { PDPoint lastVertex, firstVertex; Enumeration enum = theVertices.elements(); if (enum.hasMoreElements()) { lastVertex = (PDPoint) enum.nextElement(); firstVertex = lastVertex; } else return; firstVertex.paint(g); g.setColor(theColor); if (theVertices.size() == 1) { g.fillOval(((int)lastVertex.getX()) - r, ((int)lastVertex.getY()) - r, r+r, r+r); return; } for ( ; enum.hasMoreElements();) { PDPoint vertex = (PDPoint) enum.nextElement(); g.drawLine((int) lastVertex.getX(), (int) lastVertex.getY(), (int) vertex.getX(), (int) vertex.getY() ); lastVertex = vertex; lastVertex.paint(g); } if (closed) { g.drawLine((int) lastVertex.getX(), (int) lastVertex.getY(), (int) firstVertex.getX(), (int) firstVertex.getY() ); } } }