package ip.gui;


import java.awt.*;
import java.util.Enumeration;
import java.util.Vector;


public class Polygons {
    private Vector v = new Vector();
    private Enumeration e = null;

    public void addElement(Polygon p) {
        v.addElement(p);
    }

    public void removeElementAt(int i) {
        v.removeElementAt(i);
    }

    public Polygon elementAt(int i) {
        return (Polygon) v.elementAt(i);
    }

    public boolean hasMore() {
        return e.hasMoreElements();
    }

    public Polygon next() {
        if (e == null) e = getEnumeration();
        if (!hasMore()) return null;
        return (Polygon) e.nextElement();
    }

    private Enumeration getEnumeration() {
        return v.elements();
    }

    public int size() {
        return v.size();
    }

    public void drawPolys(Graphics g) {
        g.setColor(Color.green);
        Polygon p;
        for (int i = 0; i < v.size(); i++) {
            p = (Polygon) v.elementAt(i);
            g.drawPolyline(p.xpoints, p.ypoints, p.npoints);
        }
    }

    public void listPolys() {
        for (int i = 0; i < v.size(); i++)
            printPoly((Polygon) v.elementAt(i));
    }

    private void printPoly(Polygon p) {
        System.out.println("i x y");
        int n = p.npoints;
        for (int i = 0; i < n - 1; i++)
            System.out.println(i + " " + p.xpoints[i] + " " + p.ypoints[i]);
        System.out.println(n - 1 + " " + p.xpoints[n - 1] + " " + p.ypoints[n - 1]);
    }

    public static void drawPoly(Graphics g, Polygon p) {
        g.setColor(Color.green);
        g.drawPolyline(p.xpoints, p.ypoints, p.npoints);
    }

    public void polyStats() {
        int numberOfPolys = size();
        Polygon p;
        int n = 0;
        int maxN = 0;
        int minN = 10000;
        for (int i = 0; i < numberOfPolys; i++) {
            p = (Polygon) elementAt(i);
            n += p.npoints;
            if (p.npoints > maxN) maxN = p.npoints;
            if (p.npoints < minN) minN = p.npoints;
        }

        int avgSize = n / numberOfPolys;
        System.out.println("numberOfPolys=" + numberOfPolys);
        System.out.println("numberOfPoints=" + n);
        System.out.println("avgSize=" + avgSize);
        System.out.println("maxN=" + maxN);
        System.out.println("minN=" + minN);
    }


}