package builtin.graphics;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Polygon;
import java.util.ArrayList;
import javax.swing.JFrame;
/**
* A MintWindow is a frame or desktop window designed for running graphical
* applications such as 3D graphing software or PC/Mac/Linux videogames.
* @author Oliver Chu
*/
public class MintWindow extends JFrame {
private ArrayList<Shape> shapes;
public MintWindow() {
shapes = new ArrayList<Shape>();
}
@Override
public void paint(Graphics g) {
Image dbImg = createImage(getWidth(), getHeight());
Graphics dbg = dbImg.getGraphics();
draw(dbg);
g.drawImage(dbImg, 0, 0, this);
}
private void draw(Graphics g) {
for (Shape s : shapes) {
drawShape(g, s);
}
repaint();
}
public void addShape(Shape s) {
shapes.add(s);
}
public void clearShapes() {
shapes = new ArrayList<Shape>();
}
private void drawShape(Graphics g, Shape s) {
ArrayList<Integer> dim = s.getDimensions();
switch (s.getType()) {
case Shape.RECTANGLE:
g.drawRect(dim.get(0), dim.get(1), dim.get(2), dim.get(3));
break;
case Shape.OVAL:
g.drawOval(dim.get(0), dim.get(1), dim.get(2), dim.get(3));
break;
case Shape.LINE:
g.drawLine(dim.get(0), dim.get(1), dim.get(2), dim.get(3));
break;
case Shape.ARC:
g.drawArc(dim.get(0), dim.get(1), dim.get(2), dim.get(3),
dim.get(4), dim.get(5));
break;
case Shape.POLYGON:
Polygon p = new Polygon();
for (int i = 0; i + 1 < dim.size(); i += 2) {
p.addPoint(dim.get(i), dim.get(i + 1));
}
g.drawPolygon(p);
break;
case Shape.COLOR:
int red = dim.get(0);
int green = dim.get(1);
int blue = dim.get(2);
g.setColor(new Color(red, green, blue));
// We only need to set the color once.
//s.destroy();
break;
default:
break;
}
}
}