
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.util.ArrayList;

public class MultiResIconTest {

    private static BufferedImage generateImage(int x, Color c) {

        BufferedImage img = new BufferedImage(x, x, BufferedImage.TYPE_INT_RGB);
        Graphics g = img.getGraphics();
        g.setColor(c);
        g.fillRect(0, 0, x, x);
        g.setColor(Color.WHITE);
        g.fillRect(x / 3, x / 3, x / 3, x / 3);
        return img;
    }

    private static class Test extends Frame {

        private static final int W = 200;

        private static final BaseMultiResolutionImage IMG =
            new BaseMultiResolutionImage(
                new BufferedImage[]{generateImage(    W, Color.RED),
                                    generateImage(2 * W, Color.GREEN),
                                    generateImage(4 * W, Color.BLUE)});

        private static final BaseMultiResolutionImage ICON =
            new BaseMultiResolutionImage(
                new BufferedImage[]{generateImage( 16, Color.RED),
                                    generateImage( 32, Color.GREEN),
                                    generateImage( 64, Color.BLUE),
                                    generateImage(128, Color.BLACK),
                                    generateImage(256, Color.GRAY)});

        public Test() { EventQueue.invokeLater(this::CreateUI); }

        private void CreateUI() {

            setIconImage(ICON);
            addWindowListener(new WindowAdapter() {
                @Override
                public void windowClosing(WindowEvent e) { dispose(); }
            });
            setSize(W, W);
            setLocation(50, 50);
            setResizable(false);
            setVisible(true);
        }

        @Override
        public void paint(Graphics gr) { gr.drawImage(IMG, 0, 0, this); }
    }


    public static void main(String[] args) { new Test(); }
}
