/*
    GifImages\GifImages.java - Show how to paint a GIF onto a canvas
*/

import java.awt.*;
import java.applet.*;

public class GifImages extends Applet {
    public void init() {
        codeBase = getCodeBase();
        imageMoire = getImage(codeBase, "Moire.gif");
        imageGlobe = getImage(codeBase, "SpinningGlobe.gif");
        imageSaucer = getImage(codeBase, "Saucer.gif");

        setLayout(new BorderLayout(20, 20));
        setBackground(java.awt.Color.gray);
        setSize(DX,DY);

        westCanvas.setBackground(Color.cyan);
        westCanvas.setBounds(0, 0, 100, 100);
        add(westCanvas, "West");

        northCanvas.setBackground(Color.red);
        northCanvas.setBounds(0, 0, 100, 90);
        add(northCanvas, "North");

        eastCanvas.setBackground(Color.blue);
        eastCanvas.setBounds(0, 0, 100, 100);
        add(eastCanvas, "East");
    }

    public void paint(Graphics g) {
        dx = imageGlobe.getWidth(this);
        dy = imageGlobe.getHeight(this);
        DX = getSize().width;
        DY = getSize().height;
        g.drawImage(imageGlobe, (DX-dx)/2, (DY-dy)/2, this);
        g.drawRect((DX-dx)/2, (DY-dy)/2, dx, dy);
    }

    class westCanvas extends Canvas {
        public void paint(Graphics g) {
            g.drawString("West Canvas", 20, 20);
            g.drawImage(imageMoire, 30, 30, 45, 45, this); 
        }
    }

    class northCanvas extends Canvas {
        public void paint(Graphics g) {
            int DX = getSize().width;
            g.drawString("North Canvas  -  Resize me in AppletViewer...", 20, 20);
            g.drawImage(imageGlobe, (DX-45)/2, 30, 45, 45, this);
        }
    }

    class eastCanvas extends Canvas {
        public void paint(Graphics g) {
            g.drawString("East Canvas", 20, 20);
            g.drawImage(imageSaucer, 30, 30, 45, 45, this);
            g.drawImage(imageMoire, 30, 80, 45, 45, this);
        }
    }

    Canvas westCanvas  = new westCanvas();
    Canvas northCanvas = new northCanvas();
    Canvas eastCanvas  = new eastCanvas();

    private java.net.URL codeBase;
    private Image imageMoire, imageGlobe, imageSaucer;
    private int dx, dy;
    private int DX = 300, DY = 250;
}
