KanizsaSquare.java
/* 
 * Program to paint a Red Cross in the context of the nonrepresentational 
 * Painting world, NPW 
 */

package npw;

import painter.SPainter;
import shapes.SCircle;
import shapes.SRectangle;
import shapes.SSquare;

import javax.swing.*;
import java.awt.*;

public class KanizsaSquare
{
    private void paintTheImage()
    {
        SPainter painter = new SPainter("Kanizsa Square",400,400);

        SCircle dot = new SCircle(75);
        paintBlueCircle(painter, dot);
        paintRedCircle(painter, dot);
        paintGreenCircles(painter, dot);

        SSquare square = new SSquare(200);
        paintWhiteSquare(painter, square);
    }

    private void paintGreenCircles(SPainter painter, SCircle dot)
    {
        painter.setColor(Color.green);
        painter.mlt(100);
        painter.mbk(100);
        painter.paint(dot);
        painter.mrt(100);
        painter.mfd(100);
        painter.mfd(100);
        painter.mrt(100);
        painter.paint(dot);
        painter.mlt(100);
        painter.mbk(100);
    }

    private void paintRedCircle(SPainter painter, SCircle dot)
    {
        painter.setColor(Color.red);
        painter.mbk(100);
        painter.mrt(100);
        painter.paint(dot);
        painter.mfd(100);
        painter.mlt(100);
    }

    private void paintBlueCircle(SPainter painter, SCircle dot)
    {
        painter.setColor(Color.blue);
        painter.mlt(100);
        painter.mfd(100);
        painter.paint(dot);
        painter.mrt(100);
        painter.mbk(100);
    }

    private void paintWhiteSquare(SPainter painter, SSquare square)
    {
        painter.setColor(Color.white);
        painter.paint(square);
    }

    public KanizsaSquare()
    {
        paintTheImage();
    }

    public static void main(String[] args)
    {
        SwingUtilities.invokeLater (new Runnable()
        {
            public void run()
            {
                new KanizsaSquare();
            }
        });
    }
}